( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ
<!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">
<!-- 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">
<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>
<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>
<script type="module">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/design-assets/800/600',
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/data-viz/800/600',
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/800/600',
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/brand-suite/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/impact-pres/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: '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/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")))), /*#__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"
}, /*#__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-12"
}, "Hyper-contextual solutions for everyone."), /*#__PURE__*/React.createElement("div", {
className: "flex flex-wrap justify-center gap-8 md:gap-12"
}, TARGET_MARKETS.map((market, index) => /*#__PURE__*/React.createElement("div", {
key: index,
className: "flex flex-col items-center text-center w-32"
}, /*#__PURE__*/React.createElement("div", {
className: "bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200"
}, market.icon), /*#__PURE__*/React.createElement("h3", {
className: "font-semibold text-gray-700"
}, market.name)))))), /*#__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>
</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">
<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/brandpay/choose"
class="text-gray-600 hover:text-brand-cyan font-medium transition-colors">Pricing</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">
<h1 class="text-5xl md:text-7xl lg:text-8xl font-extrabold mb-4 tracking-tight"><span class="block">Your Entire Brand.</span><span class="block">One Intelligent Platform.</span></h1>
<p class="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 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
creating for free</a><a href="https://www.thebrand.ai/i/"
class="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>
<section class="py-20 md:py-28 bg-gray-50">
<div class="container mx-auto px-6 text-center"><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"><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="index_files/1001-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, 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="index_files/879-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, 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="index_files/108-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>
<section class="py-20 md:py-24 bg-brand-midnight text-white">
<div class="container mx-auto px-6 text-center"><h2
class="text-5xl md:text-6xl font-extrabold mb-4 tracking-tight">34,000+ users and growing.</h2>
<p class="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>
<section class="py-20 md:py-28 bg-gray-50">
<div class="container mx-auto px-6"><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="index_files/600-1200x800.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-[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="index_files/553-1200x800.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>
<section class="py-20 md:py-28">
<div class="container mx-auto px-6 text-center"><h2 class="text-4xl md:text-5xl font-bold mb-12">
Hyper-contextual solutions for everyone.</h2>
<div class="flex flex-wrap justify-center gap-8 md:gap-12">
<div class="flex flex-col items-center text-center w-32">
<div class="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="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"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-700">SMEs</h3></div>
<div class="flex flex-col items-center text-center w-32">
<div class="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="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>
<path stroke-linecap="round" stroke-linejoin="round"
d="M3 21h18M5 10l7-7 7 7"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-700">Governments</h3></div>
<div class="flex flex-col items-center text-center w-32">
<div class="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round"
d="M13 10V3L4 14h7v7l9-11h-7z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-700">Startups</h3></div>
<div class="flex flex-col items-center text-center w-32">
<div class="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round"
d="M11 3.055A9.001 9.001 0 1020.945 13H11V3.055z"></path>
<path stroke-linecap="round" stroke-linejoin="round"
d="M20.488 9H15V3.512A9.025 9.025 0 0120.488 9z"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-700">Marketers</h3></div>
<div class="flex flex-col items-center text-center w-32">
<div class="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8" fill="none" viewBox="0 0 24 24"
stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="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"></path>
</svg>
</div>
<h3 class="font-semibold text-gray-700">Corporations</h3></div>
</div>
</div>
</section>
<section class="py-20 md:py-28 bg-gray-50">
<div class="container mx-auto px-6">
<div class="text-center mb-12"><h2 class="text-4xl md:text-5xl font-bold mb-4">Templates for
absolutely anything</h2>
<p class="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"
class="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 class="flex flex-wrap justify-center gap-2 md:gap-4 mb-10">
<button class="py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base bg-gray-200 text-gray-700 hover:bg-gray-300">
Social Media
</button>
<button class="py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base bg-gray-200 text-gray-700 hover:bg-gray-300">
Invites & Cards
</button>
<button class="py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base bg-gray-200 text-gray-700 hover:bg-gray-300">
Documents
</button>
<button class="py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base bg-brand-cyan text-white shadow-lg transform scale-105">
Advertising
</button>
<button class="py-2 px-5 rounded-full font-semibold transition-all duration-300 text-sm md:text-base bg-gray-200 text-gray-700 hover:bg-gray-300">
Covers
</button>
</div>
<div class="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">
<a href="https://www.thebrand.ai/i/advertising/poster-a3"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Poster"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/192-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Poster</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/banner-2x6ft"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Banner"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/313-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Banner</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/billboard"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Billboard"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/682-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Billboard</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/flyer-us"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Flyer"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/626-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Flyer</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/yard-sign"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Yard Sign"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/1024-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Yard Sign</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/roll-up-banner"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Roll-up Banner"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/217-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Roll-up Banner</h4></div>
</a><a href="https://www.thebrand.ai/i/advertising/brochure"
class="block group rounded-lg overflow-hidden bg-gray-100 shadow-sm hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1">
<div class="relative aspect-[4/3] overflow-hidden"><img alt="Brochure"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
loading="lazy" decoding="async"
src="index_files/888-400x300.jpg">
<div class="absolute inset-0 bg-black/10 group-hover:bg-black/0 transition-colors duration-300"></div>
</div>
<div class="p-3"><h4
class="text-sm font-semibold text-gray-800 truncate group-hover:text-brand-cyan transition-colors duration-300">
Brochure</h4></div>
</a></div>
</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>
</main>
<footer class="bg-brand-midnight text-white">
<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/babel" data-type="module">
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/design-assets/800/600',
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/data-viz/800/600',
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/800/600',
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/brand-suite/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/impact-pres/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: '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>
{/* Target Market Section */}
<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">
Hyper-contextual solutions for everyone.
</h2>
<div className="flex flex-wrap justify-center gap-8 md:gap-12">
{TARGET_MARKETS.map((market, index) => (
<div key={index} className="flex flex-col items-center text-center w-32">
<div
className="bg-cyan-100 text-brand-cyan rounded-full p-5 mb-4 transition-all duration-300 transform hover:scale-110 hover:bg-cyan-200">
{market.icon}
</div>
<h3 className="font-semibold text-gray-700">{market.name}</h3>
</div>
))}
</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>