( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Brand AI | Your Entire Brand. One Intelligent Platform.</title>
<!-- SEO Meta Tags -->
<meta name="description" content="Design, analyze, and grow your brand effortlessly. Create logos, websites, and marketing assets in minutes with AI-powered branding tools—all in one platform." />
<meta name="keywords" content="AI brand creator, AI branding platform, brand builder AI, create brand identity online, AI design tool, logo generator, brand insights, branding templates" />
<link rel="canonical" href="https://www.thebrand.ai/">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.thebrand.ai/">
<meta property="og:title" content="Brand AI | Your Entire Brand. One Intelligent Platform.">
<meta property="og:description"
content="Brand AI -Create, design, and scale your brand with AI. From logos to websites, templates to insights—everything your brand needs in one intelligent platform.">
<meta property="og:image" content="https://picsum.photos/seed/brandai-og/1200/630">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://www.thebrand.ai/">
<meta property="twitter:title" content="Brand AI | Your Entire Brand. One Intelligent Platform.">
<meta property="twitter:description"
content="Brand AI -Create, design, and scale your brand with AI. From logos to websites, templates to insights—everything your brand needs in one intelligent platform.">
<meta property="twitter:image" content="https://picsum.photos/seed/brandai-og/1200/630">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Brand AI?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Brand AI is an intelligent branding platform that helps you design, analyze, and grow your brand with AI-powered tools."
}
},
{
"@type": "Question",
"name": "Who is Brand AI for?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Brand AI is built for startups, SMEs, governments, and creative teams that need professional branding, templates, and insights without agency-level costs."
}
},
{
"@type": "Question",
"name": "What can I create with Brand AI?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can create logos, websites, presentations, marketing templates, brand guidelines, and other on-brand assets in one place."
}
},
{
"@type": "Question",
"name": "Is there a free version of Brand AI?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, you can start creating for free and upgrade to paid plans as you grow."
}
}
]
}
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-ENHHZKM53C"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-ENHHZKM53C');
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Brand AI",
"url": "https://www.thebrand.ai/",
"applicationCategory": "DesignApplication",
"operatingSystem": "Web",
"description": "Brand AI is an intelligent platform to design, analyze, and grow your brand with AI-powered tools, templates, and insights.",
"image": "https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png",
"publisher": {
"@type": "Organization",
"name": "Brand AI",
"url": "https://www.thebrand.ai/"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.thebrand.ai/brandpay/choose"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Brand AI",
"url": "https://www.thebrand.ai/",
"logo": "https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png",
"sameAs": [
"https://facebook.com/TheBrandApp",
"https://twitter.com/thebrandhq",
"https://www.instagram.com/thebrandapp",
"https://www.linkedin.com/company/the-brand-app"
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Build, Design, and Manage Your Brand with Brand AI",
"description": "A step-by-step guide to using Brand AI — the all-in-one AI brand platform — to create a consistent brand identity, design on-brand content, access strategy tools, and unlock AI-powered insights.",
"totalTime": "PT15M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"supply": [
{ "@type": "HowToSupply", "name": "Brand AI account (free to start)" },
{ "@type": "HowToSupply", "name": "Your business name and brand direction" }
],
"tool": [
{ "@type": "HowToTool", "name": "Brand AI Dashboard" },
{ "@type": "HowToTool", "name": "Brand Creator" },
{ "@type": "HowToTool", "name": "Wow Editor" },
{ "@type": "HowToTool", "name": "Brand AI Resources & Tools" },
{ "@type": "HowToTool", "name": "Brand AI Insights" }
],
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Create your logo and brand identity",
"text": "Start by creating or refining your visual identity with Brand Creator. Answer a few simple questions about your business name and style to generate professional logo options, or upload an existing logo to sharpen it for web and print. Explore color combinations until it feels right, then lock your chosen identity into Brand AI so your team designs from a single source of truth.",
"url": "https://www.thebrand.ai/index.html#step-brandcreator"
},
{
"@type": "HowToStep",
"position": 2,
"name": "Set up your brand home in the Dashboard",
"text": "Sign in and build your Brand Kit — upload your logo, lock in your brand colors and fonts, and invite your team. Everything you create from this point pulls from one shared source of truth, so your brand stays consistent no matter who is designing.",
"url": "https://www.thebrand.ai/index.html#step-dashboard"
},
{
"@type": "HowToStep",
"position": 3,
"name": "Design on-brand content in the Wow Editor",
"text": "Open the Wow Editor and start creating — presentations, social media carousels, campaign visuals, or multi-page documents. Your Brand Kit flows in automatically. Use the built-in AI image generator, collaborate with teammates in real time, and leave pinned comments directly on the design.",
"url": "https://www.thebrand.ai/index.html#step-editor"
},
{
"@type": "HowToStep",
"position": 4,
"name": "Run brand and marketing strategy tools",
"text": "Head to Resources and Tools and run the calculators, diagnostics, and playbooks that match your current challenge — whether that's a brand health check, an ROI calculation, or a campaign content plan. Results are ready to paste into decks or share with leadership.",
"url": "https://www.thebrand.ai/index.html#step-tools"
},
{
"@type": "HowToStep",
"position": 5,
"name": "Unlock AI-powered brand and marketing insights",
"text": "Visit Brand AI Insights to browse curated AI prompts, strategic insight cards, and campaign ideas filtered by your industry. Copy a proven prompt, adapt it for your brand, and go from blank page to finished strategy in minutes.",
"url": "https://www.thebrand.ai/index.html#step-insights"
}
]
}
</script>
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com/">
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin="">
<link href="/index_files/css2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,400&display=swap" rel="stylesheet">
<script src="/index_files/tailwind-3.4.17.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
colors: {
'brand-cyan': '#03bef3',
'brand-midnight': '#0b0f29',
'brand-magenta': '#ff00a8',
},
},
},
}
</script>
<style>
html {
scroll-behavior: smooth;
}
#root:empty {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
font-family: 'Inter', sans-serif;
color: #4a5568;
font-size: 1.25rem;
}
#root:empty::after {
content: "Loading Brand AI...";
animation: pulse 1.5s infinite ease-in-out;
}
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
</style>
<style>
/* ============================================================
DASHBOARD STYLING SYSTEM — applied from /wowX/dashboard/home
============================================================ */
/* --- Hero badge pill (✨ sparkle row above h1) --- */
.dash-hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
background: rgba(3,190,243,0.12);
border: 1px solid rgba(3,190,243,0.35);
color: #03bef3;
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
padding: 6px 16px;
border-radius: 999px;
margin-bottom: 20px;
}
/* --- Trust badge row (🔒⚡🌍 below CTAs) --- */
.dash-trust-row {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 20px;
margin-top: 24px;
font-size: 0.82rem;
color: rgba(255,255,255,0.75);
font-weight: 500;
}
.dash-trust-row span {
display: flex;
align-items: center;
gap: 5px;
}
/* --- Stats / counter grid (4-column) --- */
.dash-stats-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24px;
margin-top: 40px;
padding: 32px;
background: rgba(3,190,243,0.06);
border: 1px solid rgba(3,190,243,0.18);
border-radius: 20px;
}
@media (min-width: 640px) { .dash-stats-grid { grid-template-columns: repeat(4, 1fr); } }
.dash-stat-item {
text-align: center;
}
.dash-stat-number {
font-size: 2rem;
font-weight: 800;
color: #03bef3;
line-height: 1.1;
}
.dash-stat-label {
font-size: 0.78rem;
color: rgba(255,255,255,0.6);
margin-top: 4px;
font-weight: 500;
letter-spacing: 0.03em;
}
/* --- Section intro label (small category badge above h2) --- */
.dash-section-label {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.1em;
color: #03bef3;
background: rgba(3,190,243,0.1);
border: 1px solid rgba(3,190,243,0.25);
padding: 4px 12px;
border-radius: 999px;
margin-bottom: 12px;
}
/* --- Gradient heading text (like "brand-ready") --- */
.dash-grad-heading {
background: linear-gradient(135deg, #03bef3 0%, #ff00a8 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* --- Card border-glow on hover --- */
.dash-card-hover {
position: relative;
transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.dash-card-hover::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
padding: 1.5px;
background: linear-gradient(135deg, #03bef3, #ff00a8);
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
}
.dash-card-hover:hover::before { opacity: 1; }
.dash-card-hover:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(3,190,243,0.15); }
/* --- Module card (nav panel style from dashboard sidebar) --- */
.dash-module-card {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 16px;
padding: 24px 28px;
transition: all 0.3s ease;
}
.dash-module-card:hover {
border-color: #03bef3;
box-shadow: 0 8px 32px rgba(3,190,243,0.12);
transform: translateY(-3px);
}
.dash-module-icon {
width: 44px; height: 44px;
border-radius: 12px;
background: rgba(3,190,243,0.1);
display: flex; align-items: center; justify-content: center;
margin-bottom: 14px;
color: #03bef3;
}
.dash-module-source-tag {
display: inline-block;
font-size: 0.68rem;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
color: rgba(3,190,243,0.8);
background: rgba(3,190,243,0.08);
padding: 2px 8px;
border-radius: 4px;
margin-bottom: 8px;
}
/* --- Testimonial avatar initials (dashboard style) --- */
.dash-avatar {
width: 40px; height: 40px;
border-radius: 50%;
background: linear-gradient(135deg, #03bef3, #0b0f29);
display: flex; align-items: center; justify-content: center;
font-size: 0.85rem;
font-weight: 800;
color: #fff;
flex-shrink: 0;
}
/* --- Dashboard nav bar top strip (✨ banner) --- */
.dash-top-strip {
background: linear-gradient(90deg, #0b0f29 0%, #03bef3 50%, #0b0f29 100%);
text-align: center;
font-size: 0.78rem;
font-weight: 600;
color: #fff;
padding: 8px 16px;
letter-spacing: 0.04em;
}
/* --- Comparison table dashboard style --- */
.dash-compare-table th {
background: #0b0f29;
color: #03bef3;
font-weight: 700;
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 14px 18px;
}
.dash-compare-table td {
padding: 13px 18px;
border-bottom: 1px solid #f0f0f0;
font-size: 0.9rem;
vertical-align: middle;
}
.dash-compare-table tr:last-child td { border-bottom: none; }
.dash-compare-table tr:nth-child(even) td { background: #f9fafb; }
.dash-compare-table .check-yes { color: #03bef3; font-weight: 700; }
.dash-compare-table .check-no { color: #d1d5db; }
/* --- ✓ Pillar check row (Why fast-growing teams section) --- */
.dash-pillar-row {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 18px 0;
border-bottom: 1px solid rgba(255,255,255,0.08);
}
.dash-pillar-row:last-child { border-bottom: none; }
.dash-pillar-check {
flex-shrink: 0;
width: 26px; height: 26px;
border-radius: 50%;
background: rgba(3,190,243,0.15);
border: 1.5px solid #03bef3;
display: flex; align-items: center; justify-content: center;
color: #03bef3;
font-size: 0.75rem;
font-weight: 800;
margin-top: 2px;
}
/* --- CTA section glass button --- */
.dash-cta-glass {
background: rgba(255,255,255,0.08);
backdrop-filter: blur(8px);
border: 1px solid rgba(255,255,255,0.2);
color: #fff;
font-weight: 700;
padding: 12px 32px;
border-radius: 10px;
font-size: 1.05rem;
cursor: pointer;
transition: background 0.25s ease;
text-decoration: none;
display: inline-block;
}
.dash-cta-glass:hover { background: rgba(255,255,255,0.18); }
/* --- Section divider glow line --- */
.dash-glow-divider {
height: 1px;
background: linear-gradient(90deg, transparent, #03bef3 50%, transparent);
opacity: 0.4;
margin: 0;
}
/* --- Floating "Join X marketers" ribbon at bottom of hero --- */
.dash-join-ribbon {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
margin-top: 32px;
font-size: 0.82rem;
color: rgba(255,255,255,0.55);
}
.dash-join-ribbon .avatar-stack {
display: flex;
}
.dash-join-ribbon .avatar-stack .mini-av {
width: 28px; height: 28px;
border-radius: 50%;
border: 2px solid #0b0f29;
background: linear-gradient(135deg, #03bef3, #ff00a8);
margin-left: -8px;
display: flex; align-items: center; justify-content: center;
font-size: 0.55rem;
font-weight: 800;
color: #fff;
}
.dash-join-ribbon .avatar-stack .mini-av:first-child { margin-left: 0; }
</style>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@19.2.0",
"react/jsx-runtime": "https://esm.sh/react@19.2.0/jsx-runtime",
"react-dom": "https://esm.sh/react-dom@19.2.0",
"react-dom/client": "https://esm.sh/react-dom@19.2.0/client",
"scheduler": "https://esm.sh/scheduler@0.23.2"
}
}
</script>
<!-- Babel for in-browser JSX transpilation -->
<script src="/index_files/babel.min.js"></script>
<style>*, ::before, ::after {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style:
}
::backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style:
}
/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */
*, ::after, ::before {
box-sizing: border-box;
border-width: 0;
border-style: solid;
border-color: #e5e7eb
}
::after, ::before {
--tw-content: ''
}
:host, html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
-moz-tab-size: 4;
tab-size: 4;
font-family: Inter, sans-serif;
font-feature-settings: normal;
font-variation-settings: normal;
-webkit-tap-highlight-color: transparent
}
body {
margin: 0;
line-height: inherit
}
hr {
height: 0;
color: inherit;
border-top-width: 1px
}
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted
}
h1, h2, h3, h4, h5, h6 {
font-size: inherit;
font-weight: inherit
}
a {
color: inherit;
text-decoration: inherit
}
b, strong {
font-weight: bolder
}
code, kbd, pre, samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-feature-settings: normal;
font-variation-settings: normal;
font-size: 1em
}
small {
font-size: 80%
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
}
sub {
bottom: -.25em
}
sup {
top: -.5em
}
table {
text-indent: 0;
border-color: inherit;
border-collapse: collapse
}
button, input, optgroup, select, textarea {
font-family: inherit;
font-feature-settings: inherit;
font-variation-settings: inherit;
font-size: 100%;
font-weight: inherit;
line-height: inherit;
letter-spacing: inherit;
color: inherit;
margin: 0;
padding: 0
}
button, select {
text-transform: none
}
button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]) {
-webkit-appearance: button;
background-color: transparent;
background-image: none
}
:-moz-focusring {
outline: auto
}
:-moz-ui-invalid {
box-shadow: none
}
progress {
vertical-align: baseline
}
::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
height: auto
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
summary {
display: list-item
}
blockquote, dd, dl, figure, h1, h2, h3, h4, h5, h6, hr, p, pre {
margin: 0
}
fieldset {
margin: 0;
padding: 0
}
legend {
padding: 0
}
menu, ol, ul {
list-style: none;
margin: 0;
padding: 0
}
dialog {
padding: 0
}
textarea {
resize: vertical
}
input::placeholder, textarea::placeholder {
opacity: 1;
color: #9ca3af
}
[role=button], button {
cursor: pointer
}
:disabled {
cursor: default
}
audio, canvas, embed, iframe, img, object, svg, video {
display: block;
vertical-align: middle
}
img, video {
max-width: 100%;
height: auto
}
[hidden]:where(:not([hidden=until-found])) {
display: none
}
.container {
width: 100%
}
@media (min-width: 640px) {
.container {
max-width: 640px
}
}
@media (min-width: 768px) {
.container {
max-width: 768px
}
}
@media (min-width: 1024px) {
.container {
max-width: 1024px
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px
}
}
@media (min-width: 1536px) {
.container {
max-width: 1536px
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0
}
.absolute {
position: absolute
}
.relative {
position: relative
}
.sticky {
position: sticky
}
.inset-0 {
inset: 0px
}
.bottom-\[-30\%\] {
bottom: -30%
}
.left-\[-30\%\] {
left: -30%
}
.right-\[-30\%\] {
right: -30%
}
.top-0 {
top: 0px
}
.top-\[-30\%\] {
top: -30%
}
.z-0 {
z-index: 0
}
.z-10 {
z-index: 10
}
.z-50 {
z-index: 50
}
.col-span-2 {
grid-column: span 2 / span 2
}
.mx-auto {
margin-left: auto;
margin-right: auto
}
.mb-10 {
margin-bottom: 2.5rem
}
.mb-12 {
margin-bottom: 3rem
}
.mb-2 {
margin-bottom: 0.5rem
}
.mb-4 {
margin-bottom: 1rem
}
.mb-6 {
margin-bottom: 1.5rem
}
.mb-8 {
margin-bottom: 2rem
}
.mt-12 {
margin-top: 3rem
}
.mt-4 {
margin-top: 1rem
}
.mt-8 {
margin-top: 2rem
}
.block {
display: block
}
.inline-block {
display: inline-block
}
.flex {
display: flex
}
.grid {
display: grid
}
.hidden {
display: none
}
.aspect-\[4\/3\] {
aspect-ratio: 4/3
}
.h-10 {
height: 2.5rem
}
.h-4\/5 {
height: 80%
}
.h-6 {
height: 1.5rem
}
.h-8 {
height: 2rem
}
.h-full {
height: 100%
}
.min-h-\[480px\] {
min-height: 480px
}
.min-h-\[520px\] {
min-height: 520px
}
.min-h-\[70vh\] {
min-height: 70vh
}
.w-10 {
width: 2.5rem
}
.w-32 {
width: 8rem
}
.w-4\/5 {
width: 80%
}
.w-6 {
width: 1.5rem
}
.w-8 {
width: 2rem
}
.w-full {
width: 100%
}
.max-w-2xl {
max-width: 42rem
}
.max-w-3xl {
max-width: 48rem
}
.scale-105 {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.transform {
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr))
}
.grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
.flex-col {
flex-direction: column
}
.flex-wrap {
flex-wrap: wrap
}
.items-center {
align-items: center
}
.justify-center {
justify-content: center
}
.justify-between {
justify-content: space-between
}
.gap-2 {
gap: 0.5rem
}
.gap-4 {
gap: 1rem
}
.gap-6 {
gap: 1.5rem
}
.gap-8 {
gap: 2rem
}
.space-x-4 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(1rem * var(--tw-space-x-reverse));
margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)))
}
.space-x-6 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(1.5rem * var(--tw-space-x-reverse));
margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))
}
.space-x-8 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(2rem * var(--tw-space-x-reverse));
margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)))
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse))
}
.overflow-hidden {
overflow: hidden
}
.truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.rounded-2xl {
border-radius: 1rem
}
.rounded-3xl {
border-radius: 1.5rem
}
.rounded-full {
border-radius: 9999px
}
.rounded-lg {
border-radius: 0.5rem
}
.border {
border-width: 1px
}
.border-t {
border-top-width: 1px
}
.border-gray-300 {
--tw-border-opacity: 1;
border-color: rgb(209 213 219 / var(--tw-border-opacity, 1))
}
.border-gray-800 {
--tw-border-opacity: 1;
border-color: rgb(31 41 55 / var(--tw-border-opacity, 1))
}
.bg-black {
--tw-bg-opacity: 1;
background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1))
}
.bg-black\/10 {
background-color: rgb(0 0 0 / 0.1)
}
.bg-brand-cyan {
--tw-bg-opacity: 1;
background-color: rgb(3 190 243 / var(--tw-bg-opacity, 1))
}
.bg-brand-midnight {
--tw-bg-opacity: 1;
background-color: rgb(11 15 41 / var(--tw-bg-opacity, 1))
}
.bg-cyan-100 {
--tw-bg-opacity: 1;
background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1))
}
.bg-gray-100 {
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))
}
.bg-gray-200 {
--tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1))
}
.bg-gray-50 {
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1))
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))
}
.bg-white\/10 {
background-color: rgb(255 255 255 / 0.1)
}
.bg-white\/80 {
background-color: rgb(255 255 255 / 0.8)
}
.bg-opacity-20 {
--tw-bg-opacity: 0.2
}
.bg-gradient-to-br {
background-image: linear-gradient(to bottom right, var(--tw-gradient-stops))
}
.bg-gradient-to-tl {
background-image: linear-gradient(to top left, var(--tw-gradient-stops))
}
.from-brand-cyan {
--tw-gradient-from: #03bef3 var(--tw-gradient-from-position);
--tw-gradient-to: rgb(3 190 243 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)
}
.to-transparent {
--tw-gradient-to: transparent var(--tw-gradient-to-position)
}
.object-cover {
object-fit: cover
}
.p-3 {
padding: 0.75rem
}
.p-5 {
padding: 1.25rem
}
.p-8 {
padding: 2rem
}
.px-4 {
padding-left: 1rem;
padding-right: 1rem
}
.px-5 {
padding-left: 1.25rem;
padding-right: 1.25rem
}
.px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem
}
.px-8 {
padding-left: 2rem;
padding-right: 2rem
}
.py-12 {
padding-top: 3rem;
padding-bottom: 3rem
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem
}
.py-20 {
padding-top: 5rem;
padding-bottom: 5rem
}
.py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem
}
.py-4 {
padding-top: 1rem;
padding-bottom: 1rem
}
.pt-8 {
padding-top: 2rem
}
.text-left {
text-align: left
}
.text-center {
text-align: center
}
.font-sans {
font-family: Inter, sans-serif
}
.text-3xl {
font-size: 1.875rem;
line-height: 2.25rem
}
.text-4xl {
font-size: 2.25rem;
line-height: 2.5rem
}
.text-5xl {
font-size: 3rem;
line-height: 1
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem
}
.text-xl {
font-size: 1.25rem;
line-height: 1.75rem
}
.font-bold {
font-weight: 700
}
.font-extrabold {
font-weight: 800
}
.font-medium {
font-weight: 500
}
.font-semibold {
font-weight: 600
}
.uppercase {
text-transform: uppercase
}
.tracking-tight {
letter-spacing: -0.025em
}
.text-brand-cyan {
--tw-text-opacity: 1;
color: rgb(3 190 243 / var(--tw-text-opacity, 1))
}
.text-brand-midnight {
--tw-text-opacity: 1;
color: rgb(11 15 41 / var(--tw-text-opacity, 1))
}
.text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity, 1))
}
.text-gray-400 {
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity, 1))
}
.text-gray-600 {
--tw-text-opacity: 1;
color: rgb(75 85 99 / var(--tw-text-opacity, 1))
}
.text-gray-700 {
--tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity, 1))
}
.text-gray-800 {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity, 1))
}
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity, 1))
}
.opacity-50 {
opacity: 0.5
}
.opacity-80 {
opacity: 0.8
}
.opacity-90 {
opacity: 0.9
}
.shadow-lg {
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.shadow-md {
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.shadow-sm {
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.blur-3xl {
--tw-blur: blur(64px);
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
}
.filter {
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
}
.backdrop-blur-sm {
--tw-backdrop-blur: blur(4px);
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)
}
.transition-all {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.transition-colors {
transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.transition-opacity {
transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.transition-transform {
transition-property: transform;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.duration-300 {
transition-duration: 300ms
}
.duration-500 {
transition-duration: 500ms
}
.ease-in-out {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1)
}
.hover\:-translate-y-1:hover {
--tw-translate-y: -0.25rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.hover\:-translate-y-2:hover {
--tw-translate-y: -0.5rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.hover\:scale-105:hover {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.hover\:scale-110:hover {
--tw-scale-x: 1.1;
--tw-scale-y: 1.1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.hover\:border-brand-cyan:hover {
--tw-border-opacity: 1;
border-color: rgb(3 190 243 / var(--tw-border-opacity, 1))
}
.hover\:bg-cyan-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(165 243 252 / var(--tw-bg-opacity, 1))
}
.hover\:bg-gray-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1))
}
.hover\:bg-gray-300:hover {
--tw-bg-opacity: 1;
background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1))
}
.hover\:bg-white\/20:hover {
background-color: rgb(255 255 255 / 0.2)
}
.hover\:text-brand-cyan:hover {
--tw-text-opacity: 1;
color: rgb(3 190 243 / var(--tw-text-opacity, 1))
}
.hover\:opacity-90:hover {
opacity: 0.9
}
.hover\:shadow-xl:hover {
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.focus\:outline-none:focus {
outline: 2px solid transparent;
outline-offset: 2px
}
.group:hover .group-hover\:-translate-y-1 {
--tw-translate-y: -0.25rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.group:hover .group-hover\:scale-105 {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.group:hover .group-hover\:scale-110 {
--tw-scale-x: 1.1;
--tw-scale-y: 1.1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
}
.group:hover .group-hover\:bg-black\/0 {
background-color: rgb(0 0 0 / 0)
}
.group:hover .group-hover\:bg-opacity-10 {
--tw-bg-opacity: 0.1
}
.group:hover .group-hover\:text-brand-cyan {
--tw-text-opacity: 1;
color: rgb(3 190 243 / var(--tw-text-opacity, 1))
}
.group:hover .group-hover\:opacity-100 {
opacity: 1
}
@media (min-width: 640px) {
.sm\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
}
@media (min-width: 768px) {
.md\:col-span-2 {
grid-column: span 2 / span 2
}
.md\:mt-0 {
margin-top: 0px
}
.md\:flex {
display: flex
}
.md\:hidden {
display: none
}
.md\:min-h-\[520px\] {
min-height: 520px
}
.md\:min-h-\[80vh\] {
min-height: 80vh
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
.md\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.md\:grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr))
}
.md\:flex-row {
flex-direction: row
}
.md\:gap-12 {
gap: 3rem
}
.md\:gap-4 {
gap: 1rem
}
.md\:gap-8 {
gap: 2rem
}
.md\:py-24 {
padding-top: 6rem;
padding-bottom: 6rem
}
.md\:py-28 {
padding-top: 7rem;
padding-bottom: 7rem
}
.md\:text-2xl {
font-size: 1.5rem;
line-height: 2rem
}
.md\:text-4xl {
font-size: 2.25rem;
line-height: 2.5rem
}
.md\:text-5xl {
font-size: 3rem;
line-height: 1
}
.md\:text-6xl {
font-size: 3.75rem;
line-height: 1
}
.md\:text-7xl {
font-size: 4.5rem;
line-height: 1
}
.md\:text-base {
font-size: 1rem;
line-height: 1.5rem
}
.md\:text-xl {
font-size: 1.25rem;
line-height: 1.75rem
}
}
@media (min-width: 1024px) {
.lg\:col-span-1 {
grid-column: span 1 / span 1
}
.lg\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.lg\:grid-cols-5 {
grid-template-columns: repeat(5, minmax(0, 1fr))
}
.lg\:text-8xl {
font-size: 6rem;
line-height: 1
}
}
@media (min-width: 1280px) {
.xl\:grid-cols-6 {
grid-template-columns: repeat(6, minmax(0, 1fr))
}
}</style>
<style>
#how-it-works {
--ink: #080c14;
--muted: #5a6070;
--border: #e8eaf0;
--surface: #f7f8fc;
--white: #ffffff;
--blue: #0057ff;
--teal: #00c7b1;
--radius: 18px;
font-family: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, "Inter", sans-serif;
background: #ffffff;
color: var(--ink);
}
#how-it-works .grad-text {
background: linear-gradient(95deg, var(--blue) 0%, var(--teal) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hiw {
padding: 80px 24px 80px;
}
@media (min-width: 768px) {
.hiw {
padding-top: 112px;
padding-bottom: 112px;
}
}
.hiw__inner {
max-width: 1160px;
margin: 0 auto;
}
.hiw__header {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px 80px;
align-items: end;
margin-bottom: 88px;
}
.hiw__label {
display: inline-flex;
align-items: center;
gap: 10px;
font-size: 12px;
font-weight: 500;
letter-spacing: .15em;
text-transform: uppercase;
color: var(--blue);
margin-bottom: 18px;
}
.hiw__label::before {
content: "";
width: 24px;
height: 2px;
background: linear-gradient(90deg, var(--blue), var(--teal));
border-radius: 2px;
flex-shrink: 0;
}
.hiw__h2 {
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
font-size: clamp(34px, 4.5vw, 56px);
font-weight: 800;
line-height: 1.08;
letter-spacing: -.025em;
}
.hiw__lede {
font-size: 17px;
line-height: 1.7;
color: var(--muted);
margin-bottom: 28px;
max-width: 440px;
}
.hiw__time-note {
display: inline-flex;
align-items: center;
gap: 8px;
font-size: 13.5px;
color: var(--muted);
background: var(--surface);
border: 1px solid var(--border);
border-radius: 100px;
padding: 7px 16px;
}
.hiw__time-note svg {
width: 15px;
height: 15px;
opacity: .65;
flex-shrink: 0;
}
.hiw__steps {
list-style: none;
display: flex;
flex-direction: column;
position: relative;
}
.hiw__steps::before {
content: "";
position: absolute;
left: 27px;
top: 56px;
bottom: 56px;
width: 2px;
background: linear-gradient(to bottom, var(--blue), var(--teal));
opacity: .15;
}
.hiw__step {
display: grid;
grid-template-columns: 56px 1fr;
gap: 0 40px;
padding-bottom: 64px;
position: relative;
opacity: 0;
transform: translateY(24px);
animation: hiw-rise-in .5s ease forwards;
}
.hiw__step:last-child {
padding-bottom: 0;
}
.hiw__step:nth-child(1) {
animation-delay: .08s;
}
.hiw__step:nth-child(2) {
animation-delay: .2s;
}
.hiw__step:nth-child(3) {
animation-delay: .32s;
}
.hiw__step:nth-child(4) {
animation-delay: .44s;
}
@keyframes hiw-rise-in {
to {
opacity: 1;
transform: none;
}
}
.hiw__counter {
width: 56px;
height: 56px;
border-radius: 50%;
background: var(--white);
border: 2px solid var(--border);
display: flex;
align-items: center;
justify-content: center;
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
font-size: 17px;
font-weight: 800;
color: var(--muted);
position: relative;
z-index: 1;
flex-shrink: 0;
transition: border-color .25s, color .25s, box-shadow .25s;
}
.hiw__step:hover .hiw__counter {
border-color: var(--blue);
color: var(--blue);
box-shadow: 0 0 0 6px rgba(0, 87, 255, .07);
}
.hiw__card {
background: var(--white);
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 36px 40px;
transition: box-shadow .25s, border-color .25s;
}
.hiw__step:hover .hiw__card {
border-color: rgba(0, 87, 255, .22);
box-shadow: 0 8px 40px rgba(0, 87, 255, .07);
}
.hiw__meta {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 14px;
flex-wrap: wrap;
}
.hiw__badge {
font-size: 11px;
font-weight: 500;
letter-spacing: .1em;
text-transform: uppercase;
color: var(--blue);
background: rgba(0, 87, 255, .07);
border-radius: 100px;
padding: 4px 12px;
}
.hiw__duration {
font-size: 12.5px;
color: var(--muted);
}
.hiw__step-h3 {
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
font-size: 22px;
font-weight: 700;
line-height: 1.25;
letter-spacing: -.02em;
margin-bottom: 12px;
}
.hiw__copy {
font-size: 15.5px;
line-height: 1.72;
color: var(--muted);
margin-bottom: 24px;
max-width: 640px;
}
.hiw__copy strong {
color: var(--ink);
font-weight: 500;
}
.hiw__outcomes {
list-style: none;
display: flex;
flex-direction: column;
gap: 9px;
margin-bottom: 28px;
}
.hiw__outcomes li {
display: flex;
align-items: flex-start;
gap: 10px;
font-size: 14px;
color: var(--ink);
line-height: 1.55;
}
.hiw__outcomes li::before {
content: "";
width: 18px;
height: 18px;
border-radius: 50%;
background-color: rgba(0, 87, 255, .08);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath d='M2 6l3 3 5-5' stroke='%230057ff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: center;
flex-shrink: 0;
margin-top: 1px;
}
.hiw__action {
display: flex;
align-items: center;
gap: 20px;
flex-wrap: wrap;
}
.hiw__cta {
display: inline-flex;
align-items: center;
gap: 7px;
font-size: 14.5px;
font-weight: 500;
color: var(--blue);
text-decoration: none;
transition: gap .2s;
}
.hiw__cta:hover {
gap: 12px;
}
.hiw__cta svg {
width: 15px;
height: 15px;
}
.hiw__cta--ghost {
color: var(--muted);
font-size: 13.5px;
font-weight: 400;
text-decoration: underline;
text-underline-offset: 3px;
}
.hiw__cta--ghost:hover {
color: var(--ink);
gap: 7px;
}
.hiw__trust {
margin-top: 80px;
padding: 32px 40px;
border-radius: var(--radius);
background: var(--surface);
border: 1px solid var(--border);
display: flex;
align-items: center;
gap: 48px;
flex-wrap: wrap;
}
.hiw__trust-stat {
display: flex;
flex-direction: column;
gap: 3px;
}
.hiw__trust-stat strong {
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
font-size: 26px;
font-weight: 800;
line-height: 1;
background: linear-gradient(90deg, var(--blue), var(--teal));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hiw__trust-stat span {
font-size: 13px;
color: var(--muted);
}
.hiw__trust-divider {
width: 1px;
height: 40px;
background: var(--border);
flex-shrink: 0;
}
.hiw__trust-cta {
margin-left: auto;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 13px 26px;
border-radius: 100px;
background: linear-gradient(90deg, var(--blue) 0%, var(--teal) 100%);
color: #fff;
font-size: 14.5px;
font-weight: 500;
font-family: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, "Inter", sans-serif;
text-decoration: none;
transition: opacity .2s, transform .2s;
white-space: nowrap;
}
.hiw__trust-cta:hover {
opacity: .88;
transform: translateY(-1px);
}
.hiw__trust-cta svg {
width: 15px;
height: 15px;
}
@media (max-width: 860px) {
.hiw__header {
grid-template-columns: 1fr;
gap: 24px;
margin-bottom: 60px;
}
.hiw__lede {
max-width: 100%;
}
}
@media (max-width: 640px) {
.hiw {
padding: 80px 20px 80px;
}
.hiw__steps::before {
left: 21px;
}
.hiw__step {
grid-template-columns: 44px 1fr;
gap: 0 18px;
padding-bottom: 44px;
}
.hiw__counter {
width: 44px;
height: 44px;
font-size: 14px;
}
.hiw__card {
padding: 24px 20px;
}
.hiw__step-h3 {
font-size: 19px;
}
.hiw__trust {
flex-direction: column;
align-items: flex-start;
gap: 20px;
padding: 28px 24px;
}
.hiw__trust-divider {
display: none;
}
.hiw__trust-cta {
margin-left: 0;
width: 100%;
justify-content: center;
}
}
</style>
<script type="text/plain" data-disabled="true">function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
import React, {useState} from 'react';
import ReactDOM from 'react-dom/client';
// --- START OF constants.tsx ---
var FEATURES_PRIMARY = [{
title: 'Bring Your Brand to Life with Brand Creator',
description: 'Quickly and effortlessly create a powerful, professional brand identity and logos that stand out and drive business growth.',
link: 'https://www.thebrand.ai/brandcreator/index',
buttonText: 'Explore Brand Creator',
imageUrl: 'https://picsum.photos/seed/branding-desk/1200/800',
bgColor: '#1E003B' // Deep Purple/Indigo
}, {
title: 'Revolutionize Your Brand with AI Insights',
description: 'Supercharge your brand with intelligent solutions, design, and big data to drive growth, engagement, and measurable success.',
link: 'https://www.thebrand.ai/insights/',
buttonText: 'Explore Insights',
imageUrl: 'https://picsum.photos/seed/ai-dashboard/1200/800',
bgColor: '#003D5B' // Dark Cyan/Blue
}, {
title: 'Build a Website Easily with Brand Sites',
description: 'Choose from over 100 amazing templates to build a stunning website that empowers your brand to stand out.',
link: 'https://www.thebrand.ai/sites/index',
buttonText: 'Explore Brand Sites',
imageUrl: 'https://picsum.photos/seed/web-design/1200/800',
bgColor: '#004C4C' // Dark Teal
}];
var FEATURES_SECONDARY = [{
title: 'Meet the Visual Suite',
description: 'Your entire workflow in one place. From bespoke designs and insightful blogs to tailored strategies—all powered by AI.',
link: 'https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit',
buttonText: 'Explore Visual Suite',
imageUrl: 'https://picsum.photos/seed/creative-workspace/1200/800',
bgColor: '#3D004F',
// Dark Magenta/Purple
size: 'large'
}, {
title: 'Present with impact',
description: 'Reimagine presentations with cinematic visuals, smart collaboration, and AI-powered tools.',
link: 'https://www.thebrand.ai/i/designs',
buttonText: 'Try Presentations',
imageUrl: 'https://picsum.photos/seed/presentation-stage/1200/800',
bgColor: '#005F58',
// Deep Teal/Green
size: 'large'
}];
var FEATURES_TERTIARY = [{
title: 'Define your Brand Identity',
description: 'A central hub to build, manage, and evolve your unique brand identity as you scale.',
link: 'https://www.thebrand.ai/i/account/build_brand',
buttonText: 'Build My Brand',
imageUrl: 'https://picsum.photos/seed/brand-guide/800/600',
bgColor: '#1A237E' // Dark Indigo
}, {
title: 'End-to-end platform for large organizations',
description: 'Scale brand consistency with enterprise-grade tools, security, and support for large organizations.',
link: '#',
buttonText: 'Explore Enterprise',
imageUrl: 'https://picsum.photos/seed/corporate-dash/800/600',
bgColor: '#00263E' // Very Dark Blue
}, {
title: 'Unlock Growth with Insight Journeys',
description: "Explore expert-led journeys to transform your startup's growth, overcome challenges, and achieve success.",
link: 'https://www.thebrand.ai/insights/dashboard?feature=browsejourneys',
buttonText: 'Discover Your Path',
imageUrl: 'https://picsum.photos/seed/growth-path/800/600',
bgColor: '#01579B' // Light Blue
}];
var CostIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-10 w-10",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 10v-1m-5.293-6.293l-.707.707M17.293 7.707l.707-.707M5.707 16.293l.707.707M16.586 17H19a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2.414"
}));
var TimeIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-10 w-10",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
}));
var ToolsIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-10 w-10",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a2 2 0 110-4h1a1 1 0 001-1V7a1 1 0 011-1h3a1 1 0 001-1V4z"
}));
var PROBLEM_CARDS = [{
icon: /*#__PURE__*/React.createElement(CostIcon, null),
title: 'Agency-Level Budgets',
description: 'SMEs and governments need top-tier strategy but lack the budget for expensive agencies.'
}, {
icon: /*#__PURE__*/React.createElement(TimeIcon, null),
title: 'Months of Guesswork',
description: 'Founders and marketers waste precious time guessing their next move instead of acting on clear insights.'
}, {
icon: /*#__PURE__*/React.createElement(ToolsIcon, null),
title: 'Juggling a Dozen Tools',
description: 'Creatives juggle multiple, disconnected tools to create a single campaign, with none of them talking to each other.'
}];
var SmeIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-8 w-8",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0v-4m0 4h5m0 0v-4m0 4h5m-5-4v-5h5v5h-5z"
}));
var GovernmentIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-8 w-8",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M12 21l-2-2m2 2l2-2m2 2l2-2M5 15l-2-2m2 2l2-2m2 2l2-2m2 2l2-2M5 21v-6a2 2 0 012-2h10a2 2 0 012 2v6"
}), " ", /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M3 21h18M5 10l7-7 7 7"
}));
var StartupIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-8 w-8",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M13 10V3L4 14h7v7l9-11h-7z"
}));
var MarketerIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-8 w-8",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"
}), /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"
}));
var CorporateIcon = () => /*#__PURE__*/React.createElement("svg", {
xmlns: "http://www.w3.org/2000/svg",
className: "h-8 w-8",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor",
strokeWidth: 2
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0v-4m0 4h5m0 0v-4m0 4h5m-5-4V5h5v7h-5z"
}));
var TARGET_MARKETS = [{
icon: /*#__PURE__*/React.createElement(SmeIcon, null),
name: 'SMEs'
}, {
icon: /*#__PURE__*/React.createElement(GovernmentIcon, null),
name: 'Governments'
}, {
icon: /*#__PURE__*/React.createElement(StartupIcon, null),
name: 'Startups'
}, {
icon: /*#__PURE__*/React.createElement(MarketerIcon, null),
name: 'Marketers'
}, {
icon: /*#__PURE__*/React.createElement(CorporateIcon, null),
name: 'Corporations'
}];
var FacebookIcon = () => /*#__PURE__*/React.createElement("svg", {
className: "w-6 h-6",
fill: "currentColor",
viewBox: "0 0 24 24",
"aria-hidden": "true"
}, /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
d: "M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z",
clipRule: "evenodd"
}));
var TwitterIcon = () => /*#__PURE__*/React.createElement("svg", {
className: "w-6 h-6",
fill: "currentColor",
viewBox: "0 0 24 24",
"aria-hidden": "true"
}, /*#__PURE__*/React.createElement("path", {
d: "M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.71v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"
}));
var InstagramIcon = () => /*#__PURE__*/React.createElement("svg", {
className: "w-6 h-6",
fill: "currentColor",
viewBox: "0 0 24 24",
"aria-hidden": "true"
}, /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
d: "M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.024.06 1.378.06 3.808s-.012 2.784-.06 3.808c-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.024.048-1.378.06-3.808.06s-2.784-.012-3.808-.06c-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.048-1.024-.06-1.378-.06-3.808s.012-2.784.06-3.808c.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 016.08 2.525c.636-.247 1.363-.416 2.427-.465C9.53 2.013 9.884 2 12.315 2zM12 7.044c-2.583 0-4.666 2.083-4.666 4.666s2.083 4.666 4.666 4.666 4.666-2.083 4.666-4.666S14.583 7.044 12 7.044zm0 7.666c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zm4.917-7.916a1.146 1.146 0 100-2.292 1.146 1.146 0 000 2.292z",
clipRule: "evenodd"
}));
var LinkedInIcon = () => /*#__PURE__*/React.createElement("svg", {
className: "w-6 h-6",
fill: "currentColor",
viewBox: "0 0 24 24",
"aria-hidden": "true"
}, /*#__PURE__*/React.createElement("path", {
d: "M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"
}));
var TEMPLATE_CATEGORIES = [{
category: 'Social Media',
templates: [{
title: "Facebook Post",
url: "https://www.thebrand.ai/i/social-media/facebook-post"
}, {
title: "Instagram Post",
url: "https://www.thebrand.ai/i/social-media/instagram-posts"
}, {
title: "Instagram Story",
url: "https://www.thebrand.ai/i/social-media/instagram-story"
}, {
title: "LinkedIn Post",
url: "https://www.thebrand.ai/i/social-media/linkedin-post"
}, {
title: "Twitter Post",
url: "https://www.thebrand.ai/i/social-media/twitter"
}, {
title: "Pinterest Pin",
url: "https://www.thebrand.ai/i/social-media/pinterest-pin-graphic-templates"
}, {
title: "IGTV Cover",
url: "https://www.thebrand.ai/i/social-media/igtv-cover"
}, {
title: "Highlight Cover",
url: "https://www.thebrand.ai/i/social-media/instagram-highlight-cover"
}, {
title: "YouTube Graphics",
url: "https://www.thebrand.ai/i/social-media/youtube-graphic-templates"
}, {
title: "Twitch Graphics",
url: "https://www.thebrand.ai/i/social-media/online-streaming"
}]
}, {
category: 'Invites & Cards',
templates: [{
title: "Business Card",
url: "https://www.thebrand.ai/i/invites-and-cards/business-card-85x55mm"
}, {
title: "US Business Card",
url: "https://www.thebrand.ai/i/invites-and-cards/business-card-us"
}, {
title: "Greeting Card",
url: "https://www.thebrand.ai/i/invites-and-cards/card"
}, {
title: "Invitation",
url: "https://www.thebrand.ai/i/invites-and-cards/invitation-13.9x10.7cm"
}]
}, {
category: 'Documents',
templates: [{
title: "Presentation 16:9",
url: "https://www.thebrand.ai/i/documents/presentation-16-9"
}, {
title: "Resume",
url: "https://www.thebrand.ai/i/documents/resume"
}, {
title: "Letterhead A4",
url: "https://www.thebrand.ai/i/documents/letterhead-a4"
}, {
title: "Proposal A4",
url: "https://www.thebrand.ai/i/documents/proposal-a4"
}, {
title: "Flyer A4",
url: "https://www.thebrand.ai/i/documents/flyer-a4"
}, {
title: "Newsletter",
url: "https://www.thebrand.ai/i/documents/newsletter"
}, {
title: "Invoice A4",
url: "https://www.thebrand.ai/i/documents/invoice-a4"
}, {
title: "Report A4",
url: "https://www.thebrand.ai/i/documents/report-a4"
}, {
title: "Certificate",
url: "https://www.thebrand.ai/i/documents/certificate"
}, {
title: "Menu A4",
url: "https://www.thebrand.ai/i/documents/menu-a4"
}, {
title: "Checklist",
url: "https://www.thebrand.ai/i/documents/checklist"
}, {
title: "Schedule",
url: "https://www.thebrand.ai/i/documents/schedule"
}, {
title: "Workbook",
url: "https://www.thebrand.ai/i/documents/workbook"
}, {
title: "eBook",
url: "https://www.thebrand.ai/i/documents/ebook"
}, {
title: "Whitepaper",
url: "https://www.thebrand.ai/i/documents/whitepaper"
}]
}, {
category: 'Advertising',
templates: [{
title: "Poster",
url: "https://www.thebrand.ai/i/advertising/poster-a3"
}, {
title: "Banner",
url: "https://www.thebrand.ai/i/advertising/banner-2x6ft"
}, {
title: "Billboard",
url: "https://www.thebrand.ai/i/advertising/billboard"
}, {
title: "Flyer",
url: "https://www.thebrand.ai/i/advertising/flyer-us"
}, {
title: "Yard Sign",
url: "https://www.thebrand.ai/i/advertising/yard-sign"
}, {
title: "Roll-up Banner",
url: "https://www.thebrand.ai/i/advertising/roll-up-banner"
}, {
title: "Brochure",
url: "https://www.thebrand.ai/i/advertising/brochure"
}]
}, {
category: 'Covers',
templates: [{
title: "Book Cover",
url: "https://www.thebrand.ai/i/covers/book-cover"
}, {
title: "Magazine Cover",
url: "https://www.thebrand.ai/i/covers/magazine-cover"
}, {
title: "Report Cover",
url: "https://www.thebrand.ai/i/covers/report-cover"
}, {
title: "Planner Cover",
url: "https://www.thebrand.ai/i/covers/planner-cover"
}, {
title: "eBook Cover",
url: "https://www.thebrand.ai/i/covers/ebook-cover"
}]
}];
// --- END OF constants.tsx ---
// --- START OF components/Logo.tsx ---
var Logo = _ref => {
var {
className,
theme = 'light'
} = _ref;
var theColor = theme === 'dark' ? '#9CA3AF' : '#808080';
var brandColor = theme === 'dark' ? '#FFFFFF' : '#333333';
return /*#__PURE__*/React.createElement("svg", {
width: "110",
height: "30",
viewBox: "0 0 110 30",
className: className,
xmlns: "http://www.w3.org/2000/svg",
"aria-label": "The Brand Logo"
}, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("g", {
transform: "translate(0, -2) rotate(-5, 15, 15)"
}, /*#__PURE__*/React.createElement("path", {
d: "M0,3.993C0,1.788,1.788,0,3.993,0h22.013C28.212,0,30,1.788,30,3.993v22.013 c0,2.205-1.788,3.993-3.993,3.993H3.993C1.788,30,0,28.212,0,26.007V3.993z",
fill: "#29B6F6"
}), /*#__PURE__*/React.createElement("text", {
x: "15",
y: "21",
textAnchor: "middle",
fontSize: "18",
fontWeight: "bold",
fill: "white",
style: {
fontFamily: 'inherit'
}
}, "B")), /*#__PURE__*/React.createElement("text", {
x: "40",
y: "12",
fontSize: "9",
fill: theColor,
fontWeight: "600",
style: {
fontFamily: 'inherit'
}
}, "THE"), /*#__PURE__*/React.createElement("text", {
x: "40",
y: "27",
fontSize: "16",
fill: brandColor,
fontWeight: "bold",
style: {
fontFamily: 'inherit'
}
}, "Brand")));
};
// --- END OF components/Logo.tsx ---
// --- START OF components/Header.tsx ---
var Header = () => {
var [isMenuOpen, setIsMenuOpen] = useState(false);
var navLinks = [{
name: 'Brand Creator',
href: 'https://www.thebrand.ai/brandcreator/index'
}, {
name: 'Templates',
href: 'https://www.thebrand.ai/i/designs'
}, {
name: 'Insights',
href: 'https://www.thebrand.ai/insights/'
},{
name: 'Resources',
href: 'https://www.thebrand.ai/wowX/tools'
}, {
name: 'Pricing',
href: 'https://www.thebrand.ai/brandpay/choose'
},
{
name: 'Blogs',
href: 'https://www.thebrand.ai/blogs'
}
];
return /*#__PURE__*/React.createElement("header", {
className: "bg-white/80 backdrop-blur-sm sticky top-0 z-50 shadow-sm"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6 py-4"
}, /*#__PURE__*/React.createElement("div", {
className: "flex items-center justify-between"
}, /*#__PURE__*/React.createElement("div", {
className: "flex items-center space-x-8"
}, /*#__PURE__*/React.createElement("a", {
href: "/",
"aria-label": "Brand AI Homepage"
}, /*#__PURE__*/React.createElement(Logo, null)), /*#__PURE__*/React.createElement("nav", {
className: "hidden md:flex items-center space-x-6"
}, navLinks.map(link => /*#__PURE__*/React.createElement("a", {
key: link.name,
href: link.href,
className: "text-gray-600 hover:text-brand-cyan font-medium transition-colors"
}, link.name)))), /*#__PURE__*/React.createElement("div", {
className: "hidden md:flex items-center space-x-4"
}, /*#__PURE__*/React.createElement("a", {
href: "https://bit.ly/2LpQJmO",
target: "_blank",
rel: "noopener noreferrer",
className: "font-semibold text-gray-600 hover:text-brand-cyan transition-colors border border-gray-300 rounded-lg py-2 px-4 text-sm hover:border-brand-cyan"
}, "Download App"),
)), /*#__PURE__*/React.createElement("div", {
className: "md:hidden"
}, /*#__PURE__*/React.createElement("button", {
onClick: () => setIsMenuOpen(!isMenuOpen),
className: "text-gray-800 focus:outline-none",
"aria-label": "Toggle menu"
}, /*#__PURE__*/React.createElement("svg", {
className: "w-6 h-6",
fill: "none",
stroke: "currentColor",
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg"
}, /*#__PURE__*/React.createElement("path", {
strokeLinecap: "round",
strokeLinejoin: "round",
strokeWidth: "2",
d: isMenuOpen ? "M6 18L18 6M6 6l12 12" : "M4 6h16M4 12h16M4 18h16"
}))))), isMenuOpen && /*#__PURE__*/React.createElement("div", {
className: "md:hidden mt-4"
}, /*#__PURE__*/React.createElement("nav", {
className: "flex flex-col space-y-4"
}, navLinks.map(link => /*#__PURE__*/React.createElement("a", {
key: link.name,
href: link.href,
className: "text-gray-600 hover:text-brand-cyan font-medium transition-colors"
}, link.name)), /*#__PURE__*/React.createElement("div", {
className: "flex flex-col space-y-3 pt-4 border-t"
}, /*#__PURE__*/React.createElement("a", {
href: "https://bit.ly/2LpQJmO",
target: "_blank",
rel: "noopener noreferrer",
className: "w-full text-center border border-gray-300 text-gray-600 font-bold py-2 px-4 rounded-lg hover:border-brand-cyan hover:text-brand-cyan transition-colors"
}, "Download App") )))));
};
// --- END OF components/Header.tsx ---
// Override Header to render nothing and rely on hardcoded HTML header
Header = () => null;
// --- START OF components/Footer.tsx ---
var Footer = () => {
var socialLinks = [{
name: 'Facebook',
href: 'https://facebook.com/TheBrandApp',
icon: /*#__PURE__*/React.createElement(FacebookIcon, null)
}, {
name: 'Twitter',
href: 'https://twitter.com/thebrandhq',
icon: /*#__PURE__*/React.createElement(TwitterIcon, null)
}, {
name: 'Instagram',
href: 'https://www.instagram.com/thebrandapp',
icon: /*#__PURE__*/React.createElement(InstagramIcon, null)
}, {
name: 'LinkedIn',
href: 'https://www.linkedin.com/company/the-brand-app',
icon: /*#__PURE__*/React.createElement(LinkedInIcon, null)
}];
var footerSections = [{
title: 'Features',
links: [{
name: 'Brand Creator',
href: 'https://www.thebrand.ai/brandcreator/index'
}, {
name: 'My Designs',
href: 'https://www.thebrand.ai/i/account/designs'
}, {
name: 'Templates',
href: 'https://www.thebrand.ai/i'
}, {
name: 'Brand Toolkit',
href: 'https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit'
}]
}, {
title: 'Resources',
links: [{
name: 'Insights',
href: 'https://www.thebrand.ai/insights/'
}, {
name: 'Blogs',
href: 'https://www.thebrand.ai/blogs'
}, {
name: 'Brand Journeys',
href: 'https://www.thebrand.ai/insights/dashboard?feature=browsejourneys'
}, {
name: 'Sites',
href: 'https://www.thebrand.ai/sites/index'
}]
}, {
title: 'Account',
links: [{
name: 'My Brand Identity',
href: 'https://www.thebrand.ai/i/account/build_brand'
}, {
name: 'Update Brand Details',
href: '#'
}, {
name: 'Onboarding',
href: 'https://www.thebrand.ai/insights/auth-onboard'
}]
}, {
title: 'Company',
links: [{
name: 'About Us',
href: '#'
}, {
name: 'Contact Us',
href: 'https://www.thebrand.ai/i/contact'
}, {
name: 'Careers',
href: '#'
}]
}];
return /*#__PURE__*/React.createElement("footer", {
className: "bg-brand-midnight text-white"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6 py-12"
}, /*#__PURE__*/React.createElement("div", {
className: "grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-8"
}, /*#__PURE__*/React.createElement("div", {
className: "col-span-2 lg:col-span-1"
}, /*#__PURE__*/React.createElement("a", {
href: "/",
"aria-label": "Brand AI Homepage"
}, /*#__PURE__*/React.createElement(Logo, {
theme: "dark"
})), /*#__PURE__*/React.createElement("p", {
className: "mt-4 text-gray-400"
}, "Your vision, amplified.")), footerSections.map(section => /*#__PURE__*/React.createElement("div", {
key: section.title
}, /*#__PURE__*/React.createElement("h3", {
className: "font-bold uppercase text-gray-400"
}, section.title), /*#__PURE__*/React.createElement("ul", {
className: "mt-4 space-y-2"
}, section.links.map(link => /*#__PURE__*/React.createElement("li", {
key: link.name
}, /*#__PURE__*/React.createElement("a", {
href: link.href,
className: "text-gray-300 hover:text-brand-cyan transition-colors"
}, link.name))))))), /*#__PURE__*/React.createElement("div", {
className: "mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center"
}, /*#__PURE__*/React.createElement("p", {
className: "text-gray-400"
}, "\xA9 ", new Date().getFullYear(), " Brand AI. All rights reserved."), /*#__PURE__*/React.createElement("div", {
className: "flex space-x-4 mt-4 md:mt-0"
}, socialLinks.map(social => /*#__PURE__*/React.createElement("a", {
key: social.name,
href: social.href,
className: "text-gray-400 hover:text-brand-cyan transition-colors",
"aria-label": social.name
}, /*#__PURE__*/React.createElement("span", {
className: "sr-only"
}, social.name), social.icon))))));
};
// --- END OF components/Footer.tsx ---
// --- START OF components/FeatureCard.tsx ---
var FeatureCard = _ref2 => {
var {
title,
description,
link,
buttonText,
imageUrl,
bgColor,
size = 'normal'
} = _ref2;
var sizeClasses = {
normal: 'min-h-[480px] md:min-h-[520px]',
large: 'min-h-[520px] md:col-span-2 lg:col-span-1' // Special classes can be added here
};
return /*#__PURE__*/React.createElement("div", {
className: "relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 ".concat(sizeClasses[size]),
style: {
backgroundColor: bgColor
}
}, /*#__PURE__*/React.createElement("div", {
className: "z-10 relative"
}, /*#__PURE__*/React.createElement("h3", {
className: "text-3xl md:text-4xl font-bold mb-4"
}, title), description && /*#__PURE__*/React.createElement("p", {
className: "text-lg opacity-90 mb-6"
}, description), /*#__PURE__*/React.createElement("a", {
href: link,
className: "bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block"
}, buttonText)), /*#__PURE__*/React.createElement("div", {
className: "absolute inset-0 z-0"
}, /*#__PURE__*/React.createElement("img", {
src: imageUrl,
alt: title,
className: "w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out",
loading: "lazy",
decoding: "async"
}), /*#__PURE__*/React.createElement("div", {
className: "absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"
})));
};
// --- END OF components/FeatureCard.tsx ---
// --- START OF components/TemplateCard.tsx ---
var TemplateCard = _ref3 => {
var {
title,
url
} = _ref3;
var imageSeed = title.replace(/\s+/g, '-').toLowerCase();
return /*#__PURE__*/React.createElement("a", {
href: url,
className: "block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1"
}, /*#__PURE__*/React.createElement("div", {
className: "relative aspect-[4/3] overflow-hidden"
}, /*#__PURE__*/React.createElement("img", {
src: "https://picsum.photos/seed/".concat(imageSeed, "/400/300"),
alt: title,
className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
loading: "lazy",
decoding: "async"
}), /*#__PURE__*/React.createElement("div", {
className: "absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"
})), /*#__PURE__*/React.createElement("div", {
className: "p-3"
}, /*#__PURE__*/React.createElement("h4", {
className: "text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300"
}, title)));
};
// --- END OF components/TemplateCard.tsx ---
// --- START OF components/InteractiveTemplates.tsx ---
var InteractiveTemplates = () => {
var initialCache = window.__TEMPLATE_CATEGORIES_CACHE || [];
var [categories, setCategories] = useState(initialCache);
var hasSocialInit = initialCache.some(function (c) { return c.category === 'Social Media'; });
var [activeTab, setActiveTab] = useState(hasSocialInit ? 'Social Media' : (initialCache[0] && initialCache[0].category) || 'Social Media');
var [isLoading, setIsLoading] = useState(initialCache.length === 0);
React.useEffect(function () {
if (initialCache.length) { setIsLoading(false); return; }
fetch('categories.json').then(function (res) {
return res.json();
}).then(function (data) {
var mapped = (Array.isArray(data) ? data : []).map(function (cat) {
return {
category: cat.label,
templates: (Array.isArray(cat.children) ? cat.children : []).map(function (child) {
return { title: child.label, url: child.url };
})
};
}).filter(function (c) { return c.templates && c.templates.length; });
var desiredOrder = ['Social Media','Invites & Cards','Documents','Advertising','Covers','More'];
var ordered = mapped.slice().sort(function(a,b){
var ai = desiredOrder.indexOf(a.category);
var bi = desiredOrder.indexOf(b.category);
if (ai === -1 && bi === -1) return 0;
if (ai === -1) return 1;
if (bi === -1) return -1;
return ai - bi;
});
setCategories(ordered);
var hasSocial = mapped.some(function (c) { return c.category === 'Social Media'; });
setActiveTab(hasSocial ? 'Social Media' : (mapped[0] && mapped[0].category) || '');
window.__TEMPLATE_CATEGORIES_CACHE = ordered;
setIsLoading(false);
}).catch(function () {
// If fetch fails, do nothing; categories remain empty
setIsLoading(false);
});
}, []);
var activeCategory = categories.find(function (cat) { return cat.category === activeTab; });
return /*#__PURE__*/React.createElement("div", { className: "container mx-auto px-6" },
/*#__PURE__*/React.createElement("div", { className: "text-center mb-12" },
/*#__PURE__*/React.createElement("h2", { className: "text-4xl md:text-5xl font-bold mb-4" }, "Templates for absolutely anything"),
/*#__PURE__*/React.createElement("p", { className: "text-lg md:text-xl text-gray-600 max-w-2xl mx-auto" }, "Jumpstart your next project with thousands of professional templates for any occasion."),
/*#__PURE__*/React.createElement("a", { href: "https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home", className: "mt-8 inline-block bg-brand-cyan text-white font-bold py-3 px-8 rounded-lg text-lg hover:opacity-90 transition-opacity" }, "Create Your Brand Now")
),
/*#__PURE__*/React.createElement("div", { className: "flex flex-wrap justify-center gap-2 md:gap-4 mb-10" },
categories.map(function (cat) {
return /*#__PURE__*/React.createElement("button", {
key: cat.category,
onClick: function () { return setActiveTab(cat.category); },
className: "py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base ".concat(activeTab === cat.category ? 'bg-brand-cyan text-white shadow-lg transform scale-105' : 'bg-gray-200 text-gray-700 hover:bg-gray-300')
}, cat.category);
})
),
/*#__PURE__*/React.createElement("div", { key: activeTab, className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-6 md:gap-8" },
isLoading ? Array.from({length:12}).map(function(_,i){
return /*#__PURE__*/React.createElement("div", { key:i, className:"rounded-lg bg-gray-200 h-40 animate-pulse"});
}) : (activeCategory ? activeCategory.templates.map(function (template) {
return /*#__PURE__*/React.createElement(TemplateCard, { key: template.url, title: template.title, url: template.url });
}) : null)
)
);
};
// --- END OF components/InteractiveTemplates.tsx ---
// --- START OF App.tsx ---
var App = () => {
return /*#__PURE__*/React.createElement("div", {
className: "bg-white text-gray-800 font-sans"
}, /*#__PURE__*/React.createElement(Header, null), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement("section", {
className: "relative text-white overflow-hidden bg-brand-midnight"
}, /*#__PURE__*/React.createElement("div", {
"aria-hidden": "true",
className: "absolute inset-0 z-0 opacity-50"
}, /*#__PURE__*/React.createElement("div", {
className: "absolute top-[-30%] left-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-br from-brand-cyan to-transparent filter blur-3xl"
}), /*#__PURE__*/React.createElement("div", {
className: "absolute bottom-[-30%] right-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-tl from-brand-cyan to-transparent filter blur-3xl"
})), /*#__PURE__*/React.createElement("div", {
className: "relative z-10 flex flex-col items-center justify-center min-h-[70vh] md:min-h-[80vh] px-4 text-center"
}, /*#__PURE__*/React.createElement("h1", {
className: "text-5xl md:text-7xl lg:text-8xl font-extrabold mb-4 tracking-tight"
}, "Your Entire Brand. One Intelligent Platform."), /*#__PURE__*/React.createElement("p", {
className: "text-lg md:text-2xl max-w-3xl mb-8"
}, "Imagine the creative firepower of a design agency, the strategic insight of a consultant, and the brilliance of a top-tier marketing team\u2014all at your fingertips. That's Brand AI."), /*#__PURE__*/React.createElement("div", {
className: "flex flex-wrap justify-center gap-4"
}, /*#__PURE__*/React.createElement("a", {
href: "https://www.thebrand.ai/brandcreator/index",
className: "bg-white text-brand-midnight font-bold py-3 px-8 rounded-lg text-lg hover:bg-gray-200 transition-all duration-300 transform hover:scale-105"
}, "Start creating for free"), /*#__PURE__*/React.createElement("a", {
href: "https://www.thebrand.ai/wowX/tools",
className: "bg-white/10 backdrop-blur-sm text-white font-bold py-3 px-8 rounded-lg text-lg hover:bg-white/20 transition-all duration-300 transform hover:scale-105"
}, "Browse Free Resources")))), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-28 bg-gray-50"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6 text-center"
}, /*#__PURE__*/React.createElement("h2", {
className: "text-4xl md:text-5xl font-bold mb-4"
}, "The old way is broken."), /*#__PURE__*/React.createElement("p", {
className: "text-lg md:text-xl text-gray-600 max-w-3xl mx-auto mb-12"
}, "Did you know 90% of businesses struggle to stand out? They spend months and thousands on solutions that don\u2019t deliver."), /*#__PURE__*/React.createElement("div", {
className: "grid grid-cols-1 md:grid-cols-3 gap-8 text-left"
}, PROBLEM_CARDS.map((card, index) => /*#__PURE__*/React.createElement("div", {
key: index,
className: "bg-white p-8 rounded-2xl shadow-md hover:shadow-xl hover:-translate-y-2 transition-all duration-300"
}, /*#__PURE__*/React.createElement("div", {
className: "text-brand-cyan mb-4"
}, card.icon), /*#__PURE__*/React.createElement("h3", {
className: "text-xl font-bold mb-2"
}, card.title), /*#__PURE__*/React.createElement("p", {
className: "text-gray-600"
}, card.description)))))), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-28"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6"
}, /*#__PURE__*/React.createElement("h2", {
className: "text-4xl md:text-5xl font-bold text-center mb-12"
}, "An entire toolkit, powered by AI."), /*#__PURE__*/React.createElement("div", {
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"
}, FEATURES_PRIMARY.map((feature, index) => /*#__PURE__*/React.createElement(FeatureCard, _extends({
key: index
}, feature)))))), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-24 bg-brand-midnight text-white"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6 text-center"
}, /*#__PURE__*/React.createElement("h2", {
className: "text-5xl md:text-6xl font-extrabold mb-4 tracking-tight"
}, "34,000+ users and growing."), /*#__PURE__*/React.createElement("p", {
className: "text-lg md:text-xl opacity-80 max-w-3xl mx-auto"
}, "Trusted by governments, SMEs, and startups worldwide. All achieved through organic growth fueled by user trust and referrals."))), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-28 bg-gray-50"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6"
}, /*#__PURE__*/React.createElement("h2", {
className: "text-4xl md:text-5xl font-bold text-center mb-12"
}, "All the tools. All in one place."), /*#__PURE__*/React.createElement("div", {
className: "grid grid-cols-1 md:grid-cols-2 gap-8"
}, FEATURES_SECONDARY.map((feature, index) => /*#__PURE__*/React.createElement(FeatureCard, _extends({
key: index
}, feature)))))), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-28 bg-gray-50"
}, /*#__PURE__*/React.createElement(InteractiveTemplates, null)), /*#__PURE__*/React.createElement("section", {
className: "py-20 md:py-28"
}, /*#__PURE__*/React.createElement("div", {
className: "container mx-auto px-6"
}, /*#__PURE__*/React.createElement("h2", {
className: "text-4xl md:text-5xl font-bold text-center mb-12"
}, "Your brand's entire ecosystem, connected."), /*#__PURE__*/React.createElement("div", {
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"
}, FEATURES_TERTIARY.map((feature, index) => /*#__PURE__*/React.createElement(FeatureCard, _extends({
key: index
}, feature))))))), /*#__PURE__*/React.createElement(Footer, null));
};
// --- END OF App.tsx ---
// --- START OF index.tsx ---
// React mount disabled to retain static HTML content within #root.
// --- END OF index.tsx ---
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwiUmVhY3RET00iLCJGRUFUVVJFU19QUklNQVJZIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImxpbmsiLCJidXR0b25UZXh0IiwiaW1hZ2VVcmwiLCJiZ0NvbG9yIiwiRkVBVFVSRVNfU0VDT05EQVJZIiwic2l6ZSIsIkZFQVRVUkVTX1RFUlRJQVJZIiwiQ29zdEljb24iLCJjcmVhdGVFbGVtZW50IiwieG1sbnMiLCJjbGFzc05hbWUiLCJmaWxsIiwidmlld0JveCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwiZCIsIlRpbWVJY29uIiwiVG9vbHNJY29uIiwiUFJPQkxFTV9DQVJEUyIsImljb24iLCJTbWVJY29uIiwiR292ZXJubWVudEljb24iLCJTdGFydHVwSWNvbiIsIk1hcmtldGVySWNvbiIsIkNvcnBvcmF0ZUljb24iLCJUQVJHRVRfTUFSS0VUUyIsIm5hbWUiLCJGYWNlYm9va0ljb24iLCJmaWxsUnVsZSIsImNsaXBSdWxlIiwiVHdpdHRlckljb24iLCJJbnN0YWdyYW1JY29uIiwiTGlua2VkSW5JY29uIiwiVEVNUExBVEVfQ0FURUdPUklFUyIsImNhdGVnb3J5IiwidGVtcGxhdGVzIiwidXJsIiwiTG9nbyIsIl9yZWYiLCJ0aGVtZSIsInRoZUNvbG9yIiwiYnJhbmRDb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwidHJhbnNmb3JtIiwieCIsInkiLCJ0ZXh0QW5jaG9yIiwiZm9udFNpemUiLCJmb250V2VpZ2h0Iiwic3R5bGUiLCJmb250RmFtaWx5IiwiSGVhZGVyIiwiaXNNZW51T3BlbiIsInNldElzTWVudU9wZW4iLCJuYXZMaW5rcyIsImhyZWYiLCJtYXAiLCJrZXkiLCJ0YXJnZXQiLCJyZWwiLCJvbkNsaWNrIiwiRm9vdGVyIiwic29jaWFsTGlua3MiLCJmb290ZXJTZWN0aW9ucyIsImxpbmtzIiwic2VjdGlvbiIsIkRhdGUiLCJnZXRGdWxsWWVhciIsInNvY2lhbCIsIkZlYXR1cmVDYXJkIiwiX3JlZjIiLCJzaXplQ2xhc3NlcyIsIm5vcm1hbCIsImxhcmdlIiwiY29uY2F0IiwiYmFja2dyb3VuZENvbG9yIiwic3JjIiwiYWx0IiwibG9hZGluZyIsImRlY29kaW5nIiwiVGVtcGxhdGVDYXJkIiwiX3JlZjMiLCJpbWFnZVNlZWQiLCJyZXBsYWNlIiwidG9Mb3dlckNhc2UiLCJJbnRlcmFjdGl2ZVRlbXBsYXRlcyIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsImFjdGl2ZUNhdGVnb3J5IiwiZmluZCIsImNhdCIsInRlbXBsYXRlIiwiQXBwIiwiY2FyZCIsImluZGV4IiwiZmVhdHVyZSIsIl9leHRlbmRzIiwibWFya2V0Iiwicm9vdEVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiRXJyb3IiLCJyb290IiwiY3JlYXRlUm9vdCIsInJlbmRlciIsIlN0cmljdE1vZGUiXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0Il0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuICAgICAgaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuXG4gICAgICAvLyAtLS0gU1RBUlQgT0YgY29uc3RhbnRzLnRzeCAtLS1cbiAgICAgIGNvbnN0IEZFQVRVUkVTX1BSSU1BUlkgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ0JyaW5nIFlvdXIgQnJhbmQgdG8gTGlmZSB3aXRoIEJyYW5kIENyZWF0b3InLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUXVpY2tseSBhbmQgZWZmb3J0bGVzc2x5IGNyZWF0ZSBhIHBvd2VyZnVsLCBwcm9mZXNzaW9uYWwgYnJhbmQgaWRlbnRpdHkgYW5kIGxvZ29zIHRoYXQgc3RhbmQgb3V0IGFuZCBkcml2ZSBidXNpbmVzcyBncm93dGguJyxcbiAgICAgICAgICBsaW5rOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvYnJhbmRjcmVhdG9yL2luZGV4JyxcbiAgICAgICAgICBidXR0b25UZXh0OiAnRXhwbG9yZSBCcmFuZCBDcmVhdG9yJyxcbiAgICAgICAgICBpbWFnZVVybDogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy9zZWVkL2Rlc2lnbi1hc3NldHMvODAwLzYwMCcsXG4gICAgICAgICAgYmdDb2xvcjogJyMxRTAwM0InLCAvLyBEZWVwIFB1cnBsZS9JbmRpZ29cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnUmV2b2x1dGlvbml6ZSBZb3VyIEJyYW5kIHdpdGggQUkgSW5zaWdodHMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU3VwZXJjaGFyZ2UgeW91ciBicmFuZCB3aXRoIGludGVsbGlnZW50IHNvbHV0aW9ucywgZGVzaWduLCBhbmQgYmlnIGRhdGEgdG8gZHJpdmUgZ3Jvd3RoLCBlbmdhZ2VtZW50LCBhbmQgbWVhc3VyYWJsZSBzdWNjZXNzLicsXG4gICAgICAgICAgbGluazogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2luc2lnaHRzLycsXG4gICAgICAgICAgYnV0dG9uVGV4dDogJ0V4cGxvcmUgSW5zaWdodHMnLFxuICAgICAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zL3NlZWQvZGF0YS12aXovODAwLzYwMCcsXG4gICAgICAgICAgYmdDb2xvcjogJyMwMDNENUInLCAvLyBEYXJrIEN5YW4vQmx1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdCdWlsZCBhIFdlYnNpdGUgRWFzaWx5IHdpdGggQnJhbmQgU2l0ZXMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQ2hvb3NlIGZyb20gb3ZlciAxMDAgYW1hemluZyB0ZW1wbGF0ZXMgdG8gYnVpbGQgYSBzdHVubmluZyB3ZWJzaXRlIHRoYXQgZW1wb3dlcnMgeW91ciBicmFuZCB0byBzdGFuZCBvdXQuJyxcbiAgICAgICAgICBsaW5rOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvc2l0ZXMvaW5kZXgnLFxuICAgICAgICAgIGJ1dHRvblRleHQ6ICdFeHBsb3JlIEJyYW5kIFNpdGVzJyxcbiAgICAgICAgICBpbWFnZVVybDogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy9zZWVkL3dlYi1kZXNpZ24vODAwLzYwMCcsXG4gICAgICAgICAgYmdDb2xvcjogJyMwMDRDNEMnLCAvLyBEYXJrIFRlYWxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IEZFQVRVUkVTX1NFQ09OREFSWSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnTWVldCB0aGUgVmlzdWFsIFN1aXRlJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1lvdXIgZW50aXJlIHdvcmtmbG93IGluIG9uZSBwbGFjZS4gRnJvbSBiZXNwb2tlIGRlc2lnbnMgYW5kIGluc2lnaHRmdWwgYmxvZ3MgdG8gdGFpbG9yZWQgc3RyYXRlZ2llc+KAlGFsbCBwb3dlcmVkIGJ5IEFJLicsXG4gICAgICAgICAgbGluazogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2luc2lnaHRzL2Rhc2hib2FyZD9mZWF0dXJlPWJyYW5kdG9vbGtpdCcsXG4gICAgICAgICAgYnV0dG9uVGV4dDogJ0V4cGxvcmUgVmlzdWFsIFN1aXRlJyxcbiAgICAgICAgICBpbWFnZVVybDogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy9zZWVkL2JyYW5kLXN1aXRlLzEyMDAvODAwJyxcbiAgICAgICAgICBiZ0NvbG9yOiAnIzNEMDA0RicsIC8vIERhcmsgTWFnZW50YS9QdXJwbGVcbiAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdQcmVzZW50IHdpdGggaW1wYWN0JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JlaW1hZ2luZSBwcmVzZW50YXRpb25zIHdpdGggY2luZW1hdGljIHZpc3VhbHMsIHNtYXJ0IGNvbGxhYm9yYXRpb24sIGFuZCBBSS1wb3dlcmVkIHRvb2xzLicsXG4gICAgICAgICAgbGluazogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZGVzaWducycsXG4gICAgICAgICAgYnV0dG9uVGV4dDogJ1RyeSBQcmVzZW50YXRpb25zJyxcbiAgICAgICAgICBpbWFnZVVybDogJ2h0dHBzOi8vcGljc3VtLnBob3Rvcy9zZWVkL2ltcGFjdC1wcmVzLzEyMDAvODAwJyxcbiAgICAgICAgICBiZ0NvbG9yOiAnIzAwNUY1OCcsIC8vIERlZXAgVGVhbC9HcmVlblxuICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBGRUFUVVJFU19URVJUSUFSWSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnRGVmaW5lIHlvdXIgQnJhbmQgSWRlbnRpdHknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQSBjZW50cmFsIGh1YiB0byBidWlsZCwgbWFuYWdlLCBhbmQgZXZvbHZlIHlvdXIgdW5pcXVlIGJyYW5kIGlkZW50aXR5IGFzIHlvdSBzY2FsZS4nLFxuICAgICAgICAgIGxpbms6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FjY291bnQvYnVpbGRfYnJhbmQnLFxuICAgICAgICAgIGJ1dHRvblRleHQ6ICdCdWlsZCBNeSBCcmFuZCcsXG4gICAgICAgICAgaW1hZ2VVcmw6ICdodHRwczovL3BpY3N1bS5waG90b3Mvc2VlZC9icmFuZC1ndWlkZS84MDAvNjAwJyxcbiAgICAgICAgICBiZ0NvbG9yOiAnIzFBMjM3RScsIC8vIERhcmsgSW5kaWdvXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ0VuZC10by1lbmQgcGxhdGZvcm0gZm9yIGxhcmdlIG9yZ2FuaXphdGlvbnMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2NhbGUgYnJhbmQgY29uc2lzdGVuY3kgd2l0aCBlbnRlcnByaXNlLWdyYWRlIHRvb2xzLCBzZWN1cml0eSwgYW5kIHN1cHBvcnQgZm9yIGxhcmdlIG9yZ2FuaXphdGlvbnMuJyxcbiAgICAgICAgICBsaW5rOiAnIycsXG4gICAgICAgICAgYnV0dG9uVGV4dDogJ0V4cGxvcmUgRW50ZXJwcmlzZScsXG4gICAgICAgICAgaW1hZ2VVcmw6ICdodHRwczovL3BpY3N1bS5waG90b3Mvc2VlZC9jb3Jwb3JhdGUtZGFzaC84MDAvNjAwJyxcbiAgICAgICAgICBiZ0NvbG9yOiAnIzAwMjYzRScsIC8vIFZlcnkgRGFyayBCbHVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ1VubG9jayBHcm93dGggd2l0aCBJbnNpZ2h0IEpvdXJuZXlzJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFeHBsb3JlIGV4cGVydC1sZWQgam91cm5leXMgdG8gdHJhbnNmb3JtIHlvdXIgc3RhcnR1cCdzIGdyb3d0aCwgb3ZlcmNvbWUgY2hhbGxlbmdlcywgYW5kIGFjaGlldmUgc3VjY2Vzcy5cIixcbiAgICAgICAgICBsaW5rOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvZGFzaGJvYXJkP2ZlYXR1cmU9YnJvd3Nlam91cm5leXMnLFxuICAgICAgICAgIGJ1dHRvblRleHQ6ICdEaXNjb3ZlciBZb3VyIFBhdGgnLFxuICAgICAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zL3NlZWQvZ3Jvd3RoLXBhdGgvODAwLzYwMCcsXG4gICAgICAgICAgYmdDb2xvcjogJyMwMTU3OUInLCAvLyBMaWdodCBCbHVlXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBDb3N0SWNvbiA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3NOYW1lPVwiaC0xMCB3LTEwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9ezJ9PlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBkPVwiTTEyIDhjLTEuNjU3IDAtMyAuODk1LTMgMnMxLjM0MyAyIDMgMiAzIC44OTUgMyAyLTEuMzQzIDItMyAybTAtOGMxLjExIDAgMi4wOC40MDIgMi41OTkgMU0xMiA4VjdtMCAxMHYtMW0tNS4yOTMtNi4yOTNsLS43MDcuNzA3TTE3LjI5MyA3LjcwN2wuNzA3LS43MDdNNS43MDcgMTYuMjkzbC43MDcuNzA3TTE2LjU4NiAxN0gxOWEyIDIgMCAwMDItMlY5YTIgMiAwIDAwLTItMkg1YTIgMiAwIDAwLTIgMnY2YTIgMiAwIDAwMiAyaDIuNDE0XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBUaW1lSWNvbiA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3NOYW1lPVwiaC0xMCB3LTEwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9ezJ9PlxuICAgICAgICAgIDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBkPVwiTTEyIDh2NGwzIDNtNi0zYTkgOSAwIDExLTE4IDAgOSA5IDAgMDExOCAwelwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKTtcblxuICAgICAgY29uc3QgVG9vbHNJY29uID0gKCkgPT4gKFxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzc05hbWU9XCJoLTEwIHctMTBcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD17Mn0+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTEgNGEyIDIgMCAxMTQgMHYxYTEgMSAwIDAwMSAxaDNhMSAxIDAgMDExIDF2M2ExIDEgMCAwMS0xIDFoLTFhMiAyIDAgMTAwIDRoMWExIDEgMCAwMTEgMXYzYTEgMSAwIDAxLTEgMWgtM2ExIDEgMCAwMS0xLTF2LTFhMiAyIDAgMTAtNCAwdjFhMSAxIDAgMDEtMSAxSDdhMSAxIDAgMDEtMS0xdi0zYTEgMSAwIDAwLTEtMUg0YTIgMiAwIDExMC00aDFhMSAxIDAgMDAxLTFWN2ExIDEgMCAwMTEtMWgzYTEgMSAwIDAwMS0xVjR6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBQUk9CTEVNX0NBUkRTID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWNvbjogPENvc3RJY29uIC8+LFxuICAgICAgICAgIHRpdGxlOiAnQWdlbmN5LUxldmVsIEJ1ZGdldHMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU01FcyBhbmQgZ292ZXJubWVudHMgbmVlZCB0b3AtdGllciBzdHJhdGVneSBidXQgbGFjayB0aGUgYnVkZ2V0IGZvciBleHBlbnNpdmUgYWdlbmNpZXMuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWNvbjogPFRpbWVJY29uIC8+LFxuICAgICAgICAgIHRpdGxlOiAnTW9udGhzIG9mIEd1ZXNzd29yaycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdGb3VuZGVycyBhbmQgbWFya2V0ZXJzIHdhc3RlIHByZWNpb3VzIHRpbWUgZ3Vlc3NpbmcgdGhlaXIgbmV4dCBtb3ZlIGluc3RlYWQgb2YgYWN0aW5nIG9uIGNsZWFyIGluc2lnaHRzLidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGljb246IDxUb29sc0ljb24gLz4sXG4gICAgICAgICAgdGl0bGU6ICdKdWdnbGluZyBhIERvemVuIFRvb2xzJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NyZWF0aXZlcyBqdWdnbGUgbXVsdGlwbGUsIGRpc2Nvbm5lY3RlZCB0b29scyB0byBjcmVhdGUgYSBzaW5nbGUgY2FtcGFpZ24sIHdpdGggbm9uZSBvZiB0aGVtIHRhbGtpbmcgdG8gZWFjaCBvdGhlci4nXG4gICAgICAgIH1cbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IFNtZUljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzTmFtZT1cImgtOCB3LThcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD17Mn0+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTkgMjFWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTZtMTQgMGgybS0yIDBoLTVtLTkgMEgzbTIgMHYtNG0wIDRoNW0wIDB2LTRtMCA0aDVtLTUtNHYtNWg1djVoLTV6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuICAgICAgY29uc3QgR292ZXJubWVudEljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzTmFtZT1cImgtOCB3LThcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD17Mn0+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTIgMjFsLTItMm0yIDJsMi0ybTIgMmwyLTJNNSAxNWwtMi0ybTIgMmwyLTJtMiAybDItMm0yIDJsMi0yTTUgMjF2LTZhMiAyIDAgMDEyLTJoMTBhMiAyIDAgMDEyIDJ2NlwiIC8+IDxwYXRoIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiBkPVwiTTMgMjFoMThNNSAxMGw3LTcgNyA3XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuICAgICAgY29uc3QgU3RhcnR1cEljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzTmFtZT1cImgtOCB3LThcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD17Mn0+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTMgMTBWM0w0IDE0aDd2N2w5LTExaC03elwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKTtcbiAgICAgIGNvbnN0IE1hcmtldGVySWNvbiA9ICgpID0+IChcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgY2xhc3NOYW1lPVwiaC04IHctOFwiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPXsyfT5cbiAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgZD1cIk0xMSAzLjA1NUE5LjAwMSA5LjAwMSAwIDEwMjAuOTQ1IDEzSDExVjMuMDU1elwiIC8+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMjAuNDg4IDlIMTVWMy41MTJBOS4wMjUgOS4wMjUgMCAwMTIwLjQ4OCA5elwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgKTtcbiAgICAgIGNvbnN0IENvcnBvcmF0ZUljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzTmFtZT1cImgtOCB3LThcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD17Mn0+XG4gICAgICAgICAgPHBhdGggc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiIGQ9XCJNMTkgMjFWNWEyIDIgMCAwMC0yLTJIN2EyIDIgMCAwMC0yIDJ2MTZtMTQgMGgybS0yIDBoLTVtLTkgMEgzbTIgMHYtNG0wIDRoNW0wIDB2LTRtMCA0aDVtLTUtNFY1aDV2N2gtNXpcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IFRBUkdFVF9NQVJLRVRTID0gW1xuICAgICAgICB7IGljb246IDxTbWVJY29uIC8+LCBuYW1lOiAnU01FcycgfSxcbiAgICAgICAgeyBpY29uOiA8R292ZXJubWVudEljb24gLz4sIG5hbWU6ICdHb3Zlcm5tZW50cycgfSxcbiAgICAgICAgeyBpY29uOiA8U3RhcnR1cEljb24gLz4sIG5hbWU6ICdTdGFydHVwcycgfSxcbiAgICAgICAgeyBpY29uOiA8TWFya2V0ZXJJY29uIC8+LCBuYW1lOiAnTWFya2V0ZXJzJyB9LFxuICAgICAgICB7IGljb246IDxDb3Jwb3JhdGVJY29uIC8+LCBuYW1lOiAnQ29ycG9yYXRpb25zJyB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgRmFjZWJvb2tJY29uID0gKCkgPT4gKFxuICAgICAgICA8c3ZnIGNsYXNzTmFtZT1cInctNiBoLTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxwYXRoIGZpbGxSdWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjIgMTJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMFMyIDYuNDc3IDIgMTJjMCA0Ljk5MSAzLjY1NyA5LjEyOCA4LjQzOCA5Ljg3OHYtNi45ODdoLTIuNTRWMTJoMi41NFY5Ljc5N2MwLTIuNTA2IDEuNDkyLTMuODkgMy43NzctMy44OSAxLjA5NCAwIDIuMjM4LjE5NSAyLjIzOC4xOTV2Mi40NmgtMS4yNmMtMS4yNDMgMC0xLjYzLjc3MS0xLjYzIDEuNTYyVjEyaDIuNzczbC0uNDQzIDIuODloLTIuMzN2Ni45ODhDMTguMzQzIDIxLjEyOCAyMiAxNi45OTEgMjIgMTJ6XCIgY2xpcFJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBUd2l0dGVySWNvbiA9ICgpID0+IChcbiAgICAgICAgPHN2ZyBjbGFzc05hbWU9XCJ3LTYgaC02XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTguMjkgMjAuMjUxYzcuNTQ3IDAgMTEuNjc1LTYuMjUzIDExLjY3NS0xMS42NzUgMC0uMTc4IDAtLjM1NS0uMDEyLS41M0E4LjM0OCA4LjM0OCAwIDAwMjIgNS45MmE4LjE5IDguMTkgMCAwMS0yLjM1Ny42NDYgNC4xMTggNC4xMTggMCAwMDEuODA0LTIuMjcgOC4yMjQgOC4yMjQgMCAwMS0yLjYwNS45OTYgNC4xMDcgNC4xMDcgMCAwMC02Ljk5MyAzLjc0MyAxMS42NSAxMS42NSAwIDAxLTguNDU3LTQuMjg3IDQuMTA2IDQuMTA2IDAgMDAxLjI3IDUuNDc3QTQuMDcyIDQuMDcyIDAgMDEyLjggOS43MXYuMDUyYTQuMTA1IDQuMTA1IDAgMDAzLjI5MiA0LjAyMiA0LjA5NSA0LjA5NSAwIDAxLTEuODUzLjA3IDQuMTA4IDQuMTA4IDAgMDAzLjgzNCAyLjg1QTguMjMzIDguMjMzIDAgMDEyIDE4LjQwN2ExMS42MTYgMTEuNjE2IDAgMDA2LjI5IDEuODRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IEluc3RhZ3JhbUljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy02IGgtNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZmlsbFJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMi4zMTUgMmMyLjQzIDAgMi43ODQuMDEzIDMuODA4LjA2IDEuMDY0LjA0OSAxLjc5MS4yMTggMi40MjcuNDY1YTQuOTAyIDQuOTAyIDAgMDExLjc3MiAxLjE1MyA0LjkwMiA0LjkwMiAwIDAxMS4xNTMgMS43NzJjLjI0Ny42MzYuNDE2IDEuMzYzLjQ2NSAyLjQyNy4wNDggMS4wMjQuMDYgMS4zNzguMDYgMy44MDhzLS4wMTIgMi43ODQtLjA2IDMuODA4Yy0uMDQ5IDEuMDY0LS4yMTggMS43OTEtLjQ2NSAyLjQyN2E0LjkwMiA0LjkwMiAwIDAxLTEuMTUzIDEuNzcyIDQuOTAyIDQuOTAyIDAgMDEtMS43NzIgMS4xNTNjLS42MzYuMjQ3LTEuMzYzLjQxNi0yLjQyNy40NjUtMS4wMjQuMDQ4LTEuMzc4LjA2LTMuODA4LjA2cy0yLjc4NC0uMDEyLTMuODA4LS4wNmMtMS4wNjQtLjA0OS0xLjc5MS0uMjE4LTIuNDI3LS40NjVhNC45MDIgNC45MDIgMCAwMS0xLjc3Mi0xLjE1MyA0LjkwMiA0LjkwMiAwIDAxLTEuMTUzLTEuNzcyYy0uMjQ3LS42MzYtLjQxNi0xLjM2My0uNDY1LTIuNDI3LS4wNDgtMS4wMjQtLjA2LTEuMzc4LS4wNi0zLjgwOHMuMDEyLTIuNzg0LjA2LTMuODA4Yy4wNDktMS4wNjQuMjE4LTEuNzkxLjQ2NS0yLjQyN2E0LjkwMiA0LjkwMiAwIDAxMS4xNTMtMS43NzJBNC45MDIgNC45MDIgMCAwMTYuMDggMi41MjVjLjYzNi0uMjQ3IDEuMzYzLS40MTYgMi40MjctLjQ2NUM5LjUzIDIuMDEzIDkuODg0IDIgMTIuMzE1IDJ6TTEyIDcuMDQ0Yy0yLjU4MyAwLTQuNjY2IDIuMDgzLTQuNjY2IDQuNjY2czIuMDgzIDQuNjY2IDQuNjY2IDQuNjY2IDQuNjY2LTIuMDgzIDQuNjY2LTQuNjY2UzE0LjU4MyA3LjA0NCAxMiA3LjA0NHptMCA3LjY2NmMtMS42NTcgMC0zLTEuMzQzLTMtM3MxLjM0My0zIDMtMyAzIDEuMzQzIDMgMy0xLjM0MyAzLTMgM3ptNC45MTctNy45MTZhMS4xNDYgMS4xNDYgMCAxMDAtMi4yOTIgMS4xNDYgMS4xNDYgMCAwMDAgMi4yOTJ6XCIgY2xpcFJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBMaW5rZWRJbkljb24gPSAoKSA9PiAoXG4gICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy02IGgtNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0xOSAwaC0xNGMtMi43NjEgMC01IDIuMjM5LTUgNXYxNGMwIDIuNzYxIDIuMjM5IDUgNSA1aDE0YzIuNzYyIDAgNS0yLjIzOSA1LTV2LTE0YzAtMi43NjEtMi4yMzgtNS01LTV6bS0xMSAxOWgtM3YtMTFoM3YxMXptLTEuNS0xMi4yNjhjLS45NjYgMC0xLjc1LS43OS0xLjc1LTEuNzY0cy43ODQtMS43NjQgMS43NS0xLjc2NCAxLjc1Ljc5IDEuNzUgMS43NjQtLjc4MyAxLjc2NC0xLjc1IDEuNzY0em0xMy41IDEyLjI2OGgtM3YtNS42MDRjMC0zLjM2OC00LTMuMTEzLTQgMHY1LjYwNGgtM3YtMTFoM3YxLjc2NWMxLjM5Ni0yLjU4NiA3LTIuNzc3IDcgMi40NzZ2Ni43NTl6XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBURU1QTEFURV9DQVRFR09SSUVTID0gW1xuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIGNhdGVnb3J5OiAnU29jaWFsIE1lZGlhJywgXG4gICAgICAgICAgICAgIHRlbXBsYXRlczogW1xuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJGYWNlYm9vayBQb3N0XCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL3NvY2lhbC1tZWRpYS9mYWNlYm9vay1wb3N0XCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiSW5zdGFncmFtIFBvc3RcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvc29jaWFsLW1lZGlhL2luc3RhZ3JhbS1wb3N0c1wiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkluc3RhZ3JhbSBTdG9yeVwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9zb2NpYWwtbWVkaWEvaW5zdGFncmFtLXN0b3J5XCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiTGlua2VkSW4gUG9zdFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9zb2NpYWwtbWVkaWEvbGlua2VkaW4tcG9zdFwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlR3aXR0ZXIgUG9zdFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9zb2NpYWwtbWVkaWEvdHdpdHRlclwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlBpbnRlcmVzdCBQaW5cIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvc29jaWFsLW1lZGlhL3BpbnRlcmVzdC1waW4tZ3JhcGhpYy10ZW1wbGF0ZXNcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJJR1RWIENvdmVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL3NvY2lhbC1tZWRpYS9pZ3R2LWNvdmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiSGlnaGxpZ2h0IENvdmVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL3NvY2lhbC1tZWRpYS9pbnN0YWdyYW0taGlnaGxpZ2h0LWNvdmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiWW91VHViZSBHcmFwaGljc1wiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9zb2NpYWwtbWVkaWEveW91dHViZS1ncmFwaGljLXRlbXBsYXRlc1wiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlR3aXRjaCBHcmFwaGljc1wiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9zb2NpYWwtbWVkaWEvb25saW5lLXN0cmVhbWluZ1wiIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIGNhdGVnb3J5OiAnSW52aXRlcyAmIENhcmRzJywgXG4gICAgICAgICAgICAgIHRlbXBsYXRlczogW1xuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJCdXNpbmVzcyBDYXJkXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2ludml0ZXMtYW5kLWNhcmRzL2J1c2luZXNzLWNhcmQtODV4NTVtbVwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlVTIEJ1c2luZXNzIENhcmRcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvaW52aXRlcy1hbmQtY2FyZHMvYnVzaW5lc3MtY2FyZC11c1wiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkdyZWV0aW5nIENhcmRcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvaW52aXRlcy1hbmQtY2FyZHMvY2FyZFwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkludml0YXRpb25cIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvaW52aXRlcy1hbmQtY2FyZHMvaW52aXRhdGlvbi0xMy45eDEwLjdjbVwiIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIGNhdGVnb3J5OiAnRG9jdW1lbnRzJywgXG4gICAgICAgICAgICAgIHRlbXBsYXRlczogW1xuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJQcmVzZW50YXRpb24gMTY6OVwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvcHJlc2VudGF0aW9uLTE2LTlcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJSZXN1bWVcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL3Jlc3VtZVwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkxldHRlcmhlYWQgQTRcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL2xldHRlcmhlYWQtYTRcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJQcm9wb3NhbCBBNFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvcHJvcG9zYWwtYTRcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJGbHllciBBNFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvZmx5ZXItYTRcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJOZXdzbGV0dGVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2RvY3VtZW50cy9uZXdzbGV0dGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiSW52b2ljZSBBNFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvaW52b2ljZS1hNFwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlJlcG9ydCBBNFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvcmVwb3J0LWE0XCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiQ2VydGlmaWNhdGVcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL2NlcnRpZmljYXRlXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiTWVudSBBNFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvbWVudS1hNFwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkNoZWNrbGlzdFwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvY2hlY2tsaXN0XCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiU2NoZWR1bGVcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL3NjaGVkdWxlXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiV29ya2Jvb2tcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL3dvcmtib29rXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiZUJvb2tcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZG9jdW1lbnRzL2Vib29rXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiV2hpdGVwYXBlclwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9kb2N1bWVudHMvd2hpdGVwYXBlclwiIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAgIGNhdGVnb3J5OiAnQWR2ZXJ0aXNpbmcnLCBcbiAgICAgICAgICAgICAgdGVtcGxhdGVzOiBbXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlBvc3RlclwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9hZHZlcnRpc2luZy9wb3N0ZXItYTNcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJCYW5uZXJcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvYWR2ZXJ0aXNpbmcvYmFubmVyLTJ4NmZ0XCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiQmlsbGJvYXJkXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FkdmVydGlzaW5nL2JpbGxib2FyZFwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIkZseWVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FkdmVydGlzaW5nL2ZseWVyLXVzXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiWWFyZCBTaWduXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FkdmVydGlzaW5nL3lhcmQtc2lnblwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlJvbGwtdXAgQmFubmVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FkdmVydGlzaW5nL3JvbGwtdXAtYmFubmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiQnJvY2h1cmVcIiwgdXJsOiBcImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvYWR2ZXJ0aXNpbmcvYnJvY2h1cmVcIiB9LFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IFxuICAgICAgICAgICAgICBjYXRlZ29yeTogJ0NvdmVycycsIFxuICAgICAgICAgICAgICB0ZW1wbGF0ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiQm9vayBDb3ZlclwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9jb3ZlcnMvYm9vay1jb3ZlclwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIk1hZ2F6aW5lIENvdmVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2NvdmVycy9tYWdhemluZS1jb3ZlclwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlJlcG9ydCBDb3ZlclwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9jb3ZlcnMvcmVwb3J0LWNvdmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiUGxhbm5lciBDb3ZlclwiLCB1cmw6IFwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaS9jb3ZlcnMvcGxhbm5lci1jb3ZlclwiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcImVCb29rIENvdmVyXCIsIHVybDogXCJodHRwczovL3d3dy50aGVicmFuZC5haS9pL2NvdmVycy9lYm9vay1jb3ZlclwiIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIC8vIC0tLSBFTkQgT0YgY29uc3RhbnRzLnRzeCAtLS1cblxuXG4gICAgICAvLyAtLS0gU1RBUlQgT0YgY29tcG9uZW50cy9Mb2dvLnRzeCAtLS1cbiAgICAgIGNvbnN0IExvZ28gPSAoeyBjbGFzc05hbWUsIHRoZW1lID0gJ2xpZ2h0JyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZUNvbG9yID0gdGhlbWUgPT09ICdkYXJrJyA/ICcjOUNBM0FGJyA6ICcjODA4MDgwJztcbiAgICAgICAgY29uc3QgYnJhbmRDb2xvciA9IHRoZW1lID09PSAnZGFyaycgPyAnI0ZGRkZGRicgOiAnIzMzMzMzMyc7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8c3ZnIFxuICAgICAgICAgICAgd2lkdGg9XCIxMTBcIiBcbiAgICAgICAgICAgIGhlaWdodD1cIjMwXCIgXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDExMCAzMFwiIFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaGUgQnJhbmQgTG9nb1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLCAtMikgcm90YXRlKC01LCAxNSwgMTUpXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAsMy45OTNDMCwxLjc4OCwxLjc4OCwwLDMuOTkzLDBoMjIuMDEzQzI4LjIxMiwwLDMwLDEuNzg4LDMwLDMuOTkzdjIyLjAxMyBjMCwyLjIwNS0xLjc4OCwzLjk5My0zLjk5MywzLjk5M0gzLjk5M0MxLjc4OCwzMCwwLDI4LjIxMiwwLDI2LjAwN1YzLjk5M3pcIiBmaWxsPVwiIzI5QjZGNlwiLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHg9XCIxNVwiIHk9XCIyMVwiIHRleHRBbmNob3I9XCJtaWRkbGVcIiBmb250U2l6ZT1cIjIwXCIgZm9udFdlaWdodD1cImJvbGRcIiBmaWxsPVwid2hpdGVcIiBzdHlsZT17e2ZvbnRGYW1pbHk6ICdpbmhlcml0J319PkI8L3RleHQ+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPHRleHQgeD1cIjQwXCIgeT1cIjEyXCIgZm9udFNpemU9XCI5XCIgZmlsbD17dGhlQ29sb3J9IGZvbnRXZWlnaHQ9XCI2MDBcIiBzdHlsZT17e2ZvbnRGYW1pbHk6ICdpbmhlcml0J319PlRIRTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgeD1cIjQwXCIgeT1cIjI3XCIgZm9udFNpemU9XCIxNlwiIGZpbGw9e2JyYW5kQ29sb3J9IGZvbnRXZWlnaHQ9XCJib2xkXCIgc3R5bGU9e3tmb250RmFtaWx5OiAnaW5oZXJpdCd9fT5CcmFuZDwvdGV4dD5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgICAvLyAtLS0gRU5EIE9GIGNvbXBvbmVudHMvTG9nby50c3ggLS0tXG5cblxuICAgICAgLy8gLS0tIFNUQVJUIE9GIGNvbXBvbmVudHMvSGVhZGVyLnRzeCAtLS1cbiAgICAgIGNvbnN0IEhlYWRlciA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgW2lzTWVudU9wZW4sIHNldElzTWVudU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IG5hdkxpbmtzID0gW1xuICAgICAgICAgIHsgbmFtZTogJ0JyYW5kIENyZWF0b3InLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvYnJhbmRjcmVhdG9yL2luZGV4JyB9LFxuICAgICAgICAgIHsgbmFtZTogJ1RlbXBsYXRlcycsIGhyZWY6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9pL2Rlc2lnbnMnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnSW5zaWdodHMnLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ1ByaWNpbmcnLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvYnJhbmRwYXkvY2hvb3NlJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ0Jsb2dzJywgaHJlZjogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2Jsb2dzJyB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJiZy13aGl0ZS84MCBiYWNrZHJvcC1ibHVyLXNtIHN0aWNreSB0b3AtMCB6LTUwIHNoYWRvdy1zbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbXgtYXV0byBweC02IHB5LTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtOFwiPlxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIi9cIiBhcmlhLWxhYmVsPVwiQnJhbmQgQUkgSG9tZXBhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPExvZ28gLz5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNlwiPlxuICAgICAgICAgICAgICAgICAgICB7bmF2TGlua3MubWFwKChsaW5rKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGEga2V5PXtsaW5rLm5hbWV9IGhyZWY9e2xpbmsuaHJlZn0gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWJyYW5kLWN5YW4gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtsaW5rLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiPlxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vYml0Lmx5LzJMcFFKbU9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtYnJhbmQtY3lhbiB0cmFuc2l0aW9uLWNvbG9ycyBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgcHktMiBweC00IHRleHQtc20gaG92ZXI6Ym9yZGVyLWJyYW5kLWN5YW5cIj5Eb3dubG9hZCBBcHA8L2E+XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtYnJhbmQtY3lhbiB0cmFuc2l0aW9uLWNvbG9yc1wiPkxvZyBpbjwvYT5cbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3NOYW1lPVwiYmctYnJhbmQtY3lhbiB0ZXh0LXdoaXRlIGZvbnQtYm9sZCBweS0yIHB4LTQgcm91bmRlZC1sZyBob3ZlcjpvcGFjaXR5LTkwIHRyYW5zaXRpb24tb3BhY2l0eVwiPlNpZ24gdXAgZm9yIGZyZWU8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpoaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gc2V0SXNNZW51T3BlbighaXNNZW51T3Blbil9IGNsYXNzTmFtZT1cInRleHQtZ3JheS04MDAgZm9jdXM6b3V0bGluZS1ub25lXCIgYXJpYS1sYWJlbD1cIlRvZ2dsZSBtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidy02IGgtNlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlV2lkdGg9XCIyXCIgZD17aXNNZW51T3BlbiA/IFwiTTYgMThMMTggNk02IDZsMTIgMTJcIiA6IFwiTTQgNmgxNk00IDEyaDE2TTQgMThoMTZcIn0+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAge2lzTWVudU9wZW4gJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWQ6aGlkZGVuIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgICAgICAge25hdkxpbmtzLm1hcCgobGluaykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxhIGtleT17bGluay5uYW1lfSBocmVmPXtsaW5rLmhyZWZ9IGNsYXNzTmFtZT1cInRleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1icmFuZC1jeWFuIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bGluay5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTMgcHQtNCBib3JkZXItdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2JpdC5seS8yTHBRSm1PXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGNsYXNzTmFtZT1cInctZnVsbCB0ZXh0LWNlbnRlciBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtZ3JheS02MDAgZm9udC1ib2xkIHB5LTIgcHgtNCByb3VuZGVkLWxnIGhvdmVyOmJvcmRlci1icmFuZC1jeWFuIGhvdmVyOnRleHQtYnJhbmQtY3lhbiB0cmFuc2l0aW9uLWNvbG9yc1wiPkRvd25sb2FkIEFwcDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtYnJhbmQtY3lhbiB0cmFuc2l0aW9uLWNvbG9yc1wiPkxvZyBpbjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzTmFtZT1cInctZnVsbCB0ZXh0LWNlbnRlciBiZy1icmFuZC1jeWFuIHRleHQtd2hpdGUgZm9udC1ib2xkIHB5LTIgcHgtNCByb3VuZGVkLWxnIGhvdmVyOm9wYWNpdHktOTAgdHJhbnNpdGlvbi1vcGFjaXR5XCI+U2lnbiB1cCBmb3IgZnJlZTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICApO1xuICAgICAgfTtcbiAgICAgIC8vIC0tLSBFTkQgT0YgY29tcG9uZW50cy9IZWFkZXIudHN4IC0tLVxuXG5cbiAgICAgIC8vIC0tLSBTVEFSVCBPRiBjb21wb25lbnRzL0Zvb3Rlci50c3ggLS0tXG4gICAgICBjb25zdCBGb290ZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvY2lhbExpbmtzID0gW1xuICAgICAgICAgIHsgbmFtZTogJ0ZhY2Vib29rJywgaHJlZjogJ2h0dHBzOi8vZmFjZWJvb2suY29tL1RoZUJyYW5kQXBwJywgaWNvbjogPEZhY2Vib29rSWNvbiAvPiB9LFxuICAgICAgICAgIHsgbmFtZTogJ1R3aXR0ZXInLCBocmVmOiAnaHR0cHM6Ly90d2l0dGVyLmNvbS90aGVicmFuZGhxJywgaWNvbjogPFR3aXR0ZXJJY29uIC8+IH0sXG4gICAgICAgICAgeyBuYW1lOiAnSW5zdGFncmFtJywgaHJlZjogJ2h0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vdGhlYnJhbmRhcHAnLCBpY29uOiA8SW5zdGFncmFtSWNvbiAvPiB9LFxuICAgICAgICAgIHsgbmFtZTogJ0xpbmtlZEluJywgaHJlZjogJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L3RoZS1icmFuZC1hcHAnLCBpY29uOiA8TGlua2VkSW5JY29uIC8+IH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZm9vdGVyU2VjdGlvbnMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdGZWF0dXJlcycsXG4gICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICB7IG5hbWU6ICdCcmFuZCBDcmVhdG9yJywgaHJlZjogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2JyYW5kY3JlYXRvci9pbmRleCcgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnTXkgRGVzaWducycsIGhyZWY6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FjY291bnQvZGVzaWducycgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnVGVtcGxhdGVzJywgaHJlZjogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvZGVzaWducycgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnQnJhbmQgVG9vbGtpdCcsIGhyZWY6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9pbnNpZ2h0cy9kYXNoYm9hcmQ/ZmVhdHVyZT1icmFuZHRvb2xraXQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdSZXNvdXJjZXMnLFxuICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAnSW5zaWdodHMnLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdCbG9ncycsIGhyZWY6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9ibG9ncycgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnQnJhbmQgSm91cm5leXMnLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvZGFzaGJvYXJkP2ZlYXR1cmU9YnJvd3Nlam91cm5leXMnIH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ1NpdGVzJywgaHJlZjogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL3NpdGVzL2luZGV4JyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQWNjb3VudCcsXG4gICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICB7IG5hbWU6ICdNeSBCcmFuZCBJZGVudGl0eScsIGhyZWY6ICdodHRwczovL3d3dy50aGVicmFuZC5haS9pL2FjY291bnQvYnVpbGRfYnJhbmQnIH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ1VwZGF0ZSBCcmFuZCBEZXRhaWxzJywgaHJlZjogJyMnIH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ09uYm9hcmRpbmcnLCBocmVmOiAnaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvYXV0aC1vbmJvYXJkJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29tcGFueScsXG4gICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICB7IG5hbWU6ICdBYm91dCBVcycsIGhyZWY6ICcjJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdDb250YWN0IFVzJywgaHJlZjogJ2h0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2kvY29udGFjdCcgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnQ2FyZWVycycsIGhyZWY6ICcjJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJiZy1icmFuZC1taWRuaWdodCB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBteC1hdXRvIHB4LTYgcHktMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGxnOmdyaWQtY29scy01IGdhcC04XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc3Bhbi0yIGxnOmNvbC1zcGFuLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIvXCIgYXJpYS1sYWJlbD1cIkJyYW5kIEFJIEhvbWVwYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2dvIHRoZW1lPVwiZGFya1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC00IHRleHQtZ3JheS00MDBcIj5Zb3VyIHZpc2lvbiwgYW1wbGlmaWVkLjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7Zm9vdGVyU2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c2VjdGlvbi50aXRsZX0+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmb250LWJvbGQgdXBwZXJjYXNlIHRleHQtZ3JheS00MDBcIj57c2VjdGlvbi50aXRsZX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibXQtNCBzcGFjZS15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VjdGlvbi5saW5rcy5tYXAoKGxpbmspID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2xpbmsubmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9e2xpbmsuaHJlZn0gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCBob3Zlcjp0ZXh0LWJyYW5kLWN5YW4gdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGluay5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEyIHB0LTggYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwIGZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDBcIj4mY29weTsge25ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKX0gQnJhbmQgQUkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBzcGFjZS14LTQgbXQtNCBtZDptdC0wXCI+XG4gICAgICAgICAgICAgICAgICB7c29jaWFsTGlua3MubWFwKChzb2NpYWwpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGEga2V5PXtzb2NpYWwubmFtZX0gaHJlZj17c29jaWFsLmhyZWZ9IGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC1icmFuZC1jeWFuIHRyYW5zaXRpb24tY29sb3JzXCIgYXJpYS1sYWJlbD17c29jaWFsLm5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj57c29jaWFsLm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIHtzb2NpYWwuaWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgICk7XG4gICAgICB9O1xuICAgICAgLy8gLS0tIEVORCBPRiBjb21wb25lbnRzL0Zvb3Rlci50c3ggLS0tXG5cblxuICAgICAgLy8gLS0tIFNUQVJUIE9GIGNvbXBvbmVudHMvRmVhdHVyZUNhcmQudHN4IC0tLVxuICAgICAgY29uc3QgRmVhdHVyZUNhcmQgPSAoe1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGxpbmssXG4gICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgIGltYWdlVXJsLFxuICAgICAgICBiZ0NvbG9yLFxuICAgICAgICBzaXplID0gJ25vcm1hbCdcbiAgICAgIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2l6ZUNsYXNzZXMgPSB7XG4gICAgICAgICAgbm9ybWFsOiAnbWluLWgtWzQ4MHB4XSBtZDptaW4taC1bNTIwcHhdJyxcbiAgICAgICAgICBsYXJnZTogJ21pbi1oLVs1MjBweF0gbWQ6Y29sLXNwYW4tMiBsZzpjb2wtc3Bhbi0xJywgLy8gU3BlY2lhbCBjbGFzc2VzIGNhbiBiZSBhZGRlZCBoZXJlXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2ByZWxhdGl2ZSByb3VuZGVkLTN4bCBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LWxnIGdyb3VwIHRleHQtd2hpdGUgcC04IGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCB0cmFuc2Zvcm0gaG92ZXI6LXRyYW5zbGF0ZS15LTIgJHtzaXplQ2xhc3Nlc1tzaXplXX1gfVxuICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBiZ0NvbG9yIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBtZDp0ZXh0LTR4bCBmb250LWJvbGQgbWItNFwiPnt0aXRsZX08L2gzPlxuICAgICAgICAgICAgICB7ZGVzY3JpcHRpb24gJiYgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBvcGFjaXR5LTkwIG1iLTZcIj57ZGVzY3JpcHRpb259PC9wPn1cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtsaW5rfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXdoaXRlIHRleHQtZ3JheS04MDAgZm9udC1ib2xkIHB5LTIgcHgtNiByb3VuZGVkLWxnIHRleHQtbWQgaG92ZXI6YmctZ3JheS0yMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGVhc2UtaW4tb3V0IHRyYW5zZm9ybSBncm91cC1ob3ZlcjotdHJhbnNsYXRlLXktMSBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2J1dHRvblRleHR9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHotMFwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz17aW1hZ2VVcmx9IGFsdD17dGl0bGV9IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIG9wYWNpdHktODAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZ3JvdXAtaG92ZXI6c2NhbGUtMTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dFwiIGxvYWRpbmc9XCJsYXp5XCIgZGVjb2Rpbmc9XCJhc3luY1wiIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ibGFjayBiZy1vcGFjaXR5LTIwIGdyb3VwLWhvdmVyOmJnLW9wYWNpdHktMTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwIGVhc2UtaW4tb3V0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgICAvLyAtLS0gRU5EIE9GIGNvbXBvbmVudHMvRmVhdHVyZUNhcmQudHN4IC0tLVxuXG5cbiAgICAgIC8vIC0tLSBTVEFSVCBPRiBjb21wb25lbnRzL1RlbXBsYXRlQ2FyZC50c3ggLS0tXG4gICAgICBjb25zdCBUZW1wbGF0ZUNhcmQgPSAoeyB0aXRsZSwgdXJsIH0pID0+IHtcbiAgICAgICAgY29uc3QgaW1hZ2VTZWVkID0gdGl0bGUucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17dXJsfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgZ3JvdXAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW4gYmctZ3JheS0xMDAgc2hhZG93LXNtIGhvdmVyOnNoYWRvdy14bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgdHJhbnNmb3JtIGhvdmVyOi10cmFuc2xhdGUteS0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGFzcGVjdC1bNC8zXSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyYz17YGh0dHBzOi8vcGljc3VtLnBob3Rvcy9zZWVkLyR7aW1hZ2VTZWVkfS80MDAvMzAwYH1cbiAgICAgICAgICAgICAgICBhbHQ9e3RpdGxlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIGdyb3VwLWhvdmVyOnNjYWxlLTEwNSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0zMDBcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICBkZWNvZGluZz1cImFzeW5jXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzEwIGdyb3VwLWhvdmVyOmJnLWJsYWNrLzAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+XG4gICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTgwMCB0cnVuY2F0ZSBncm91cC1ob3Zlcjp0ZXh0LWJyYW5kLWN5YW4gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwXCI+XG4gICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hPlxuICAgICAgICApO1xuICAgICAgfTtcbiAgICAgIC8vIC0tLSBFTkQgT0YgY29tcG9uZW50cy9UZW1wbGF0ZUNhcmQudHN4IC0tLVxuXG5cbiAgICAgIC8vIC0tLSBTVEFSVCBPRiBjb21wb25lbnRzL0ludGVyYWN0aXZlVGVtcGxhdGVzLnRzeCAtLS1cbiAgICAgIGNvbnN0IEludGVyYWN0aXZlVGVtcGxhdGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoVEVNUExBVEVfQ0FURUdPUklFU1swXS5jYXRlZ29yeSk7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQ2F0ZWdvcnkgPSBURU1QTEFURV9DQVRFR09SSUVTLmZpbmQoY2F0ID0+IGNhdC5jYXRlZ29yeSA9PT0gYWN0aXZlVGFiKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIG14LWF1dG8gcHgtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xMlwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBtZDp0ZXh0LTV4bCBmb250LWJvbGQgbWItNFwiPlRlbXBsYXRlcyBmb3IgYWJzb2x1dGVseSBhbnl0aGluZzwvaDI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBtZDp0ZXh0LXhsIHRleHQtZ3JheS02MDAgbWF4LXctMnhsIG14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgSnVtcHN0YXJ0IHlvdXIgbmV4dCBwcm9qZWN0IHdpdGggdGhvdXNhbmRzIG9mIHByb2Zlc3Npb25hbCB0ZW1wbGF0ZXMgZm9yIGFueSBvY2Nhc2lvbi5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LnRoZWJyYW5kLmFpL2JyYW5kY3JlYXRvci9pbmRleFwiIGNsYXNzTmFtZT1cIm10LTggaW5saW5lLWJsb2NrIGJnLWJyYW5kLWN5YW4gdGV4dC13aGl0ZSBmb250LWJvbGQgcHktMyBweC04IHJvdW5kZWQtbGcgdGV4dC1sZyBob3ZlcjpvcGFjaXR5LTkwIHRyYW5zaXRpb24tb3BhY2l0eVwiPlxuICAgICAgICAgICAgICAgICAgQ3JlYXRlIFlvdXIgQnJhbmQgTm93XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jZW50ZXIgZ2FwLTIgbWQ6Z2FwLTQgbWItMTBcIj5cbiAgICAgICAgICAgICAge1RFTVBMQVRFX0NBVEVHT1JJRVMubWFwKGNhdCA9PiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAga2V5PXtjYXQuY2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoY2F0LmNhdGVnb3J5KX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHB5LTIgcHgtNSByb3VuZGVkLWZ1bGwgZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgdGV4dC1zbSBtZDp0ZXh0LWJhc2UgJHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiID09PSBjYXQuY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgICA/ICdiZy1icmFuZC1jeWFuIHRleHQtd2hpdGUgc2hhZG93LWxnIHRyYW5zZm9ybSBzY2FsZS0xMDUnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYmctZ3JheS0yMDAgdGV4dC1ncmF5LTcwMCBob3ZlcjpiZy1ncmF5LTMwMCdcbiAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtjYXQuY2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBzbTpncmlkLWNvbHMtMyBtZDpncmlkLWNvbHMtNCBsZzpncmlkLWNvbHMtNSB4bDpncmlkLWNvbHMtNiBnYXAtNiBtZDpnYXAtOFwiPlxuICAgICAgICAgICAgICB7YWN0aXZlQ2F0ZWdvcnk/LnRlbXBsYXRlcy5tYXAodGVtcGxhdGUgPT4gKFxuICAgICAgICAgICAgICAgIDxUZW1wbGF0ZUNhcmQgXG4gICAgICAgICAgICAgICAgICBrZXk9e3RlbXBsYXRlLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e3RlbXBsYXRlLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgdXJsPXt0ZW1wbGF0ZS51cmx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgICAvLyAtLS0gRU5EIE9GIGNvbXBvbmVudHMvSW50ZXJhY3RpdmVUZW1wbGF0ZXMudHN4IC0tLVxuXG5cbiAgICAgIC8vIC0tLSBTVEFSVCBPRiBBcHAudHN4IC0tLVxuICAgICAgY29uc3QgQXBwID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctd2hpdGUgdGV4dC1ncmF5LTgwMCBmb250LXNhbnNcIj5cbiAgICAgICAgICAgIDxIZWFkZXIgLz5cbiAgICAgICAgICAgIDxtYWluPlxuICAgICAgICAgICAgICB7LyogSGVybyBTZWN0aW9uICovfVxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB0ZXh0LXdoaXRlIG92ZXJmbG93LWhpZGRlbiBiZy1icmFuZC1taWRuaWdodFwiPlxuICAgICAgICAgICAgICAgIHsvKiBTdHlsaXNoIEJhY2tncm91bmQgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIHotMCBvcGFjaXR5LTUwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC1bLTMwJV0gbGVmdC1bLTMwJV0gdy00LzUgaC00LzUgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tYnJhbmQtY3lhbiB0by10cmFuc3BhcmVudCBmaWx0ZXIgYmx1ci0zeGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLVstMzAlXSByaWdodC1bLTMwJV0gdy00LzUgaC00LzUgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLXRsIGZyb20tYnJhbmQtY3lhbiB0by10cmFuc3BhcmVudCBmaWx0ZXIgYmx1ci0zeGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgei0xMCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtaW4taC1bNzB2aF0gbWQ6bWluLWgtWzgwdmhdIHB4LTQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTV4bCBtZDp0ZXh0LTd4bCBsZzp0ZXh0LTh4bCBmb250LWV4dHJhYm9sZCBtYi00IHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIFlvdXIgZW50aXJlIG1hcmtldGluZyB0ZWFtLCBpbiBvbmUgQUkuXG4gICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyBtZDp0ZXh0LTJ4bCBtYXgtdy0zeGwgbWItOFwiPlxuICAgICAgICAgICAgICAgICAgICBJbWFnaW5lIHRoZSBjcmVhdGl2ZSBmaXJlcG93ZXIgb2YgYSBkZXNpZ24gYWdlbmN5LCB0aGUgc3RyYXRlZ2ljIGluc2lnaHQgb2YgYSBjb25zdWx0YW50LCBhbmQgdGhlIGJyaWxsaWFuY2Ugb2YgYSB0b3AtdGllciBtYXJrZXRpbmcgdGVhbeKAlGFsbCBhdCB5b3VyIGZpbmdlcnRpcHMuIFRoYXQncyBCcmFuZCBBSS5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAganVzdGlmeS1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvYnJhbmRjcmVhdG9yL2luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy13aGl0ZSB0ZXh0LWJyYW5kLW1pZG5pZ2h0IGZvbnQtYm9sZCBweS0zIHB4LTggcm91bmRlZC1sZyB0ZXh0LWxnIGhvdmVyOmJnLWdyYXktMjAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCB0cmFuc2Zvcm0gaG92ZXI6c2NhbGUtMTA1XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IGNyZWF0aW5nIGZvciBmcmVlXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cudGhlYnJhbmQuYWkvaW5zaWdodHMvXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy13aGl0ZS8xMCBiYWNrZHJvcC1ibHVyLXNtIHRleHQtd2hpdGUgZm9udC1ib2xkIHB5LTMgcHgtOCByb3VuZGVkLWxnIHRleHQtbGcgaG92ZXI6Ymctd2hpdGUvMjAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMDVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgRXhwbG9yZSBBSSBGZWF0dXJlc1xuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHsvKiBUaGUgUHJvYmxlbSBTZWN0aW9uICovfVxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJweS0yMCBtZDpweS0yOCBiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbXgtYXV0byBweC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbWQ6dGV4dC01eGwgZm9udC1ib2xkIG1iLTRcIj5UaGUgb2xkIHdheSBpcyBicm9rZW4uPC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbGcgbWQ6dGV4dC14bCB0ZXh0LWdyYXktNjAwIG1heC13LTN4bCBteC1hdXRvIG1iLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIERpZCB5b3Uga25vdyA5MCUgb2YgYnVzaW5lc3NlcyBzdHJ1Z2dsZSB0byBzdGFuZCBvdXQ/IFRoZXkgc3BlbmQgbW9udGhzIGFuZCB0aG91c2FuZHMgb24gc29sdXRpb25zIHRoYXQgZG9u4oCZdCBkZWxpdmVyLlxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0zIGdhcC04IHRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICB7UFJPQkxFTV9DQVJEUy5tYXAoKGNhcmQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJiZy13aGl0ZSBwLTggcm91bmRlZC0yeGwgc2hhZG93LW1kIGhvdmVyOnNoYWRvdy14bCBob3ZlcjotdHJhbnNsYXRlLXktMiB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1icmFuZC1jeWFuIG1iLTRcIj57Y2FyZC5pY29ufTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1ib2xkIG1iLTJcIj57Y2FyZC50aXRsZX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTYwMFwiPntjYXJkLmRlc2NyaXB0aW9ufTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHsvKiBUb29scyBTZWN0aW9uICovfVxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJweS0yMCBtZDpweS0yOFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIG14LWF1dG8gcHgtNlwiPlxuICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtYi0xMlwiPlxuICAgICAgICAgICAgICAgICAgICBBbiBlbnRpcmUgdG9vbGtpdCwgcG93ZXJlZCBieSBBSS5cbiAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLThcIj5cbiAgICAgICAgICAgICAgICAgICAge0ZFQVRVUkVTX1BSSU1BUlkubWFwKChmZWF0dXJlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxGZWF0dXJlQ2FyZCBrZXk9e2luZGV4fSB7Li4uZmVhdHVyZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHsvKiBUcmFjdGlvbiBTZWN0aW9uICovfVxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJweS0yMCBtZDpweS0yNCBiZy1icmFuZC1taWRuaWdodCB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbXgtYXV0byBweC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC01eGwgbWQ6dGV4dC02eGwgZm9udC1leHRyYWJvbGQgbWItNCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAzNCwwMDArIHVzZXJzIGFuZCBncm93aW5nLlxuICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbGcgbWQ6dGV4dC14bCBvcGFjaXR5LTgwIG1heC13LTN4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIFRydXN0ZWQgYnkgZ292ZXJubWVudHMsIFNNRXMsIGFuZCBzdGFydHVwcyB3b3JsZHdpZGUuIEFsbCBhY2hpZXZlZCB0aHJvdWdoIG9yZ2FuaWMgZ3Jvd3RoIGZ1ZWxlZCBieSB1c2VyIHRydXN0IGFuZCByZWZlcnJhbHMuXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICB7LyogQWxsIGluIG9uZSBwbGFjZSBTZWN0aW9uICovfVxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJweS0yMCBtZDpweS0yOCBiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbXgtYXV0byBweC02XCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbWQ6dGV4dC01eGwgZm9udC1ib2xkIHRleHQtY2VudGVyIG1iLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgdG9vbHMuIEFsbCBpbiBvbmUgcGxhY2UuXG4gICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC04XCI+XG4gICAgICAgICAgICAgICAgICAgIHtGRUFUVVJFU19TRUNPTkRBUlkubWFwKChmZWF0dXJlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxGZWF0dXJlQ2FyZCBrZXk9e2luZGV4fSB7Li4uZmVhdHVyZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHsvKiBUYXJnZXQgTWFya2V0IFNlY3Rpb24gKi99XG4gICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInB5LTIwIG1kOnB5LTI4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbXgtYXV0byBweC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbWQ6dGV4dC01eGwgZm9udC1ib2xkIG1iLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIEh5cGVyLWNvbnRleHR1YWwgc29sdXRpb25zIGZvciBldmVyeW9uZS5cbiAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC04IG1kOmdhcC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICB7VEFSR0VUX01BUktFVFMubWFwKChtYXJrZXQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlciB3LTMyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWN5YW4tMTAwIHRleHQtYnJhbmQtY3lhbiByb3VuZGVkLWZ1bGwgcC01IG1iLTQgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHRyYW5zZm9ybSBob3ZlcjpzY2FsZS0xMTAgaG92ZXI6YmctY3lhbi0yMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge21hcmtldC5pY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwXCI+e21hcmtldC5uYW1lfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICB7LyogVGVtcGxhdGVzIFNlY3Rpb24gKi99XG4gICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInB5LTIwIG1kOnB5LTI4IGJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICA8SW50ZXJhY3RpdmVUZW1wbGF0ZXMgLz5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgIHsvKiBFY29zeXN0ZW0gU2VjdGlvbiAqL31cbiAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHktMjAgbWQ6cHktMjhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBteC1hdXRvIHB4LTZcIj5cbiAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBtZDp0ZXh0LTV4bCBmb250LWJvbGQgdGV4dC1jZW50ZXIgbWItMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgWW91ciBicmFuZCdzIGVudGlyZSBlY29zeXN0ZW0sIGNvbm5lY3RlZC5cbiAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLThcIj5cbiAgICAgICAgICAgICAgICAgICAge0ZFQVRVUkVTX1RFUlRJQVJZLm1hcCgoZmVhdHVyZSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8RmVhdHVyZUNhcmQga2V5PXtpbmRleH0gey4uLmZlYXR1cmV9IC8+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgICAgIDxGb290ZXIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgICAvLyAtLS0gRU5EIE9GIEFwcC50c3ggLS0tXG5cblxuICAgICAgLy8gLS0tIFNUQVJUIE9GIGluZGV4LnRzeCAtLS1cbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTtcbiAgICAgIGlmICghcm9vdEVsZW1lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgcm9vdCBlbGVtZW50IHRvIG1vdW50IHRvXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChyb290RWxlbWVudCk7XG4gICAgICByb290LnJlbmRlcihcbiAgICAgICAgPFJlYWN0LlN0cmljdE1vZGU+XG4gICAgICAgICAgPEFwcCAvPlxuICAgICAgICA8L1JlYWN0LlN0cmljdE1vZGU+XG4gICAgICApO1xuICAgICAgLy8gLS0tIEVORCBPRiBpbmRleC50c3ggLS0tXG5cbiAgICAiXSwibWFwcGluZ3MiOiI7QUFDTSxPQUFPQSxLQUFLLElBQUlDLFFBQVEsUUFBUSxPQUFPO0FBQ3ZDLE9BQU9DLFFBQVEsTUFBTSxrQkFBa0I7O0FBRXZDO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsQ0FDdkI7RUFDRUMsS0FBSyxFQUFFLDZDQUE2QztF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</script>
<!-- UMD React for InteractiveTemplates only -->
<script src="https://unpkg.com/react@18.3.1/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js" crossorigin></script>
</head>
<body>
<noscript>
<div style="padding: 12px; text-align: center; background: #fff3cd; color: #664d03; font-family: Inter, sans-serif;">
JavaScript is required to use Brand AI. Please enable JavaScript.
</div>
</noscript>
<!-- Full-screen Auth Modal -->
<div id="authModal" class="fixed inset-0 z-[999] hidden">
<iframe id="authFrame" src="" class="w-full h-full border-0" title="Brand AI Authentication"
allow="clipboard-write; geolocation; microphone; camera"></iframe>
<button id="authClose" type="button" aria-label="Close authentication"
class="absolute top-4 right-4 z-10 bg-gray-900 text-white rounded-full px-4 py-2 shadow-lg hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-white">
Close
</button>
</div>
<div id="root">
<div class="bg-white text-gray-800 font-sans">
<!-- Dashboard-style announcement strip -->
<div class="dash-top-strip">✨ The Brand Operating System for High-Growth Teams · 36,000+ marketers trust Brand AI</div>
<header class="bg-white/80 backdrop-blur-sm sticky top-0 z-50 shadow-sm">
<div class="container mx-auto px-6 py-4">
<div class="flex items-center justify-between">
<div class="flex items-center space-x-8"><a href="https://www.thebrand.ai" aria-label="Brand AI Homepage">
<img src="https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png" alt="Brand AI Logo" width="110" height="30">
</a>
<nav class="hidden md:flex items-center space-x-6"><a
href="https://www.thebrand.ai/brandcreator/index"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Brand
Creator</a><a href="https://www.thebrand.ai/i"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Templates</a><a
href="https://www.thebrand.ai/insights/"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Insights</a><a
href="https://www.thebrand.ai/blogs"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Blogs</a>
<a
href="https://www.thebrand.ai/wowX/tools"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Resources</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<a href="https://bit.ly/2LpQJmO" target="_blank" rel="noopener noreferrer" class="font-semibold text-gray-600 hover:text-brand-cyan transition-colors border border-gray-300 rounded-lg py-2 px-4 text-sm hover:border-brand-cyan">Download App</a>
<a href="https://www.thebrand.ai/connect/index.php" data-auth="login" class="font-bold text-gray-600 hover:text-brand-cyan transition-colors">Log in</a>
<a href="https://www.thebrand.ai/connect/index.php?action=register" data-auth="signup" class="bg-brand-cyan text-white font-bold py-2 px-4 rounded-lg hover:opacity-90 transition-opacity">Sign up for free</a>
</div>
<div class="md:hidden">
<button class="text-gray-800 focus:outline-none" aria-label="Toggle menu">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</button>
</div>
</div>
</div>
</header>
<main>
<section class="relative text-white overflow-hidden bg-brand-midnight">
<div aria-hidden="true" class="absolute inset-0 z-0 opacity-50">
<div class="absolute top-[-30%] left-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-br from-brand-cyan to-transparent filter blur-3xl"></div>
<div class="absolute bottom-[-30%] right-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-tl from-brand-cyan to-transparent filter blur-3xl"></div>
</div>
<div class="relative z-10 flex flex-col items-center justify-center min-h-[70vh] md:min-h-[80vh] px-4 text-center">
<!-- Dashboard badge pill -->
<div class="dash-hero-badge">✨ The Brand Operating System for High-Growth Teams</div>
<h1 class="text-5xl md:text-7xl lg:text-8xl font-extrabold mb-4 tracking-tight"><span class="block">Build Brands That</span><span class="block dash-grad-heading">Scale Without Chaos.</span></h1>
<p class="text-lg md:text-2xl max-w-3xl mb-8">Brand AI is the all-in-one workspace your team actually needs: a professional editor with AI image tools, brand kits, smart templates, curated media, and AI-powered analytics—all connected, all on-brand, always.</p>
<div class="flex flex-wrap justify-center gap-4"><a
href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home"
class="bg-white text-brand-midnight font-bold py-3 px-8 rounded-lg text-lg hover:bg-gray-200 transition-all duration-300 transform hover:scale-105">🚀 Start Building Free</a><a href="https://www.thebrand.ai/wowX/tools"
class="dash-cta-glass">📖 Explore Brand Pro</a></div>
<!-- Dashboard-style trust badges -->
<div class="dash-trust-row">
<span>🔒 No credit card required</span>
<span>⚡ Setup in under 5 minutes</span>
<span>🌍 36,000+ marketers trust Brand AI</span>
</div>
<!-- Dashboard-style stats grid -->
<div class="dash-stats-grid" style="max-width:680px;width:100%;margin-left:auto;margin-right:auto;">
<div class="dash-stat-item"><div class="dash-stat-number">36,000+</div><div class="dash-stat-label">Active Marketers</div></div>
<div class="dash-stat-item"><div class="dash-stat-number">200+</div><div class="dash-stat-label">Free Tools & Templates</div></div>
<div class="dash-stat-item"><div class="dash-stat-number">4.9★</div><div class="dash-stat-label">Average Rating</div></div>
<div class="dash-stat-item"><div class="dash-stat-number">3×</div><div class="dash-stat-label">Faster Content Output</div></div>
</div>
<!-- Join ribbon -->
<div class="dash-join-ribbon">
<div class="avatar-stack">
<div class="mini-av">MK</div><div class="mini-av">TJ</div><div class="mini-av">AL</div><div class="mini-av">RS</div>
</div>
Join 36,000+ marketers who ship on-brand, every time
</div>
</div>
</section>
<div class="dash-glow-divider"></div>
<section class="py-20 md:py-28 bg-white">
<div class="container mx-auto px-6">
<div class="text-center mb-12">
<div class="dash-section-label">✦ Start with what matters most</div>
<h2 class="text-4xl md:text-5xl font-bold mb-4">Choose your most valuable next step.</h2>
<p class="text-lg md:text-xl text-gray-600 max-w-3xl mx-auto">Every journey is different. Jump straight into the experience that matches where you are today — whether you need clarity, creation, or control.</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<a href="../dashboard/index.php" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Command center</span>
<span class="text-sm text-gray-500">Workspace</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI Dashboard</h3>
<p class="text-gray-600 mb-4 md:mb-6">See everything in one place — campaigns, assets, and performance — so your team always knows what to do next.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Open Dashboard
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a><a href="https://www.thebrand.ai/wowX/dashboard/index.php?tab=templates" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Creative canvas</span>
<span class="text-sm text-gray-500">Editor</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Wow Editor</h3>
<p class="text-gray-600 mb-4 md:mb-6">Design multi-page brand experiences with drag-and-drop editing, smart auto-save, rich typography, and built-in stock image search.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Open Editor
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a>
<a href="../insights/index.php" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Insight first</span>
<span class="text-sm text-gray-500">Strategy</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand Insights & Intelligence</h3>
<p class="text-gray-600 mb-4 md:mb-6">Diagnose your brand, uncover blind spots, and turn data into clear next moves with guided analytics and journeys.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Go to Insights
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a>
<a href="../tools/index.php" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Create with AI</span>
<span class="text-sm text-gray-500">Tools</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">The Ultimate Growth Toolkit</h3>
<p class="text-gray-600 mb-4 md:mb-6">Jump into calculators, diagnostics, and creative utilities that turn ideas into on-brand assets in minutes.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Explore Tools
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a>
<a href="../brandcreator/index.php" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Design studio</span>
<span class="text-sm text-gray-500">Creation</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand Creator Studio</h3>
<p class="text-gray-600 mb-4 md:mb-6">Craft logos, palettes, and brand systems that stay consistent across every touchpoint and channel.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Launch Brand Creator
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a>
<a href="https://www.thebrand.ai/wowX/dashboard/index.php?tab=brand360&page=sites" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between">
<div>
<div class="flex items-center justify-between mb-4">
<span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Always-on presence</span>
<span class="text-sm text-gray-500">Brand 360</span>
</div>
<h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand 360 </h3>
<p class="text-gray-600 mb-4 md:mb-6">Spin up beautiful, on-brand sites, deeply explore brand identity experiences, and keep every touchpoint aligned with your core story.</p>
</div>
<span class="inline-flex items-center text-sm font-semibold text-brand-cyan">
Go to Brand 360
<svg class="w-4 h-4 ml-2" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
</svg>
</span>
</a>
</div>
</div>
</section>
<section class="py-20 md:py-28 bg-gray-50">
<div class="container mx-auto px-6 text-center">
<div class="dash-section-label" style="margin-bottom:16px;">⚡ The problem</div>
<h2 class="text-4xl md:text-5xl font-bold mb-4">The old way is broken.</h2>
<p class="text-lg md:text-xl text-gray-600 max-w-3xl mx-auto mb-12">Did you know 90% of businesses
struggle to stand out? They spend months and thousands on solutions that don’t deliver.</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 text-left">
<div class="bg-white p-8 rounded-2xl shadow-md hover:shadow-xl hover:-translate-y-2 transition-all duration-300">
<div class="text-brand-cyan mb-4">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none"
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round"
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 10v-1m-5.293-6.293l-.707.707M17.293 7.707l.707-.707M5.707 16.293l.707.707M16.586 17H19a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2.414"></path>
</svg>
</div>
<h3 class="text-xl font-bold mb-2">Agency-Level Budgets</h3>
<p class="text-gray-600">SMEs and governments need top-tier strategy but lack the budget for
expensive agencies.</p></div>
<div class="bg-white p-8 rounded-2xl shadow-md hover:shadow-xl hover:-translate-y-2 transition-all duration-300">
<div class="text-brand-cyan mb-4">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none"
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round"
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
</div>
<h3 class="text-xl font-bold mb-2">Months of Guesswork</h3>
<p class="text-gray-600">Founders and marketers waste precious time guessing their next move
instead of acting on clear insights.</p></div>
<div class="bg-white p-8 rounded-2xl shadow-md hover:shadow-xl hover:-translate-y-2 transition-all duration-300">
<div class="text-brand-cyan mb-4">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none"
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round"
d="M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a2 2 0 110-4h1a1 1 0 001-1V7a1 1 0 011-1h3a1 1 0 001-1V4z"></path>
</svg>
</div>
<h3 class="text-xl font-bold mb-2">Juggling a Dozen Tools</h3>
<p class="text-gray-600">Creatives juggle multiple, disconnected tools to create a single
campaign, with none of them talking to each other.</p></div>
</div>
</div>
</section>
<section class="py-20 md:py-28">
<div class="container mx-auto px-6">
<div class="text-center mb-2"><div class="dash-section-label">✦ The complete workspace</div></div>
<h2 class="text-4xl md:text-5xl font-bold text-center mb-12">An entire toolkit, powered by AI.</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(30, 0, 59);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Bring Your Brand
to Life with Brand Creator</h3>
<p class="text-lg opacity-90 mb-6">Quickly and effortlessly create a powerful,
professional brand identity and logos that stand out and drive business growth.</p>
<a href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Explore
Brand Creator</a></div>
<div class="absolute inset-0 z-0"><img alt="Bring Your Brand to Life with Brand Creator"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="https://picsum.photos/seed/branding-desk/1200/800">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(0, 61, 91);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Revolutionize
Your Brand with AI Insights</h3>
<p class="text-lg opacity-90 mb-6">Supercharge your brand with intelligent solutions,
design, and big data to drive growth, engagement, and measurable success.</p><a
href="https://www.thebrand.ai/insights/"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Explore
Insights</a></div>
<div class="absolute inset-0 z-0"><img alt="Revolutionize Your Brand with AI Insights"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="https://picsum.photos/seed/ai-dashboard/1200/800">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(0, 76, 76);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Build a Website
Easily with Brand Sites</h3>
<p class="text-lg opacity-90 mb-6">Choose from over 100 amazing templates to build a
stunning website that empowers your brand to stand out.</p><a
href="https://www.thebrand.ai/sites/index"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Explore
Brand Sites</a></div>
<div class="absolute inset-0 z-0"><img alt="Build a Website Easily with Brand Sites"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="https://picsum.photos/seed/web-design/1200/800">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
</div>
</div>
</section>
<section class="py-20 md:py-24 bg-brand-midnight text-white">
<div class="container mx-auto px-6 text-center">
<div class="dash-section-label" style="background:rgba(3,190,243,0.15);border-color:rgba(3,190,243,0.4);margin-bottom:16px;">🌍 Global trust</div>
<h2 class="text-5xl md:text-6xl font-extrabold mb-4 tracking-tight"><span class="dash-grad-heading">36,000+</span> users and growing.</h2>
<p class="text-lg md:text-xl opacity-80 max-w-3xl mx-auto mb-16">Trusted by governments, SMEs, and startups worldwide. All achieved through organic growth fueled by user trust and referrals.</p>
<!-- Dashboard-style testimonial cards -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 text-left">
<div style="background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);border-radius:16px;padding:24px;">
<div style="color:#03bef3;font-size:0.9rem;margin-bottom:10px;">⭐⭐⭐⭐⭐</div>
<p style="font-size:0.9rem;opacity:0.85;margin-bottom:16px;line-height:1.6;">"Brand AI replaced four different tools for us. The Brand Kit alone saved our design team 6 hours a week."</p>
<div style="display:flex;align-items:center;gap:10px;">
<div class="dash-avatar">MK</div>
<div><div style="font-weight:700;font-size:0.82rem;">Maria K.</div><div style="font-size:0.74rem;opacity:0.55;">Head of Brand, SaaS Startup</div></div>
</div>
</div>
<div style="background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);border-radius:16px;padding:24px;">
<div style="color:#03bef3;font-size:0.9rem;margin-bottom:10px;">⭐⭐⭐⭐⭐</div>
<p style="font-size:0.9rem;opacity:0.85;margin-bottom:16px;line-height:1.6;">"Brand 360 showed us a consistency problem we didn't know existed. Fixed it in a week. Revenue lift followed."</p>
<div style="display:flex;align-items:center;gap:10px;">
<div class="dash-avatar">TJ</div>
<div><div style="font-weight:700;font-size:0.82rem;">Tomás J.</div><div style="font-size:0.74rem;opacity:0.55;">CMO, E-Commerce Brand</div></div>
</div>
</div>
<div style="background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);border-radius:16px;padding:24px;">
<div style="color:#03bef3;font-size:0.9rem;margin-bottom:10px;">⭐⭐⭐⭐⭐</div>
<p style="font-size:0.9rem;opacity:0.85;margin-bottom:16px;line-height:1.6;">"Managing 8 regional teams is finally painless. Governance + Folders + Shared assets—exactly what enterprise feels like."</p>
<div style="display:flex;align-items:center;gap:10px;">
<div class="dash-avatar">AL</div>
<div><div style="font-weight:700;font-size:0.82rem;">Amara L.</div><div style="font-size:0.74rem;opacity:0.55;">Brand Director, Retail Chain</div></div>
</div>
</div>
<div style="background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);border-radius:16px;padding:24px;">
<div style="color:#03bef3;font-size:0.9rem;margin-bottom:10px;">⭐⭐⭐⭐⭐</div>
<p style="font-size:0.9rem;opacity:0.85;margin-bottom:16px;line-height:1.6;">"Switched from Canva Teams. My Designs + the template system cut our social content production time by 70%."</p>
<div style="display:flex;align-items:center;gap:10px;">
<div class="dash-avatar">RS</div>
<div><div style="font-weight:700;font-size:0.82rem;">Rachel S.</div><div style="font-size:0.74rem;opacity:0.55;">Social Media Lead, Agency</div></div>
</div>
</div>
</div>
</div>
</section>
<div class="dash-glow-divider"></div>
<section class="py-20 md:py-28 bg-gray-50">
<div class="container mx-auto px-6">
<div class="text-center mb-2"><div class="dash-section-label">🎨 Design & present</div></div>
<h2 class="text-4xl md:text-5xl font-bold text-center mb-12">All the tools. All in one place.</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[520px] md:col-span-2 lg:col-span-1"
style="background-color: rgb(61, 0, 79);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Meet the Visual
Suite</h3>
<p class="text-lg opacity-90 mb-6">Your entire workflow in one place. From bespoke
designs and insightful blogs to tailored strategies—all powered by AI.</p><a
href="https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Explore
Visual Suite</a></div>
<div class="absolute inset-0 z-0"><img alt="Meet the Visual Suite"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="https://picsum.photos/seed/creative-workspace/1200/800">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[520px] md:col-span-2 lg:col-span-1"
style="background-color: rgb(0, 95, 88);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Present with
impact</h3>
<p class="text-lg opacity-90 mb-6">Reimagine presentations with cinematic visuals, smart
collaboration, and AI-powered tools.</p><a href="https://www.thebrand.ai/i/designs"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Try
Presentations</a></div>
<div class="absolute inset-0 z-0"><img alt="Present with impact"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="https://picsum.photos/seed/presentation-stage/1200/800">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
</div>
</div>
</section>
<section
id="how-it-works"
class="hiw"
aria-labelledby="hiw-heading"
itemscope
itemtype="https://schema.org/HowTo"
>
<meta itemprop="name" content="How to Build and Manage Your Brand with Brand AI">
<meta itemprop="description" content="A step-by-step guide to using Brand AI — the all-in-one AI brand platform — to set up your brand, design on-brand content, run strategy tools, and unlock AI insights.">
<meta itemprop="totalTime" content="PT15M">
<div class="hiw__inner">
<div class="hiw__header">
<div>
<p class="hiw__label">How it works</p>
<h2 id="hiw-heading" class="hiw__h2">
Go from scattered<br>
to <span class="grad-text">brand-ready</span><br>
in four steps.
</h2>
</div>
<div>
<p class="hiw__lede">
Brand AI is the all-in-one brand management platform built for
growing teams and ambitious brands. Here's exactly how to get
your brand set up, great-looking content out the door, and
strategy locked in — without switching between a dozen tools.
</p>
<span class="hiw__time-note">
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="8" cy="8" r="6.5"></circle>
<path d="M8 5v3.5l2 1.5"></path>
</svg>
Takes about 15 minutes to get fully set up and creating
</span>
</div>
</div>
<ol
class="hiw__steps"
aria-label="Steps to use Brand AI"
>
<!-- ─── STEP 1: Brand Creator ─── -->
<li
class="hiw__step"
id="step-brandcreator"
itemprop="step"
itemscope
itemtype="https://schema.org/HowToStep"
>
<meta itemprop="position" content="1">
<meta itemprop="url" content="https://www.thebrand.ai/index.html#step-brandcreator">
<div class="hiw__counter" aria-hidden="true">01</div>
<div class="hiw__card">
<div class="hiw__meta">
<span class="hiw__badge">Brand Creator</span>
<span class="hiw__duration">Logo ready in under 10 minutes</span>
</div>
<h3 class="hiw__step-h3" itemprop="name">
Create your logo and brand identity
</h3>
<p class="hiw__copy" itemprop="text">
Every great brand starts with a strong identity. <strong>Brand Creator</strong>
is your guided logo and brand wizard — answer a few simple questions about
your business name and style, and it generates professional logo options
you can actually use across web, social, and print. Not starting from scratch?
Upload your existing logo and Brand Creator sharpens it up, refines the details,
and makes it print- and screen-ready. Explore color combinations in a low-risk,
visual way until it feels exactly right. When you're happy, your brand identity
locks straight into Brand AI — ready for your whole team to use from day one.
</p>
<ul class="hiw__outcomes" aria-label="What you will be able to do">
<li>Generate professional logo options from your business name and style preferences</li>
<li>Clean up and sharpen an existing logo so it works across every channel and format</li>
<li>Explore and lock in your brand color palette before a single asset gets created</li>
</ul>
<div class="hiw__action">
<a href="/brandcreator/index" class="hiw__cta"
aria-label="Launch Brand Creator to build your logo and brand identity">
Launch Brand Creator
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
</div>
</div>
</li>
<li
class="hiw__step"
id="step-dashboard"
itemprop="step"
itemscope
itemtype="https://schema.org/HowToStep"
>
<meta itemprop="position" content="2">
<meta itemprop="url" content="https://www.thebrand.ai/index.html#step-dashboard">
<div class="hiw__counter" aria-hidden="true">02</div>
<div class="hiw__card">
<div class="hiw__meta">
<span class="hiw__badge">Workspace</span>
<span class="hiw__duration">Set up in about 5 minutes</span>
</div>
<h3 class="hiw__step-h3" itemprop="name">
Set up your brand home in the Dashboard
</h3>
<p class="hiw__copy" itemprop="text">
Start here. The <strong>Brand AI Dashboard</strong> is your brand's operating
system — the single place where your assets live, your team collaborates,
and your campaigns move forward. Upload your logo, choose your brand colors
and fonts, and build a <strong>Brand Kit</strong> that every designer and
marketer on your team works from. When everyone creates from the same source
of truth, off-brand content stops happening.
</p>
<ul class="hiw__outcomes" aria-label="What you will be able to do">
<li>Store approved logos, colors, and typography in one shared Brand Kit</li>
<li>Invite your team and assign access levels so the right people can edit, review, or approve</li>
<li>See active campaigns, pending approvals, and team activity in a single, clean view</li>
</ul>
<div class="hiw__action">
<a href="/dashboard/index.php" class="hiw__cta"
aria-label="Open the Brand AI Dashboard to set up your brand">
Set up your Dashboard
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
<!-- <a href="/brandcreator/index" class="hiw__cta hiw__cta--ghost"
aria-label="Create a logo first using Brand Creator">
No logo yet? Start with Brand Creator →
</a> -->
</div>
</div>
</li>
<li
class="hiw__step"
id="step-editor"
itemprop="step"
itemscope
itemtype="https://schema.org/HowToStep"
>
<meta itemprop="position" content="3">
<meta itemprop="url" content="https://www.thebrand.ai/index.html#step-editor">
<div class="hiw__counter" aria-hidden="true">03</div>
<div class="hiw__card">
<div class="hiw__meta">
<span class="hiw__badge">Editor</span>
<span class="hiw__duration">First design in under 3 minutes</span>
</div>
<h3 class="hiw__step-h3" itemprop="name">
Design on-brand content in the Wow Editor
</h3>
<p class="hiw__copy" itemprop="text">
Open the <strong>Wow Editor</strong> — your in-browser design studio — and
start creating without needing Photoshop, Illustrator, or any design experience.
Your Brand Kit flows in automatically, so every design your team produces looks
unmistakably on-brand from the first click. Need a visual quickly? Describe what
you need, and the built-in <strong>AI image generator</strong> builds it for you.
Teammates can edit in real time, and pinned comments mean feedback lands exactly
where it matters — no more long email threads about which version is the right one.
</p>
<ul class="hiw__outcomes" aria-label="What you will be able to do">
<li>Create presentations, social carousels, campaign ads, and multi-page brand documents</li>
<li>Generate on-brand images with a single AI prompt — no stock site login required</li>
<li>Collaborate with your team live and resolve every piece of feedback in one thread</li>
</ul>
<div class="hiw__action">
<a href="/wowX/dashboard/index.php?tab=templates" class="hiw__cta"
aria-label="Open the Wow Editor to start designing">
Start designing in the Wow Editor
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
</div>
</div>
</li>
<li
class="hiw__step"
id="step-tools"
itemprop="step"
itemscope
itemtype="https://schema.org/HowToStep"
>
<meta itemprop="position" content="4">
<meta itemprop="url" content="https://www.thebrand.ai/index.html#step-tools">
<div class="hiw__counter" aria-hidden="true">04</div>
<div class="hiw__card">
<div class="hiw__meta">
<span class="hiw__badge">Resources</span>
<span class="hiw__duration">Run any tool in under 5 minutes</span>
</div>
<h3 class="hiw__step-h3" itemprop="name">
Run the tools that answer your hardest brand questions
</h3>
<p class="hiw__copy" itemprop="text">
The <strong>Resources & Tools library</strong> is a focused collection of
brand strategy and marketing tools built to give you clear, usable answers —
fast. Need to calculate campaign ROI to defend your budget? Run the calculator.
Unsure where your brand positioning is losing ground? Use the brand health diagnostic.
Planning your next content quarter? The content framework gets you from blank
page to structured plan in minutes. No long setup, no complex dashboards —
just the tool, the result, and an output you can paste straight into your
next leadership deck or strategy session.
</p>
<ul class="hiw__outcomes" aria-label="What you will be able to do">
<li>Diagnose brand health and identify exactly where your brand is slipping</li>
<li>Calculate campaign ROI and customer lifetime value to back up your marketing decisions</li>
<li>Generate content plans and campaign structures ready to action immediately</li>
</ul>
<div class="hiw__action">
<a href="/wowX/tools" class="hiw__cta"
aria-label="Explore Brand AI Resources and Tools library">
Explore Resources & Tools
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
</div>
</div>
</li>
<li
class="hiw__step"
id="step-insights"
itemprop="step"
itemscope
itemtype="https://schema.org/HowToStep"
>
<meta itemprop="position" content="5">
<meta itemprop="url" content="https://www.thebrand.ai/index.html#step-insights">
<div class="hiw__counter" aria-hidden="true">05</div>
<div class="hiw__card">
<div class="hiw__meta">
<span class="hiw__badge">Intelligence</span>
<span class="hiw__duration">First insight in under 2 minutes</span>
</div>
<h3 class="hiw__step-h3" itemprop="name">
Unlock AI-powered brand and marketing insights
</h3>
<p class="hiw__copy" itemprop="text">
<strong>Brand AI Insights</strong> is your library of curated AI prompts and
strategic insight cards — built so your team never stares at a blank page again.
Browse cards by category (campaigns, messaging, customer journeys, growth strategy)
or filter by your industry. Each card tells you exactly when to use it and what
kind of answer it's designed to surface. Copy the prompt, adapt it for your brand,
drop it into your AI tool of choice, and you're done. Related cards surface
automatically, so one good idea expands into a full campaign, content series,
or brand playbook.
</p>
<ul class="hiw__outcomes" aria-label="What you will be able to do">
<li>Access battle-tested AI prompts for brand strategy, campaigns, and content briefs</li>
<li>Filter by industry — B2B SaaS, e-commerce, services, personal brand, and more</li>
<li>Follow related insight cards to build out a complete campaign or brand strategy</li>
</ul>
<div class="hiw__action">
<a href="/insights/" class="hiw__cta"
aria-label="Go to Brand AI Insights to find AI-powered brand prompts and ideas">
Discover Brand Insights
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
</div>
</div>
</li>
</ol>
<div class="hiw__trust" role="complementary" aria-label="Brand AI at a glance">
<div class="hiw__trust-stat">
<strong>34,000+</strong>
<span>brands and teams using Brand AI</span>
</div>
<div class="hiw__trust-divider" aria-hidden="true"></div>
<div class="hiw__trust-stat">
<strong>200+</strong>
<span>ready-to-use templates in the Wow Editor</span>
</div>
<div class="hiw__trust-divider" aria-hidden="true"></div>
<div class="hiw__trust-stat">
<strong>Free</strong>
<span>to start — no credit card required</span>
</div>
<a href="/connect/index.php?action=register"
class="hiw__trust-cta"
aria-label="Create your free Brand AI account and start building your brand today">
Start building your brand — it's free
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"
stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M3 8h10M9 4l4 4-4 4"></path>
</svg>
</a>
</div>
</div>
</section>
<section class="py-20 md:py-28 bg-white">
<div class="container mx-auto px-6">
<div class="text-center mb-12">
<div class="dash-section-label" style="margin-bottom:16px;">🏭 Industry-grade playbooks</div>
<h2 class="text-4xl md:text-5xl font-bold mb-4">Built for real brands in every industry.</h2>
<p class="text-lg md:text-xl text-gray-600 max-w-3xl mx-auto">From real estate and athletes to authors, bloggers, and beyond, Brand AI adapts to how you actually work. Choose your world to see a tailored experience for your field.</p>
</div>
<div id="industry-segments-grid" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"><a href="https://www.thebrand.ai/industry/Real+Estate" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Real Estate & Property Professionals — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Real Estate</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Real Estate & Property Professionals</h3><p class="text-gray-600 mb-4 md:mb-6">I need my real estate brand, listings, and campaigns to stand out and convert.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Real Estate playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Athlete" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Athlete — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Athlete</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Athlete</h3><p class="text-gray-600 mb-4 md:mb-6">I need a performance-driven personal brand that matches my sports and fitness identity.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Athlete playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Author" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Author — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Author</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Author</h3><p class="text-gray-600 mb-4 md:mb-6">I want a recognizable author brand that sells more books and builds a loyal readership.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Author playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Actor" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Actor — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Actor</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Actor</h3><p class="text-gray-600 mb-4 md:mb-6">I need a professional acting brand that stands out to casting directors and fans.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Actor playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Architectural+Designer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Architectural Designer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Architectural Designer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Architectural Designer</h3><p class="text-gray-600 mb-4 md:mb-6">I want my architecture and design work presented with the same care as my projects.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Architectural Designer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Blogger" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Blogger — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Blogger</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Blogger</h3><p class="text-gray-600 mb-4 md:mb-6">I need my blog, email list, and socials to look like one cohesive brand.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Blogger playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Musician%2FBand" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Musician & Band — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Musician/Band</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Musician & Band</h3><p class="text-gray-600 mb-4 md:mb-6">I want my music, shows, and releases to look as good as they sound.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Musician/Band playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Comedian" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Comedian — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Comedian</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Comedian</h3><p class="text-gray-600 mb-4 md:mb-6">I need a comedy brand that makes my posters, clips, and specials instantly recognizable.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Comedian playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Coach" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Coach — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Coach</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Coach</h3><p class="text-gray-600 mb-4 md:mb-6">I want a coaching brand that inspires trust and action from my clients.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Coach playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Chef" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Chef — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Chef</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Chef</h3><p class="text-gray-600 mb-4 md:mb-6">I need my food, restaurant, or personal chef brand to look as refined as my menu.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Chef playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Movie+Character" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Movie Character — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Movie Character</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Movie Character</h3><p class="text-gray-600 mb-4 md:mb-6">I want iconic character-driven branding for films, fan communities, or franchises.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Movie Character playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Video+Creator" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Video Creator — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Video Creator</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Video Creator</h3><p class="text-gray-600 mb-4 md:mb-6">I need my video channels and thumbnails to feel instantly on-brand.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Video Creator playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Gaming+Video+Creator" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Gaming Video Creator — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Gaming Video Creator</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Gaming Video Creator</h3><p class="text-gray-600 mb-4 md:mb-6">I want my gaming channel, overlays, and clips to stand out in a crowded feed.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Gaming Video Creator playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Digital+Creator" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Digital Creator — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Digital Creator</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Digital Creator</h3><p class="text-gray-600 mb-4 md:mb-6">I need a digital-first brand that works across every platform I publish on.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Digital Creator playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Dancer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Dancer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Dancer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Dancer</h3><p class="text-gray-600 mb-4 md:mb-6">I want a dynamic visual brand that matches my choreography and performances.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Dancer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Designer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Designer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Designer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Designer</h3><p class="text-gray-600 mb-4 md:mb-6">I want my own design brand to look as good as the work I deliver.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Designer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Interior+Design+Studio" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Interior Design Studio — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Interior Design Studio</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Interior Design Studio</h3><p class="text-gray-600 mb-4 md:mb-6">I need my interior design studio to look premium and consistent across every touchpoint.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Interior Design Studio playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Graphic+Designer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Graphic Designer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Graphic Designer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Graphic Designer</h3><p class="text-gray-600 mb-4 md:mb-6">I want a graphic design brand that attracts better clients and bigger projects.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Graphic Designer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Web+Designer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Web Designer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Web Designer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Web Designer</h3><p class="text-gray-600 mb-4 md:mb-6">I need a web design brand that signals modern, conversion-focused experiences.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Web Designer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Film+Director" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Film Director — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Film Director</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Film Director</h3><p class="text-gray-600 mb-4 md:mb-6">I want my director brand and reels to feel cinematic and unmistakably mine.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Film Director playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Fashion+Designer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Fashion Designer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Fashion Designer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Fashion Designer</h3><p class="text-gray-600 mb-4 md:mb-6">I need a fashion brand system that can scale from lookbooks to e-commerce.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Fashion Designer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Entrepreneur" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Entrepreneur — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Entrepreneur</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Entrepreneur</h3><p class="text-gray-600 mb-4 md:mb-6">I want a brand that supports my startup, pitch, and personal reputation.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Entrepreneur playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Editor" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Editor — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Editor</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Editor</h3><p class="text-gray-600 mb-4 md:mb-6">I need an editorial brand that signals clarity, trust, and sharp thinking.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Editor playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Fashion+Model" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Fashion Model — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Fashion Model</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Fashion Model</h3><p class="text-gray-600 mb-4 md:mb-6">I want a model portfolio and social presence that looks runway-ready.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Fashion Model playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Fitness+Model" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Fitness Model — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Fitness Model</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Fitness Model</h3><p class="text-gray-600 mb-4 md:mb-6">I need a fitness-focused personal brand that helps me win shoots and sponsorships.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Fitness Model playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Fitness+Trainer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Fitness Trainer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Fitness Trainer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Fitness Trainer</h3><p class="text-gray-600 mb-4 md:mb-6">I need a trainer brand that fills my classes, programs, and online offers.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Fitness Trainer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Public+Figure" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Public Figure — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Public Figure</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Public Figure</h3><p class="text-gray-600 mb-4 md:mb-6">I want a public-facing brand that feels polished, credible, and consistent.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Public Figure playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Gamer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Gamer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Gamer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Gamer</h3><p class="text-gray-600 mb-4 md:mb-6">I need a gaming persona and brand that stands out across platforms.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Gamer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Government+Official" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Government Official — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Government Official</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Government Official</h3><p class="text-gray-600 mb-4 md:mb-6">I need a professional, trustworthy public office brand for my communications.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Government Official playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Clothing+Store" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Clothing Store — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Clothing Store</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Clothing Store</h3><p class="text-gray-600 mb-4 md:mb-6">I want my clothing store to look on-brand across in-store, online, and social.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Clothing Store playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/TV+Channel" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for TV Channel — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">TV Channel</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for TV Channel</h3><p class="text-gray-600 mb-4 md:mb-6">I need a channel brand that holds together shows, promos, and schedules.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore TV Channel playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/E-Commerce+Website" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for E-Commerce Website — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">E-Commerce Website</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for E-Commerce Website</h3><p class="text-gray-600 mb-4 md:mb-6">I want my online store brand to convert better and feel more premium.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore E-Commerce Website playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/In-Home+Service" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for In-Home Service — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">In-Home Service</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for In-Home Service</h3><p class="text-gray-600 mb-4 md:mb-6">I need a trustworthy local services brand that wins more bookings.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore In-Home Service playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Journalist" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Journalist — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Journalist</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Journalist</h3><p class="text-gray-600 mb-4 md:mb-6">I want a journalist brand that reinforces credibility and distinctive coverage.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Journalist playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/DJ" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for DJ — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">DJ</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for DJ</h3><p class="text-gray-600 mb-4 md:mb-6">I need nightlife-ready visuals for my DJ brand, events, and mixes.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore DJ playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Lawyer+%26+Law+Firm" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Lawyer & Law Firm — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Lawyer & Law Firm</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Lawyer & Law Firm</h3><p class="text-gray-600 mb-4 md:mb-6">I want a law brand that feels authoritative, clear, and client-friendly.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Lawyer & Law Firm playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Medical+Lab" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Medical Lab — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Medical Lab</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Medical Lab</h3><p class="text-gray-600 mb-4 md:mb-6">I need a clinical brand that communicates accuracy, innovation, and care.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Medical Lab playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Musician" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Musician — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Musician</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Musician</h3><p class="text-gray-600 mb-4 md:mb-6">I need a solo artist brand that connects my music, visuals, and story.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Musician playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Motivational+Speaker" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Motivational Speaker — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Motivational Speaker</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Motivational Speaker</h3><p class="text-gray-600 mb-4 md:mb-6">I want a speaking brand that fills rooms and sells programs.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Motivational Speaker playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/News+Personality" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for News Personality — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">News Personality</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for News Personality</h3><p class="text-gray-600 mb-4 md:mb-6">I need a news brand that reflects authority, clarity, and timeliness.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore News Personality playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Photographer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Photographer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Photographer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Photographer</h3><p class="text-gray-600 mb-4 md:mb-6">I want my photography brand to feel as curated as my portfolio.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Photographer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Politician" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Politician — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Politician</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Politician</h3><p class="text-gray-600 mb-4 md:mb-6">I need a campaign and office brand that communicates trust and a clear agenda.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Politician playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Producer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Producer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Producer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Producer</h3><p class="text-gray-600 mb-4 md:mb-6">I want a producer brand that ties together my film, music, or media projects.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Producer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Just+For+Fun" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Just For Fun — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Just For Fun</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Just For Fun</h3><p class="text-gray-600 mb-4 md:mb-6">I want playful, low-pressure branding for content I create just because I enjoy it.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Just For Fun playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Art" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Art — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Art</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Art</h3><p class="text-gray-600 mb-4 md:mb-6">I need an art brand that helps my work find the right audience.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Art playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Bar" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Bar — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Bar</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Bar</h3><p class="text-gray-600 mb-4 md:mb-6">I want bar branding that makes every night and event feel like an occasion.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Bar playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Car+Dealership" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Car Dealership — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Car Dealership</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Car Dealership</h3><p class="text-gray-600 mb-4 md:mb-6">I need dealership branding that builds trust and drives showroom and online leads.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Car Dealership playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Car+Rental" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Car Rental — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Car Rental</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Car Rental</h3><p class="text-gray-600 mb-4 md:mb-6">I want a car rental brand that feels seamless, convenient, and reliable.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Car Rental playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Performance+Art+Theater" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Performance Art Theater — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Performance Art Theater</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Performance Art Theater</h3><p class="text-gray-600 mb-4 md:mb-6">I need theatre branding that sells tickets and showcases our performances.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Performance Art Theater playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Scientist" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Scientist — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Scientist</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Scientist</h3><p class="text-gray-600 mb-4 md:mb-6">I want a science communication brand that makes my research more accessible.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Scientist playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Concert+Tour" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Concert Tour — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Concert Tour</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Concert Tour</h3><p class="text-gray-600 mb-4 md:mb-6">I need tour branding that ties together every show, city, and announcement.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Concert Tour playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Bus+Line" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Bus Line — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Bus Line</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Bus Line</h3><p class="text-gray-600 mb-4 md:mb-6">I want transit branding that makes routes and services easy to recognize.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Bus Line playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Writer" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Writer — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Writer</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Writer</h3><p class="text-gray-600 mb-4 md:mb-6">I need a writing brand that stays consistent across client work and personal projects.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Writer playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Tax+Preparation+Service" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Tax Preparation Service — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Tax Preparation Service</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Tax Preparation Service</h3><p class="text-gray-600 mb-4 md:mb-6">I want a financial services brand that looks precise, compliant, and approachable.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Tax Preparation Service playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Toy+Store" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Toy Store — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Toy Store</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Toy Store</h3><p class="text-gray-600 mb-4 md:mb-6">I want toy store branding that feels joyful to kids and trustworthy to parents.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Toy Store playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a><a href="https://www.thebrand.ai/industry/Personal" class="group bg-gray-50 border border-gray-200 rounded-2xl p-6 md:p-8 shadow-sm hover:shadow-xl hover:-translate-y-2 transition-all duration-300 flex flex-col justify-between" aria-label="Brand AI for Personal — industry landing page"><div><div class="flex items-center justify-between mb-4"><span class="inline-flex items-center px-3 py-1 rounded-full text-xs font-semibold uppercase tracking-tight bg-cyan-100 text-brand-cyan">Personal</span><span class="text-sm text-gray-500">Industry playbook</span></div><h3 class="text-xl md:text-2xl font-bold mb-2 text-gray-800 group-hover:text-brand-cyan transition-colors">Brand AI for Personal</h3><p class="text-gray-600 mb-4 md:mb-6">I want a simple, personal brand that pulls my life, work, and hobbies together.</p></div><span class="inline-flex items-center text-sm font-semibold text-brand-cyan">Explore Personal playbook<svg class="w-4 h-4 ml-2" viewBox="0 0 24 24" fill="none" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span></a></div>
</section>
<section class="py-20 md:py-28">
<div class="container mx-auto px-6"><h2 class="text-4xl md:text-5xl font-bold text-center mb-12">Your
brand's entire ecosystem, connected.</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(26, 35, 126);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Define your Brand
Identity</h3>
<p class="text-lg opacity-90 mb-6">A central hub to build, manage, and evolve your
unique brand identity as you scale.</p><a
href="https://www.thebrand.ai/i/account/build_brand"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Build
My Brand</a></div>
<div class="absolute inset-0 z-0"><img alt="Define your Brand Identity"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="index_files/284-800x600.jpg">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(0, 38, 62);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">End-to-end
platform for large organizations</h3>
<p class="text-lg opacity-90 mb-6">Scale brand consistency with enterprise-grade tools,
security, and support for large organizations.</p><a href="#"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Explore
Enterprise</a></div>
<div class="absolute inset-0 z-0"><img alt="End-to-end platform for large organizations"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="index_files/622-800x600.jpg">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 min-h-[480px] md:min-h-[520px]"
style="background-color: rgb(1, 87, 155);">
<div class="z-10 relative"><h3 class="text-3xl md:text-4xl font-bold mb-4">Unlock Growth
with Insight Journeys</h3>
<p class="text-lg opacity-90 mb-6">Explore expert-led journeys to transform your
startup's growth, overcome challenges, and achieve success.</p><a
href="https://www.thebrand.ai/insights/dashboard?feature=browsejourneys"
class="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block">Discover
Your Path</a></div>
<div class="absolute inset-0 z-0"><img alt="Unlock Growth with Insight Journeys"
class="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"
src="index_files/898-800x600.jpg">
<div class="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
</div>
</div>
</section>
<!-- Templates section: React mounts only here -->
<section class="py-20 md:py-28">
<div id="templates-root"></div>
</section>
</main>
<script>
(function() {
var root = document.getElementById('templates-root');
if (!root) return;
// Image configuration and dynamic resolution
var IMAGES_CONFIG = {
pexelsApiKey: 'SnJeKdzoLJiTT1Ge8rud21n5uvhWZPBTT0I9AwBtNSyG1pQLAJA5sRqh',
pixabayApiKey: '33011976-8e54c670d386b82f432cf1381'
};
var LOCAL_IMAGES = [
'index_files/192-400x300.jpg',
'index_files/1024-400x300.jpg',
'index_files/626-400x300.jpg',
'index_files/682-400x300.jpg',
'index_files/888-400x300.jpg'
];
function pickImage(label) {
var s = (label || '');
var hash = 0;
for (var i = 0; i < s.length; i++) {
hash = (hash * 31 + s.charCodeAt(i)) >>> 0;
}
return LOCAL_IMAGES[hash % LOCAL_IMAGES.length];
}
// Load images.json if present and build an index
var imagesIndex = null; // normalized as { [label]: { url?: string, query?: string, provider?: 'pexels'|'pixabay' } }
function normalizeImagesJson(data) {
var index = {};
if (!data) return index;
if (Array.isArray(data)) {
data.forEach(function(item){
if (!item) return;
var key = item.label || item.name || item.title;
if (!key) return;
var obj = {};
if (typeof item === 'string') {
obj.url = item;
}
if (item.url || item.imageUrl) obj.url = item.url || item.imageUrl;
if (item.query || item.search || item.keyword) obj.query = item.query || item.search || item.keyword;
if (item.provider) obj.provider = item.provider;
index[key] = obj;
});
} else if (typeof data === 'object') {
Object.keys(data).forEach(function(k){
var v = data[k];
var obj = {};
if (typeof v === 'string') { obj.url = v; }
else if (typeof v === 'object' && v) {
if (v.url || v.imageUrl) obj.url = v.url || v.imageUrl;
if (v.query || v.search || v.keyword) obj.query = v.query || v.search || v.keyword;
if (v.provider) obj.provider = v.provider;
}
index[k] = obj;
});
}
return index;
}
function loadImagesIndex() {
return fetch('/images.json')
.then(function(r){ return r.ok ? r.json() : null; })
.then(function(j){ imagesIndex = normalizeImagesJson(j); })
.catch(function(){ imagesIndex = {}; });
}
// Resolve an image for a given label, with caching and API fallback
function cacheGet(label) {
try {
var raw = localStorage.getItem('templateImg:' + label);
if (!raw) return null;
var obj = JSON.parse(raw);
// 7 days TTL
if (obj && obj.url && obj.ts && (Date.now() - obj.ts) < 7*24*60*60*1000) return obj.url;
} catch(_) {}
return null;
}
function cacheSet(label, url) {
try {
localStorage.setItem('templateImg:' + label, JSON.stringify({ url: url, ts: Date.now() }));
} catch(_) {}
}
function fetchFromPexels(query) {
if (!IMAGES_CONFIG.pexelsApiKey) return Promise.reject(new Error('Missing Pexels API key'));
var url = 'https://api.pexels.com/v1/search?per_page=1&query=' + encodeURIComponent(query);
return fetch(url, { headers: { Authorization: IMAGES_CONFIG.pexelsApiKey } })
.then(function(r){ if (!r.ok) throw new Error('Pexels fetch failed'); return r.json(); })
.then(function(j){
var p = j && j.photos && j.photos[0];
var src = p && p.src;
return (src && (src.landscape || src.large || src.medium)) || null;
});
}
function fetchFromPixabay(query) {
if (!IMAGES_CONFIG.pixabayApiKey) return Promise.reject(new Error('Missing Pixabay API key'));
var url = 'https://pixabay.com/api/?image_type=photo&per_page=3&key=' + encodeURIComponent(IMAGES_CONFIG.pixabayApiKey) + '&q=' + encodeURIComponent(query);
return fetch(url)
.then(function(r){ if (!r.ok) throw new Error('Pixabay fetch failed'); return r.json(); })
.then(function(j){
var h = j && j.hits && j.hits[0];
return (h && (h.largeImageURL || h.webformatURL)) || null;
});
}
function resolveImage(label) {
// 1) localStorage cache
var cached = cacheGet(label);
if (cached) return Promise.resolve(cached);
var idx = imagesIndex || {};
var entry = idx[label];
// 2) images.json direct url
if (entry && entry.url) {
cacheSet(label, entry.url);
return Promise.resolve(entry.url);
}
// 3) Query via provider
var query = (entry && entry.query) || label;
var provider = (entry && entry.provider) || 'pexels';
var promise = (provider === 'pixabay') ? fetchFromPixabay(query) : fetchFromPexels(query);
return promise
.catch(function(){
// Fallback to the other provider
return (provider === 'pixabay') ? fetchFromPexels(query) : fetchFromPixabay(query);
})
.then(function(url){
if (url) {
cacheSet(label, url);
return url;
}
// Final local fallback
return pickImage(label);
});
}
function sortCategories(list) {
return list.slice().sort(function(a, b) {
var an = (a && a.label) || '';
var bn = (b && b.label) || '';
if (an === 'Social Media') return -1;
if (bn === 'Social Media') return 1;
return an.localeCompare(bn);
});
}
function render(categories, activeLabel) {
root.innerHTML = '';
var container = document.createElement('div');
container.className = 'container mx-auto px-6';
var header = document.createElement('div');
header.className = 'text-center mb-12';
var h2 = document.createElement('h2');
h2.className = 'text-4xl md:text-5xl font-bold mb-4';
h2.textContent = 'Templates for absolutely anything';
var p = document.createElement('p');
p.className = 'text-lg md:text-xl text-gray-600 max-w-2xl mx-auto';
p.textContent = 'Jumpstart your next project with thousands of professional templates.';
header.appendChild(h2);
header.appendChild(p);
var tabs = document.createElement('div');
tabs.className = 'flex flex-wrap justify-center gap-2 md:gap-4 mb-10';
categories.forEach(function(cat) {
var isActive = activeLabel === cat.label;
var btn = document.createElement('button');
btn.type = 'button';
btn.className = 'py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base ' +
(isActive ? 'bg-brand-cyan text-white shadow-lg transform scale-105' : 'bg-gray-200 text-gray-700 hover:bg-gray-300');
btn.textContent = cat.label;
btn.setAttribute('data-label', cat.label);
btn.setAttribute('aria-pressed', isActive ? 'true' : 'false');
tabs.appendChild(btn);
});
var grid = document.createElement('div');
grid.className = 'grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-6 md:gap-8';
var activeCategory = categories.find(function(c) { return c.label === activeLabel; });
var items = [];
if (activeCategory) {
if (Array.isArray(activeCategory.children)) items = activeCategory.children;
else if (Array.isArray(activeCategory.templates)) items = activeCategory.templates;
}
items.forEach(function(child) {
var a = document.createElement('a');
a.href = child.url;
a.className = 'block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1';
var wrap = document.createElement('div');
wrap.className = 'relative aspect-[4/3] overflow-hidden';
var img = document.createElement('img');
// Start with a local placeholder, then resolve asynchronously
img.src = pickImage(child.label);
img.alt = child.label;
img.loading = 'lazy';
img.decoding = 'async';
img.className = 'w-full h-full object-cover group-hover:scale-105 transition-transform duration-300';
var overlay = document.createElement('div');
overlay.className = 'absolute inset-0 bg-black bg-opacity-10 group-hover:bg-opacity-0 transition-all duration-300';
wrap.appendChild(img);
wrap.appendChild(overlay);
var body = document.createElement('div');
body.className = 'p-3';
var h4 = document.createElement('h4');
h4.className = 'text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300';
h4.textContent = child.label;
body.appendChild(h4);
a.appendChild(wrap);
a.appendChild(body);
grid.appendChild(a);
// Resolve improved image from images.json / Pexels / Pixabay
resolveImage(child.label).then(function(url){
if (url) img.src = url;
}).catch(function(){ /* keep placeholder */ });
});
container.appendChild(header);
container.appendChild(tabs);
container.appendChild(grid);
root.appendChild(container);
tabs.addEventListener('click', function(e) {
var target = e.target;
if (target && target.matches('button[data-label]')) {
var next = target.getAttribute('data-label');
render(categories, next);
}
});
}
// First load images index, then categories
loadImagesIndex().then(function(){
return fetch('/categories.json')
.then(function(r) { return r.ok ? r.json() : Promise.reject(new Error('Failed to load categories.json')); })
.then(function(data) {
var list = Array.isArray(data) ? data : [];
var sorted = sortCategories(list);
var defaultLabel = sorted.find(function(c) { return c.label === 'Social Media'; }) ? 'Social Media' : (sorted[0] ? sorted[0].label : null);
render(sorted, defaultLabel);
})
.catch(function(err) {
root.innerHTML = '<div class="container mx-auto px-6 py-12 text-center text-red-600">Failed to load templates.</div>';
});
});
})();
</script>
<footer class="bg-brand-midnight text-white">
<!-- Dashboard-style "Why teams choose" + pre-footer CTA injected above footer -->
<div style="background:#f9fafb;padding:80px 0;">
<div class="container mx-auto px-6">
<div class="text-center mb-12">
<div class="dash-section-label" style="margin-bottom:16px;">✓ Why fast-moving teams choose Brand AI</div>
<h2 class="text-4xl md:text-5xl font-bold mb-4">Your brand deserves a real system.</h2>
<p class="text-lg text-gray-600 max-w-2xl mx-auto">Stop patching together Canva, Google Drive, Slack, and spreadsheets. Brand AI gives your team one workspace.</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 max-w-4xl mx-auto">
<div class="dash-card-hover dash-module-card">
<div class="dash-pillar-row" style="border-bottom:none;padding:0;">
<div class="dash-pillar-check" style="background:rgba(3,190,243,0.12);">✓</div>
<div>
<h4 style="font-weight:700;font-size:1rem;margin-bottom:4px;">Real-Time Team Collaboration</h4>
<p style="font-size:0.88rem;color:#6b7280;line-height:1.6;">Create teams, assign roles, and co-create without version conflicts. Everyone sees the latest—always.</p>
</div>
</div>
</div>
<div class="dash-card-hover dash-module-card">
<div class="dash-pillar-row" style="border-bottom:none;padding:0;">
<div class="dash-pillar-check" style="background:rgba(3,190,243,0.12);">✓</div>
<div>
<h4 style="font-weight:700;font-size:1rem;margin-bottom:4px;">Centralized Asset Intelligence</h4>
<p style="font-size:0.88rem;color:#6b7280;line-height:1.6;">Tagged, searchable, curated—your media library surfaces the right asset in seconds. Save up to 60% design time.</p>
</div>
</div>
</div>
<div class="dash-card-hover dash-module-card">
<div class="dash-pillar-row" style="border-bottom:none;padding:0;">
<div class="dash-pillar-check" style="background:rgba(3,190,243,0.12);">✓</div>
<div>
<h4 style="font-weight:700;font-size:1rem;margin-bottom:4px;">Brand Standards at Any Scale</h4>
<p style="font-size:0.88rem;color:#6b7280;line-height:1.6;">A living Brand Kit that every template, design, and export pulls from. Hire a new designer? On-brand from day one.</p>
</div>
</div>
</div>
<div class="dash-card-hover dash-module-card">
<div class="dash-pillar-row" style="border-bottom:none;padding:0;">
<div class="dash-pillar-check" style="background:rgba(3,190,243,0.12);">✓</div>
<div>
<h4 style="font-weight:700;font-size:1rem;margin-bottom:4px;">Data-Driven Brand Decisions</h4>
<p style="font-size:0.88rem;color:#6b7280;line-height:1.6;">Brand 360 replaces gut-feel with real brand data. Know exactly what's working and what to fix.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Dashboard-style pre-footer CTA -->
<div style="background:#0b0f29;padding:80px 0;text-align:center;position:relative;overflow:hidden;">
<div style="position:absolute;top:-40%;left:-20%;width:60%;height:80%;border-radius:50%;background:radial-gradient(circle,rgba(3,190,243,0.12),transparent);pointer-events:none;"></div>
<div style="position:absolute;bottom:-40%;right:-20%;width:60%;height:80%;border-radius:50%;background:radial-gradient(circle,rgba(255,0,168,0.08),transparent);pointer-events:none;"></div>
<div class="container mx-auto px-6" style="position:relative;z-index:1;">
<div class="dash-hero-badge" style="margin-bottom:20px;">✨ Join 36,000+ marketers who ship on-brand, every time</div>
<h2 style="font-size:2.8rem;font-weight:800;color:#fff;margin-bottom:16px;line-height:1.2;">Your brand deserves<br><span class="dash-grad-heading">a real system.</span></h2>
<p style="color:rgba(255,255,255,0.65);font-size:1.1rem;max-width:600px;margin:0 auto 32px;">One workspace. Total control. Ship on-brand content 3× faster—starting today.</p>
<div style="display:flex;flex-wrap:wrap;justify-content:center;gap:16px;">
<a href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home" style="background:#03bef3;color:#0b0f29;font-weight:800;padding:14px 36px;border-radius:10px;font-size:1.05rem;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:opacity .2s;" onmouseover="this.style.opacity='.88'" onmouseout="this.style.opacity='1'">🚀 Start Building Free — No Card Needed</a>
<a href="https://www.thebrand.ai/wowX/tools" class="dash-cta-glass">🔧 Explore Brand Pro</a>
</div>
<p style="margin-top:18px;font-size:0.78rem;color:rgba(255,255,255,0.35);">Free plan forever · Setup in 5 minutes · Cancel anytime</p>
</div>
</div>
<div class="dash-glow-divider"></div>
<div class="container mx-auto px-6 py-12">
<div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-8">
<div class="col-span-2 lg:col-span-1"><a href="https://www.thebrand.ai" aria-label="Brand AI Homepage">
<img src="https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png" width="110" height="30" >
</a>
<p class="mt-4 text-gray-400">Your vision, amplified.</p></div>
<div><h3 class="font-bold uppercase text-gray-400">Features</h3>
<ul class="mt-4 space-y-2">
<li><a href="https://www.thebrand.ai/brandcreator/index"
class="text-gray-300 hover:text-brand-cyan transition-colors">Brand Creator</a></li>
<li><a href="https://www.thebrand.ai/i/account/designs"
class="text-gray-300 hover:text-brand-cyan transition-colors">My Designs</a></li>
<li><a href="https://www.thebrand.ai/i"
class="text-gray-300 hover:text-brand-cyan transition-colors">Templates</a></li>
<li><a href="https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit"
class="text-gray-300 hover:text-brand-cyan transition-colors">Brand Toolkit</a></li>
</ul>
</div>
<div><h3 class="font-bold uppercase text-gray-400">Resources</h3>
<ul class="mt-4 space-y-2">
<li><a href="https://www.thebrand.ai/insights/"
class="text-gray-300 hover:text-brand-cyan transition-colors">Insights</a></li>
<li><a href="https://www.thebrand.ai/blogs"
class="text-gray-300 hover:text-brand-cyan transition-colors">Blogs</a></li>
<li><a href="https://www.thebrand.ai/insights/dashboard?feature=browsejourneys"
class="text-gray-300 hover:text-brand-cyan transition-colors">Brand Journeys</a></li>
<li><a href="https://www.thebrand.ai/sites/index"
class="text-gray-300 hover:text-brand-cyan transition-colors">Sites</a></li>
</ul>
</div>
<div><h3 class="font-bold uppercase text-gray-400">Account</h3>
<ul class="mt-4 space-y-2">
<li><a href="https://www.thebrand.ai/i/account/build_brand"
class="text-gray-300 hover:text-brand-cyan transition-colors">My Brand Identity</a>
</li>
<li><a href="#" class="text-gray-300 hover:text-brand-cyan transition-colors">Update Brand
Details</a></li>
<li><a href="https://www.thebrand.ai/insights/auth-onboard"
class="text-gray-300 hover:text-brand-cyan transition-colors">Onboarding</a></li>
</ul>
</div>
<div><h3 class="font-bold uppercase text-gray-400">Company</h3>
<ul class="mt-4 space-y-2">
<li><a href="#" class="text-gray-300 hover:text-brand-cyan transition-colors">About Us</a>
</li>
<li><a href="https://www.thebrand.ai/i/contact"
class="text-gray-300 hover:text-brand-cyan transition-colors">Contact Us</a></li>
<li><a href="#" class="text-gray-300 hover:text-brand-cyan transition-colors">Careers</a>
</li>
</ul>
</div>
</div>
<div class="mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center">
<p class="text-gray-400">© 2025 Brand AI. All rights reserved.</p>
<div class="flex space-x-4 mt-4 md:mt-0"><a href="https://facebook.com/TheBrandApp"
class="text-gray-400 hover:text-brand-cyan transition-colors"
aria-label="Facebook"><span
class="sr-only">Facebook</span>
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clip-rule="evenodd"></path>
</svg>
</a><a href="https://twitter.com/thebrandhq"
class="text-gray-400 hover:text-brand-cyan transition-colors" aria-label="Twitter"><span
class="sr-only">Twitter</span>
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.71v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"></path>
</svg>
</a><a href="https://www.instagram.com/thebrandapp"
class="text-gray-400 hover:text-brand-cyan transition-colors" aria-label="Instagram"><span
class="sr-only">Instagram</span>
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fill-rule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.024.06 1.378.06 3.808s-.012 2.784-.06 3.808c-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.024.048-1.378.06-3.808.06s-2.784-.012-3.808-.06c-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.048-1.024-.06-1.378-.06-3.808s.012-2.784.06-3.808c.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 016.08 2.525c.636-.247 1.363-.416 2.427-.465C9.53 2.013 9.884 2 12.315 2zM12 7.044c-2.583 0-4.666 2.083-4.666 4.666s2.083 4.666 4.666 4.666 4.666-2.083 4.666-4.666S14.583 7.044 12 7.044zm0 7.666c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zm4.917-7.916a1.146 1.146 0 100-2.292 1.146 1.146 0 000 2.292z"
clip-rule="evenodd"></path>
</svg>
</a><a href="https://www.linkedin.com/company/the-brand-app"
class="text-gray-400 hover:text-brand-cyan transition-colors" aria-label="LinkedIn"><span
class="sr-only">LinkedIn</span>
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"></path>
</svg>
</a></div>
</div>
</div>
</footer>
</div>
</div>
<script type="text/plain" data-disabled="true">
import React, {useState} from 'react';
import ReactDOM from 'react-dom/client';
// --- START OF constants.tsx ---
const FEATURES_PRIMARY = [
{
title: 'Bring Your Brand to Life with Brand Creator',
description: 'Quickly and effortlessly create a powerful, professional brand identity and logos that stand out and drive business growth.',
link: 'https://www.thebrand.ai/brandcreator/index',
buttonText: 'Explore Brand Creator',
imageUrl: 'https://picsum.photos/seed/branding-desk/1200/800',
bgColor: '#1E003B', // Deep Purple/Indigo
},
{
title: 'Revolutionize Your Brand with AI Insights',
description: 'Supercharge your brand with intelligent solutions, design, and big data to drive growth, engagement, and measurable success.',
link: 'https://www.thebrand.ai/insights/',
buttonText: 'Explore Insights',
imageUrl: 'https://picsum.photos/seed/ai-dashboard/1200/800',
bgColor: '#003D5B', // Dark Cyan/Blue
},
{
title: 'Build a Website Easily with Brand Sites',
description: 'Choose from over 100 amazing templates to build a stunning website that empowers your brand to stand out.',
link: 'https://www.thebrand.ai/sites/index',
buttonText: 'Explore Brand Sites',
imageUrl: 'https://picsum.photos/seed/web-design/1200/800',
bgColor: '#004C4C', // Dark Teal
},
];
const FEATURES_SECONDARY = [
{
title: 'Meet the Visual Suite',
description: 'Your entire workflow in one place. From bespoke designs and insightful blogs to tailored strategies—all powered by AI.',
link: 'https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit',
buttonText: 'Explore Visual Suite',
imageUrl: 'https://picsum.photos/seed/creative-workspace/1200/800',
bgColor: '#3D004F', // Dark Magenta/Purple
size: 'large',
},
{
title: 'Present with impact',
description: 'Reimagine presentations with cinematic visuals, smart collaboration, and AI-powered tools.',
link: 'https://www.thebrand.ai/i/designs',
buttonText: 'Try Presentations',
imageUrl: 'https://picsum.photos/seed/presentation-stage/1200/800',
bgColor: '#005F58', // Deep Teal/Green
size: 'large',
},
];
const FEATURES_TERTIARY = [
{
title: 'Define your Brand Identity',
description: 'A central hub to build, manage, and evolve your unique brand identity as you scale.',
link: 'https://www.thebrand.ai/i/account/build_brand',
buttonText: 'Build My Brand',
imageUrl: 'https://picsum.photos/seed/brand-guide/800/600',
bgColor: '#1A237E', // Dark Indigo
},
{
title: 'End-to-end platform for large organizations',
description: 'Scale brand consistency with enterprise-grade tools, security, and support for large organizations.',
link: '#',
buttonText: 'Explore Enterprise',
imageUrl: 'https://picsum.photos/seed/corporate-dash/800/600',
bgColor: '#00263E', // Very Dark Blue
},
{
title: 'Unlock Growth with Insight Journeys',
description: "Explore expert-led journeys to transform your startup's growth, overcome challenges, and achieve success.",
link: 'https://www.thebrand.ai/insights/dashboard?feature=browsejourneys',
buttonText: 'Discover Your Path',
imageUrl: 'https://picsum.photos/seed/growth-path/800/600',
bgColor: '#01579B', // Light Blue
},
];
const CostIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round"
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 10v-1m-5.293-6.293l-.707.707M17.293 7.707l.707-.707M5.707 16.293l.707.707M16.586 17H19a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2.414"/>
</svg>
);
const TimeIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
);
const ToolsIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-10 w-10" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round"
d="M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a2 2 0 110-4h1a1 1 0 001-1V7a1 1 0 011-1h3a1 1 0 001-1V4z"/>
</svg>
);
const PROBLEM_CARDS = [
{
icon: <CostIcon/>,
title: 'Agency-Level Budgets',
description: 'SMEs and governments need top-tier strategy but lack the budget for expensive agencies.'
},
{
icon: <TimeIcon/>,
title: 'Months of Guesswork',
description: 'Founders and marketers waste precious time guessing their next move instead of acting on clear insights.'
},
{
icon: <ToolsIcon/>,
title: 'Juggling a Dozen Tools',
description: 'Creatives juggle multiple, disconnected tools to create a single campaign, with none of them talking to each other.'
}
];
const SmeIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round"
d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0v-4m0 4h5m0 0v-4m0 4h5m-5-4v-5h5v5h-5z"/>
</svg>
);
const GovernmentIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round"
d="M12 21l-2-2m2 2l2-2m2 2l2-2M5 15l-2-2m2 2l2-2m2 2l2-2m2 2l2-2M5 21v-6a2 2 0 012-2h10a2 2 0 012 2v6"/>
<path strokeLinecap="round" strokeLinejoin="round" d="M3 21h18M5 10l7-7 7 7"/>
</svg>
);
const StartupIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round" d="M13 10V3L4 14h7v7l9-11h-7z"/>
</svg>
);
const MarketerIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round" d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"/>
<path strokeLinecap="round" strokeLinejoin="round" d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"/>
</svg>
);
const CorporateIcon = () => (
<svg xmlns="http://www.w3.org/2000/svg" className="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" strokeWidth={2}>
<path strokeLinecap="round" strokeLinejoin="round"
d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0v-4m0 4h5m0 0v-4m0 4h5m-5-4V5h5v7h-5z"/>
</svg>
);
const TARGET_MARKETS = [
{icon: <SmeIcon/>, name: 'SMEs'},
{icon: <GovernmentIcon/>, name: 'Governments'},
{icon: <StartupIcon/>, name: 'Startups'},
{icon: <MarketerIcon/>, name: 'Marketers'},
{icon: <CorporateIcon/>, name: 'Corporations'},
];
const FacebookIcon = () => (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"/>
</svg>
);
const TwitterIcon = () => (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.71v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"/>
</svg>
);
const InstagramIcon = () => (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path fillRule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.024.06 1.378.06 3.808s-.012 2.784-.06 3.808c-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.024.048-1.378.06-3.808.06s-2.784-.012-3.808-.06c-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.048-1.024-.06-1.378-.06-3.808s.012-2.784.06-3.808c.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 016.08 2.525c.636-.247 1.363-.416 2.427-.465C9.53 2.013 9.884 2 12.315 2zM12 7.044c-2.583 0-4.666 2.083-4.666 4.666s2.083 4.666 4.666 4.666 4.666-2.083 4.666-4.666S14.583 7.044 12 7.044zm0 7.666c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zm4.917-7.916a1.146 1.146 0 100-2.292 1.146 1.146 0 000 2.292z"
clipRule="evenodd"/>
</svg>
);
const LinkedInIcon = () => (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path
d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/>
</svg>
);
const TEMPLATE_CATEGORIES = [
{
category: 'Social Media',
templates: [
{title: "Facebook Post", url: "https://www.thebrand.ai/i/social-media/facebook-post"},
{title: "Instagram Post", url: "https://www.thebrand.ai/i/social-media/instagram-posts"},
{title: "Instagram Story", url: "https://www.thebrand.ai/i/social-media/instagram-story"},
{title: "LinkedIn Post", url: "https://www.thebrand.ai/i/social-media/linkedin-post"},
{title: "Twitter Post", url: "https://www.thebrand.ai/i/social-media/twitter"},
{title: "Pinterest Pin", url: "https://www.thebrand.ai/i/social-media/pinterest-pin-graphic-templates"},
{title: "IGTV Cover", url: "https://www.thebrand.ai/i/social-media/igtv-cover"},
{title: "Highlight Cover", url: "https://www.thebrand.ai/i/social-media/instagram-highlight-cover"},
{title: "YouTube Graphics", url: "https://www.thebrand.ai/i/social-media/youtube-graphic-templates"},
{title: "Twitch Graphics", url: "https://www.thebrand.ai/i/social-media/online-streaming"},
]
},
{
category: 'Invites & Cards',
templates: [
{title: "Business Card", url: "https://www.thebrand.ai/i/invites-and-cards/business-card-85x55mm"},
{title: "US Business Card", url: "https://www.thebrand.ai/i/invites-and-cards/business-card-us"},
{title: "Greeting Card", url: "https://www.thebrand.ai/i/invites-and-cards/card"},
{title: "Invitation", url: "https://www.thebrand.ai/i/invites-and-cards/invitation-13.9x10.7cm"},
]
},
{
category: 'Documents',
templates: [
{title: "Presentation 16:9", url: "https://www.thebrand.ai/i/documents/presentation-16-9"},
{title: "Resume", url: "https://www.thebrand.ai/i/documents/resume"},
{title: "Letterhead A4", url: "https://www.thebrand.ai/i/documents/letterhead-a4"},
{title: "Proposal A4", url: "https://www.thebrand.ai/i/documents/proposal-a4"},
{title: "Flyer A4", url: "https://www.thebrand.ai/i/documents/flyer-a4"},
{title: "Newsletter", url: "https://www.thebrand.ai/i/documents/newsletter"},
{title: "Invoice A4", url: "https://www.thebrand.ai/i/documents/invoice-a4"},
{title: "Report A4", url: "https://www.thebrand.ai/i/documents/report-a4"},
{title: "Certificate", url: "https://www.thebrand.ai/i/documents/certificate"},
{title: "Menu A4", url: "https://www.thebrand.ai/i/documents/menu-a4"},
{title: "Checklist", url: "https://www.thebrand.ai/i/documents/checklist"},
{title: "Schedule", url: "https://www.thebrand.ai/i/documents/schedule"},
{title: "Workbook", url: "https://www.thebrand.ai/i/documents/workbook"},
{title: "eBook", url: "https://www.thebrand.ai/i/documents/ebook"},
{title: "Whitepaper", url: "https://www.thebrand.ai/i/documents/whitepaper"},
]
},
{
category: 'Advertising',
templates: [
{title: "Poster", url: "https://www.thebrand.ai/i/advertising/poster-a3"},
{title: "Banner", url: "https://www.thebrand.ai/i/advertising/banner-2x6ft"},
{title: "Billboard", url: "https://www.thebrand.ai/i/advertising/billboard"},
{title: "Flyer", url: "https://www.thebrand.ai/i/advertising/flyer-us"},
{title: "Yard Sign", url: "https://www.thebrand.ai/i/advertising/yard-sign"},
{title: "Roll-up Banner", url: "https://www.thebrand.ai/i/advertising/roll-up-banner"},
{title: "Brochure", url: "https://www.thebrand.ai/i/advertising/brochure"},
]
},
{
category: 'Covers',
templates: [
{title: "Book Cover", url: "https://www.thebrand.ai/i/covers/book-cover"},
{title: "Magazine Cover", url: "https://www.thebrand.ai/i/covers/magazine-cover"},
{title: "Report Cover", url: "https://www.thebrand.ai/i/covers/report-cover"},
{title: "Planner Cover", url: "https://www.thebrand.ai/i/covers/planner-cover"},
{title: "eBook Cover", url: "https://www.thebrand.ai/i/covers/ebook-cover"},
]
},
];
// --- END OF constants.tsx ---
// --- START OF components/Logo.tsx ---
const Logo = ({className, theme = 'light'}) => {
const theColor = theme === 'dark' ? '#9CA3AF' : '#808080';
const brandColor = theme === 'dark' ? '#FFFFFF' : '#333333';
};
// --- END OF components/Logo.tsx ---
// --- START OF components/Header.tsx ---
const Header = () => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
const navLinks = [
{name: 'Templates', href: 'https://www.thebrand.ai/i'},
{name: 'Brand Creator', href: 'https://www.thebrand.ai/brandcreator/index'},
{name: 'Insights', href: 'https://www.thebrand.ai/insights/'},
{name: 'Blogs', href: 'https://www.thebrand.ai/blogs'},
{name: 'Resources', href: 'https://www.thebrand.ai/wowX/tools'},
{name: 'Pricing', href: 'https://www.thebrand.ai/brandpay/choose'},
];
return (
<header className="bg-white/80 backdrop-blur-sm sticky top-0 z-50 shadow-sm">
<div className="container mx-auto px-6 py-4">
<div className="flex items-center justify-between">
<div className="flex items-center space-x-8">
<a href="/" aria-label="Brand AI Homepage">
<img src="https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png" width="110" height="30" />
</a>
<nav className="hidden md:flex items-center space-x-6">
{navLinks.map((link) => (
<a key={link.name} href={link.href}
className="text-gray-600 hover:text-brand-cyan font-medium transition-colors">
{link.name}
</a>
))}
</nav>
</div>
<div className="hidden md:flex items-center space-x-4">
<a href="https://bit.ly/2LpQJmO" target="_blank" rel="noopener noreferrer"
className="font-semibold text-gray-600 hover:text-brand-cyan transition-colors border border-gray-300 rounded-lg py-2 px-4 text-sm hover:border-brand-cyan">Download
App</a>
<a href="#" className="font-bold text-gray-600 hover:text-brand-cyan transition-colors">Log
in</a>
<a href="#"
className="bg-brand-cyan text-white font-bold py-2 px-4 rounded-lg hover:opacity-90 transition-opacity">Sign
up for free</a>
</div>
<div className="md:hidden">
<button onClick={() => setIsMenuOpen(!isMenuOpen)}
className="text-gray-800 focus:outline-none" aria-label="Toggle menu">
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2"
d={isMenuOpen ? "M6 18L18 6M6 6l12 12" : "M4 6h16M4 12h16M4 18h16"}></path>
</svg>
</button>
</div>
</div>
{isMenuOpen && (
<div className="md:hidden mt-4">
<nav className="flex flex-col space-y-4">
{navLinks.map((link) => (
<a key={link.name} href={link.href}
className="text-gray-600 hover:text-brand-cyan font-medium transition-colors">
{link.name}
</a>
))}
<div className="flex flex-col space-y-3 pt-4 border-t">
<a href="https://bit.ly/2LpQJmO" target="_blank" rel="noopener noreferrer"
className="w-full text-center border border-gray-300 text-gray-600 font-bold py-2 px-4 rounded-lg hover:border-brand-cyan hover:text-brand-cyan transition-colors">Download
App</a>
<a href="#"
className="font-bold text-gray-600 hover:text-brand-cyan transition-colors">Log
in</a>
<a href="#"
className="w-full text-center bg-brand-cyan text-white font-bold py-2 px-4 rounded-lg hover:opacity-90 transition-opacity">Sign
up for free</a>
</div>
</nav>
</div>
)}
</div>
</header>
);
};
// --- END OF components/Header.tsx ---
// --- START OF components/Footer.tsx ---
const Footer = () => {
const socialLinks = [
{name: 'Facebook', href: 'https://facebook.com/TheBrandApp', icon: <FacebookIcon/>},
{name: 'Twitter', href: 'https://twitter.com/thebrandhq', icon: <TwitterIcon/>},
{name: 'Instagram', href: 'https://www.instagram.com/thebrandapp', icon: <InstagramIcon/>},
{name: 'LinkedIn', href: 'https://www.linkedin.com/company/the-brand-app', icon: <LinkedInIcon/>},
];
const footerSections = [
{
title: 'Features',
links: [
{name: 'Brand Creator', href: 'https://www.thebrand.ai/brandcreator/index'},
{name: 'My Designs', href: 'https://www.thebrand.ai/i/account/designs'},
{name: 'Templates', href: 'https://www.thebrand.ai/i/designs'},
{name: 'Brand Toolkit', href: 'https://www.thebrand.ai/insights/dashboard?feature=brandtoolkit'},
],
},
{
title: 'Resources',
links: [
{name: 'Insights', href: 'https://www.thebrand.ai/insights/'},
{name: 'Blogs', href: 'https://www.thebrand.ai/blogs'},
{name: 'Brand Journeys', href: 'https://www.thebrand.ai/insights/dashboard?feature=browsejourneys'},
{name: 'Sites', href: 'https://www.thebrand.ai/sites/index'},
],
},
{
title: 'Account',
links: [
{name: 'My Brand Identity', href: 'https://www.thebrand.ai/i/account/build_brand'},
{name: 'Update Brand Details', href: '#'},
{name: 'Onboarding', href: 'https://www.thebrand.ai/insights/auth-onboard'},
],
},
{
title: 'Company',
links: [
{name: 'About Us', href: '#'},
{name: 'Contact Us', href: 'https://www.thebrand.ai/i/contact'},
{name: 'Careers', href: '#'},
],
},
];
return (
<footer className="bg-brand-midnight text-white">
<div className="container mx-auto px-6 py-12">
<div className="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-8">
<div className="col-span-2 lg:col-span-1">
<a href="/" aria-label="Brand AI Homepage">
<img src="https://www.thebrand.ai/i/uploads/logo/logo_62a4de26e93f0.png" width="110" height="30" />
</a>
<p className="mt-4 text-gray-400">Your vision, amplified.</p>
</div>
{footerSections.map((section) => (
<div key={section.title}>
<h3 className="font-bold uppercase text-gray-400">{section.title}</h3>
<ul className="mt-4 space-y-2">
{section.links.map((link) => (
<li key={link.name}>
<a href={link.href}
className="text-gray-300 hover:text-brand-cyan transition-colors">
{link.name}
</a>
</li>
))}
</ul>
</div>
))}
</div>
<div
className="mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center">
<p className="text-gray-400">© {new Date().getFullYear()} Brand AI. All rights
reserved.</p>
<div className="flex space-x-4 mt-4 md:mt-0">
{socialLinks.map((social) => (
<a key={social.name} href={social.href}
className="text-gray-400 hover:text-brand-cyan transition-colors"
aria-label={social.name}>
<span className="sr-only">{social.name}</span>
{social.icon}
</a>
))}
</div>
</div>
</div>
</footer>
);
};
// --- END OF components/Footer.tsx ---
// --- START OF components/FeatureCard.tsx ---
const FeatureCard = ({
title,
description,
link,
buttonText,
imageUrl,
bgColor,
size = 'normal'
}) => {
const sizeClasses = {
normal: 'min-h-[480px] md:min-h-[520px]',
large: 'min-h-[520px] md:col-span-2 lg:col-span-1', // Special classes can be added here
};
return (
<div
className={`relative rounded-3xl overflow-hidden shadow-lg group text-white p-8 flex flex-col justify-between transition-all duration-500 ease-in-out transform hover:-translate-y-2 ${sizeClasses[size]}`}
style={{backgroundColor: bgColor}}
>
<div className="z-10 relative">
<h3 className="text-3xl md:text-4xl font-bold mb-4">{title}</h3>
{description && <p className="text-lg opacity-90 mb-6">{description}</p>}
<a
href={link}
className="bg-white text-gray-800 font-bold py-2 px-6 rounded-lg text-md hover:bg-gray-200 transition-all duration-300 ease-in-out transform group-hover:-translate-y-1 inline-block"
>
{buttonText}
</a>
</div>
<div className="absolute inset-0 z-0">
<img src={imageUrl} alt={title}
className="w-full h-full object-cover opacity-80 group-hover:opacity-100 group-hover:scale-110 transition-all duration-500 ease-in-out"
loading="lazy" decoding="async"/>
<div
className="absolute inset-0 bg-black bg-opacity-20 group-hover:bg-opacity-10 transition-all duration-500 ease-in-out"></div>
</div>
</div>
);
};
// --- END OF components/FeatureCard.tsx ---
// --- START OF components/TemplateCard.tsx ---
const TemplateCard = ({title, url}) => {
const imageSeed = title.replace(/\s+/g, '-').toLowerCase();
return (
<a
href={url}
className="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1"
>
<div className="relative aspect-[4/3] overflow-hidden">
<img
src={`https://picsum.photos/seed/${imageSeed}/400/300`}
alt={title}
className="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy"
decoding="async"
/>
<div
className="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div className="p-3">
<h4 className="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
{title}
</h4>
</div>
</a>
);
};
// --- END OF components/TemplateCard.tsx ---
// --- START OF components/InteractiveTemplates.tsx ---
const InteractiveTemplates = () => {
const initialCache = (typeof window !== 'undefined' && window.__TEMPLATE_CATEGORIES_CACHE) || [];
const [categories, setCategories] = useState(initialCache);
const hasSocialInit = initialCache.some(cat => cat.category === 'Social Media');
const [activeTab, setActiveTab] = useState(hasSocialInit ? 'Social Media' : (initialCache[0]?.category || 'Social Media'));
const [isLoading, setIsLoading] = useState(initialCache.length === 0);
// Load categories from categories.json and map to local structure
React.useEffect(() => {
if (initialCache.length) { setIsLoading(false); return; }
fetch('categories.json')
.then(res => res.json())
.then(data => {
const mapped = (Array.isArray(data) ? data : []).map(cat => ({
category: cat.label,
templates: (Array.isArray(cat.children) ? cat.children : []).map(child => ({
title: child.label,
url: child.url,
})),
}));
const desiredOrder = [
'Social Media',
'Invites & Cards',
'Documents',
'Advertising',
'Covers',
'More'
];
const filtered = mapped.filter(cat => cat.templates && cat.templates.length);
const ordered = filtered.slice().sort((a, b) => {
const ai = desiredOrder.indexOf(a.category);
const bi = desiredOrder.indexOf(b.category);
if (ai === -1 && bi === -1) return 0;
if (ai === -1) return 1;
if (bi === -1) return -1;
return ai - bi;
});
if (ordered.length) {
setCategories(ordered);
const hasSocial = ordered.some(cat => cat.category === 'Social Media');
setActiveTab(hasSocial ? 'Social Media' : ordered[0].category);
}
window.__TEMPLATE_CATEGORIES_CACHE = ordered;
setIsLoading(false);
})
.catch(() => {
// fallback: keep TEMPLATE_CATEGORIES
setIsLoading(false);
});
}, []);
const activeCategory = categories.find(cat => cat.category === activeTab);
return (
<div className="container mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold mb-4">Templates for absolutely anything</h2>
<p className="text-lg md:text-xl text-gray-600 max-w-2xl mx-auto">
Jumpstart your next project with thousands of professional templates for any occasion.
</p>
<a href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home"
className="mt-8 inline-block bg-brand-cyan text-white font-bold py-3 px-8 rounded-lg text-lg hover:opacity-90 transition-opacity">
Create Your Brand Now
</a>
</div>
<div className="flex flex-wrap justify-center gap-2 md:gap-4 mb-10">
{categories.map(cat => (
<button
key={cat.category}
onClick={() => setActiveTab(cat.category)}
className={`py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base ${
activeTab === cat.category
? 'bg-brand-cyan text-white shadow-lg transform scale-105'
: 'bg-gray-200 text-gray-700 hover:bg-gray-300'
}`}
>
{cat.category}
</button>
))}
</div>
<div
key={activeTab}
className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-6 md:gap-8">
{isLoading
? Array.from({ length: 12 }).map((_, i) => (
<div key={i} className="rounded-lg bg-gray-200 h-40 animate-pulse" />
))
: activeCategory?.templates.map(template => (
<TemplateCard
key={template.url}
title={template.title}
url={template.url}
/>
))}
</div>
</div>
);
};
// --- END OF components/InteractiveTemplates.tsx ---
// --- START OF App.tsx ---
const App = () => {
return (
<div className="bg-white text-gray-800 font-sans">
<Header/>
<main>
{/* Hero Section */}
<section className="relative text-white overflow-hidden bg-brand-midnight">
{/* Stylish Background */}
<div aria-hidden="true" className="absolute inset-0 z-0 opacity-50">
<div
className="absolute top-[-30%] left-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-br from-brand-cyan to-transparent filter blur-3xl"></div>
<div
className="absolute bottom-[-30%] right-[-30%] w-4/5 h-4/5 rounded-full bg-gradient-to-tl from-brand-cyan to-transparent filter blur-3xl"></div>
</div>
<div
className="relative z-10 flex flex-col items-center justify-center min-h-[70vh] md:min-h-[80vh] px-4 text-center">
<h1 className="text-5xl md:text-7xl lg:text-8xl font-extrabold mb-4 tracking-tight">
Your Entire Brand.<br />One Intelligent Platform.
</h1>
<p className="text-lg md:text-2xl max-w-3xl mb-8">
Imagine the creative firepower of a design agency, the strategic insight of a
consultant, and the brilliance of a top-tier marketing team—all at your fingertips.
That's Brand AI.
</p>
<div className="flex flex-wrap justify-center gap-4">
<a
href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home"
className="bg-white text-brand-midnight font-bold py-3 px-8 rounded-lg text-lg hover:bg-gray-200 transition-all duration-300 transform hover:scale-105"
>
Start creating for free
</a>
<a
href="https://www.thebrand.ai/i/"
className="bg-white/10 backdrop-blur-sm text-white font-bold py-3 px-8 rounded-lg text-lg hover:bg-white/20 transition-all duration-300 transform hover:scale-105"
>
Browse Templates
</a>
</div>
</div>
</section>
{/* The Problem Section */}
<section className="py-20 md:py-28 bg-gray-50">
<div className="container mx-auto px-6 text-center">
<h2 className="text-4xl md:text-5xl font-bold mb-4">The old way is broken.</h2>
<p className="text-lg md:text-xl text-gray-600 max-w-3xl mx-auto mb-12">
Did you know 90% of businesses struggle to stand out? They spend months and thousands on
solutions that don’t deliver.
</p>
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 text-left">
{PROBLEM_CARDS.map((card, index) => (
<div key={index}
className="bg-white p-8 rounded-2xl shadow-md hover:shadow-xl hover:-translate-y-2 transition-all duration-300">
<div className="text-brand-cyan mb-4">{card.icon}</div>
<h3 className="text-xl font-bold mb-2">{card.title}</h3>
<p className="text-gray-600">{card.description}</p>
</div>
))}
</div>
</div>
</section>
{/* Tools Section */}
<section className="py-20 md:py-28">
<div className="container mx-auto px-6">
<h2 className="text-4xl md:text-5xl font-bold text-center mb-12">
An entire toolkit, powered by AI.
</h2>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{FEATURES_PRIMARY.map((feature, index) => (
<FeatureCard key={index} {...feature} />
))}
</div>
</div>
</section>
{/* Traction Section */}
<section className="py-20 md:py-24 bg-brand-midnight text-white">
<div className="container mx-auto px-6 text-center">
<h2 className="text-5xl md:text-6xl font-extrabold mb-4 tracking-tight">
34,000+ users and growing.
</h2>
<p className="text-lg md:text-xl opacity-80 max-w-3xl mx-auto">
Trusted by governments, SMEs, and startups worldwide. All achieved through organic
growth fueled by user trust and referrals.
</p>
</div>
</section>
{/* All in one place Section */}
<section className="py-20 md:py-28 bg-gray-50">
<div className="container mx-auto px-6">
<h2 className="text-4xl md:text-5xl font-bold text-center mb-12">
All the tools. All in one place.
</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
{FEATURES_SECONDARY.map((feature, index) => (
<FeatureCard key={index} {...feature} />
))}
</div>
</div>
</section>
{/* Templates Section */}
<section className="py-20 md:py-28 bg-gray-50">
<InteractiveTemplates/>
</section>
{/* Ecosystem Section */}
<section className="py-20 md:py-28">
<div className="container mx-auto px-6">
<h2 className="text-4xl md:text-5xl font-bold text-center mb-12">
Your brand's entire ecosystem, connected.
</h2>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{FEATURES_TERTIARY.map((feature, index) => (
<FeatureCard key={index} {...feature} />
))}
</div>
</div>
</section>
</main>
{/* Testimonials Section (Minimal Layout) */}
<section className="py-20 md:py-28">
<div className="container mx-auto px-6 text-center">
<h2 className="text-4xl md:text-5xl font-bold mb-12">Testimonials</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 text-left">
<blockquote className="bg-gray-50 border border-gray-300 p-8 rounded-2xl">
<p className="text-xl text-gray-800 font-medium mb-4">“Brand AI gave us agency-level design without agency-level cost.”</p>
<cite className="text-gray-600">— Maria R., Founder, The Cozy Bookstore</cite>
</blockquote>
<blockquote className="bg-gray-50 border border-gray-300 p-8 rounded-2xl">
<p className="text-xl text-gray-800 font-medium mb-4">“AI-powered insights helped us outperform competitors and stay ahead of trends.”</p>
<cite className="text-gray-600">— Chris T., Head of Analytics, Fitness First Gyms</cite>
</blockquote>
</div>
</div>
</section>
{/* Pre-Footer CTA Section */}
<section className="py-20 md:py-28 bg-brand-midnight text-white">
<div className="container mx-auto px-6 text-center">
<h2 className="text-4xl md:text-5xl font-bold mb-4">
Where creativity meets clarity.
</h2>
<p className="text-lg md:text-xl text-gray-300 max-w-3xl mx-auto mb-8">
Brand brings design, strategy, and insight together—so you can build, scale, and express your brand with the precision of AI and the artistry of a designer.
</p>
<div className="flex flex-wrap justify-center gap-4">
<a
href="https://www.thebrand.ai/brandcreator/dashboard/auth-join.php?url=home"
className="bg-white text-brand-midnight font-bold py-3 px-8 rounded-lg text-lg hover:bg-gray-200 transition-all duration-300 transform hover:scale-105"
>
Start for Free
</a>
<a
href="https://www.thebrand.ai/i/"
className="bg-white/10 backdrop-blur-sm text-white font-bold py-3 px-8 rounded-lg text-lg hover:bg-white/20 transition-all duration-300 transform hover:scale-105"
>
Explore Templates
</a>
</div>
</div>
</section>
<Footer/>
</div>
);
};
// --- END OF App.tsx ---
// --- START OF index.tsx ---
// React mount disabled to retain static HTML content within #root.
// --- END OF index.tsx ---
</script>
<!-- Auth modal wiring -->
<script>
(function () {
var modal = document.getElementById('authModal');
var frame = document.getElementById('authFrame');
var closeBtn = document.getElementById('authClose');
if (!modal || !frame || !closeBtn) return;
function openAuth(event) {
if (event) event.preventDefault();
var intent = event && event.currentTarget && event.currentTarget.getAttribute('data-auth');
var src = 'https://www.thebrand.ai/connect/index.php' + (intent === 'signup' ? '?action=register' : '');
try {
frame.src = src;
} catch (e) {}
modal.classList.remove('hidden');
document.body.style.overflow = 'hidden';
}
Array.prototype.forEach.call(document.querySelectorAll('a[data-auth]'), function (a) {
a.addEventListener('click', openAuth);
});
closeBtn.addEventListener('click', function () {
modal.classList.add('hidden');
frame.src = 'about:blank';
document.body.style.overflow = '';
});
})();
</script>
</body>
</html>
<!-- Floating Pricing button -->
<button id="openPricingModal" aria-haspopup="dialog" aria-controls="pricingModal" title="Open Pricing"
style="position:fixed; right:20px; bottom:20px; z-index:1000; background:#111827; color:#fff; border:none; border-radius:24px; padding:10px 16px; box-shadow:0 6px 18px rgba(0,0,0,0.2); cursor:pointer;">
Pricing
</button>
<!-- Pricing Modal -->
<div id="pricingModal" role="dialog" aria-modal="true" aria-labelledby="pricingModalTitle" aria-hidden="true"
style="display:none; position:fixed; inset:0; z-index:1001; background:rgba(0,0,0,0.55);">
<div id="pricingModalPanel" style="position:relative; margin:5vh auto; width:92vw; max-width:1000px; height:85vh; background:#ffffff; border-radius:14px; box-shadow:0 20px 40px rgba(0,0,0,0.25); overflow:hidden; display:flex; flex-direction:column;">
<div style="display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid #e5e7eb;">
<h2 id="pricingModalTitle" style="font-size:16px; font-weight:600; color:#111827;">Pricing & Payment</h2>
<div style="display:flex; align-items:center; gap:8px;">
<a href="https://www.thebrand.ai/brandpay/choose" target="_blank" rel="noopener" aria-label="Open pricing in a new tab"
style="text-decoration:none; font-size:12px; color:#2563eb;">Open in new tab</a>
<button id="closePricingModal" aria-label="Close Pricing Modal"
style="background:#111827; color:#fff; border:none; border-radius:8px; padding:8px 10px; cursor:pointer;">Close</button>
</div>
</div>
<div style="flex:1;">
<iframe id="pricingIframe" title="Choose Payment Method"
data-src="https://www.thebrand.ai/brandpay/choose"
style="width:100%; height:100%; border:0; background:#f9fafb;"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
referrerpolicy="no-referrer-when-downgrade"></iframe>
</div>
</div>
</div>
<script>
(function() {
var openBtn = document.getElementById('openPricingModal');
var modal = document.getElementById('pricingModal');
var panel = document.getElementById('pricingModalPanel');
var closeBtn = document.getElementById('closePricingModal');
var iframe = document.getElementById('pricingIframe');
function openModal() {
// Lazy-load iframe
var src = iframe.getAttribute('data-src');
if (src && iframe.src !== src) {
iframe.src = src;
}
modal.style.display = 'block';
modal.setAttribute('aria-hidden', 'false');
// Prevent background scroll
document.body.dataset.prevOverflow = document.body.style.overflow || '';
document.body.style.overflow = 'hidden';
closeBtn.focus();
window.addEventListener('keydown', onKeyDown);
}
function closeModal() {
modal.style.display = 'none';
modal.setAttribute('aria-hidden', 'true');
document.body.style.overflow = document.body.dataset.prevOverflow || '';
window.removeEventListener('keydown', onKeyDown);
openBtn.focus();
}
function onKeyDown(e) {
if (e.key === 'Escape') {
closeModal();
}
}
// Backdrop click closes if clicking outside the panel
modal.addEventListener('click', function(e) {
if (!panel.contains(e.target)) {
closeModal();
}
});
openBtn.addEventListener('click', openModal);
closeBtn.addEventListener('click', closeModal);
// Ensure main navigation "Pricing" link opens the modal
document.addEventListener('click', function(e) {
var anchor = e.target.closest('a');
if (!anchor) return;
var text = (anchor.textContent || '').trim().toLowerCase();
if (text === 'pricing') {
e.preventDefault();
openModal();
}
});
})();
</script>