SEO for Plumbers & Tradies | Brisbane, Sydney, Melbourne

9 / 100 SEO Score
<!DOCTYPE html>
<html lang="en-AU" class="tbe-light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SEO for Plumbers &amp; Tradies | Brisbane, Sydney, Melbourne</title>
<meta name="description" content="Local SEO and AEO for plumbers, electricians, roofers and builders in Brisbane, Sydney, Melbourne and bayside QLD. One $590/month retainer, no lock-in.">
<meta name="keywords" content="SEO for plumbers Brisbane, SEO for electricians Sydney, SEO for roofers Melbourne, local SEO for tradies, AI search visibility for local business">
<link rel="canonical" href="https://thebrandexpress.com.au/">
<meta property="og:title" content="SEO for Plumbers, Electricians &amp; Roofers | The Brand Express">
<meta property="og:description" content="Be the business locals find first on Google and in AI answers. SEO and AEO for trade and home service businesses in Brisbane, Sydney and Melbourne.">
<meta property="og:url" content="https://thebrandexpress.com.au/">
<meta property="og:type" content="website">
<meta name="geo.region" content="AU-QLD">
<meta name="geo.placename" content="Redland Bay, Queensland">
<meta name="geo.position" content="-27.6117;153.2983">
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/remixicon@4.6.0/fonts/remixicon.min.css" rel="stylesheet">
<script>document.documentElement.className += ' js';</script>
<style>
/* ===== StyleSystem OKLCH Tokens ===== */
:root {
  --font-heading: 'Playfair Display', Georgia, serif;
  --font-body: 'Inter', system-ui, sans-serif;
  --font-label: 'Inter', system-ui, sans-serif;
  
  --bg-50:  0.10 0.02 250;
  --bg-100: 0.15 0.02 250;
  --bg-200: 0.22 0.02 250;
  --bg-300: 0.30 0.02 250;
  --bg-400: 0.40 0.02 250;
  --bg-500: 0.50 0.02 250;
  --bg-600: 0.60 0.02 250;
  --bg-700: 0.70 0.02 250;
  --bg-800: 0.80 0.02 250;
  --bg-900: 0.88 0.01 250;
  --bg-950: 0.96 0.01 250;
  
  --fg-50:  0.10 0.02 250;
  --fg-100: 0.20 0.02 250;
  --fg-200: 0.30 0.02 250;
  --fg-300: 0.40 0.02 250;
  --fg-400: 0.50 0.02 250;
  --fg-500: 0.60 0.02 250;
  --fg-600: 0.70 0.02 250;
  --fg-700: 0.78 0.02 250;
  --fg-800: 0.86 0.01 250;
  --fg-900: 0.92 0.01 250;
  --fg-950: 0.98 0.01 250;
  
  --pr-50:  0.95 0.05 75;
  --pr-100: 0.90 0.08 75;
  --pr-200: 0.84 0.12 75;
  --pr-300: 0.78 0.16 75;
  --pr-400: 0.72 0.18 75;
  --pr-500: 0.65 0.20 75;
  --pr-600: 0.58 0.20 75;
  --pr-700: 0.50 0.18 75;
  --pr-800: 0.42 0.15 75;
  --pr-900: 0.35 0.12 75;
  --pr-950: 0.28 0.10 75;
  
  --ac-50:  0.95 0.04 175;
  --ac-100: 0.88 0.08 175;
  --ac-200: 0.80 0.12 175;
  --ac-300: 0.72 0.14 175;
  --ac-400: 0.65 0.14 175;
  --ac-500: 0.58 0.13 175;
  --ac-600: 0.50 0.12 175;
  --ac-700: 0.43 0.10 175;
  --ac-800: 0.36 0.08 175;
  --ac-900: 0.30 0.06 175;
  --ac-950: 0.24 0.05 175;
  
  --sc-50:  0.95 0.02 50;
  --sc-100: 0.88 0.03 50;
  --sc-200: 0.78 0.03 50;
  --sc-300: 0.68 0.03 50;
  --sc-400: 0.58 0.03 50;
  --sc-500: 0.50 0.03 50;
  --sc-600: 0.42 0.03 50;
  --sc-700: 0.35 0.03 50;
  --sc-800: 0.28 0.03 50;
  --sc-900: 0.22 0.02 50;
  --sc-950: 0.16 0.02 50;

  /* Chart palette — consumed by the inline SVG in the reports section,
     so the chart follows the theme instead of hard-coding dark strokes. */
  --chart-grid: #2a2a35;
  --chart-axis: #3f3f46;
  --chart-label: #8b8b93;
  --chart-point-ring: #1a1a23;
}

/* ===== Light theme variant =====
   Same layout, same components, same class names — only the five palette
   roles flip. Applied on <html class="tbe-light">.
   Remove that class to get the original dark version back. */
.tbe-light {
  /* surfaces: 50 = page, 100 = alternating band, 200 = hairlines/fills */
  --bg-50:  0.995 0.002 250;
  --bg-100: 0.972 0.004 250;
  --bg-200: 0.78 0.008 250;
  --bg-300: 0.70 0.008 250;
  --bg-400: 0.60 0.010 250;
  --bg-500: 0.52 0.010 250;
  --bg-600: 0.44 0.012 250;
  --bg-700: 0.36 0.012 250;
  --bg-800: 0.28 0.012 250;
  --bg-900: 0.21 0.012 250;
  --bg-950: 0.15 0.012 250;

  /* text: 950 is the deepest so headlines stay crisp on white */
  --fg-50:  0.99 0.002 250;
  --fg-100: 0.93 0.004 250;
  --fg-200: 0.85 0.006 250;
  --fg-300: 0.72 0.010 250;
  --fg-400: 0.58 0.012 250;
  --fg-500: 0.46 0.014 250;
  --fg-600: 0.39 0.014 250;
  --fg-700: 0.32 0.016 250;
  --fg-800: 0.25 0.018 250;
  --fg-900: 0.19 0.020 250;
  --fg-950: 0.16 0.022 250;

  /* primary — deeper amber so eyebrow labels read as text on white,
     950 inverts to a pale wash for card tints */
  --pr-50:  0.30 0.09 45;
  --pr-100: 0.36 0.11 45;
  --pr-200: 0.42 0.12 45;
  --pr-300: 0.47 0.13 45;
  --pr-400: 0.51 0.14 48;
  --pr-500: 0.55 0.16 52;
  --pr-600: 0.50 0.15 52;
  --pr-700: 0.44 0.13 52;
  --pr-800: 0.90 0.05 60;
  --pr-900: 0.93 0.03 60;
  --pr-950: 0.95 0.045 60;

  /* accent — deeper teal for ticks and check marks */
  --ac-50:  0.30 0.06 190;
  --ac-100: 0.36 0.08 190;
  --ac-200: 0.42 0.09 190;
  --ac-300: 0.46 0.10 190;
  --ac-400: 0.48 0.11 190;
  --ac-500: 0.50 0.11 190;
  --ac-600: 0.46 0.10 190;
  --ac-700: 0.42 0.09 190;
  --ac-800: 0.89 0.04 180;
  --ac-900: 0.93 0.03 180;
  --ac-950: 0.95 0.03 180;

  /* secondary — quiet neutral for meta labels */
  --sc-50:  0.28 0.01 50;
  --sc-100: 0.34 0.012 50;
  --sc-200: 0.40 0.014 50;
  --sc-300: 0.44 0.016 50;
  --sc-400: 0.46 0.018 50;
  --sc-500: 0.47 0.018 50;
  --sc-600: 0.44 0.018 50;
  --sc-700: 0.40 0.016 50;
  --sc-800: 0.89 0.008 50;
  --sc-900: 0.93 0.006 50;
  --sc-950: 0.96 0.004 50;

  /* chart */
  --chart-grid: #e9e9ee;
  --chart-axis: #d6d6dc;
  --chart-label: #6f6f78;
  --chart-point-ring: #ffffff;

  background-color: oklch(var(--bg-50));
  color: oklch(var(--fg-700));
}

/* ===== Light-theme corrections for hard-coded utility colours ===== */
.tbe-light .bg-orange-950\/30 { background-color: rgba(249,115,22,0.07); }
.tbe-light .bg-orange-500\/10 { background-color: rgba(249,115,22,0.08); }
.tbe-light .bg-orange-500\/15 { background-color: rgba(249,115,22,0.12); }
.tbe-light .text-orange-500 { color: #c2410c; }
.tbe-light .border-orange\/20 { border-color: rgba(194,65,12,0.22); }
.tbe-light .shadow-orange\/20 { box-shadow: 0 10px 15px -3px rgba(194,65,12,0.16); }

/* ===== Reset & Base ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body {
  font-family: var(--font-body);
  background-color: oklch(var(--bg-50));
  color: oklch(var(--fg-700));
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
  overflow-x: hidden;
  max-width: 100%;
}

/* ===== Full-bleed wrapper =====
   Keeps this layout at true viewport width even when a page builder
   (Brizy, Elementor, Gutenberg, etc.) drops the embed inside a boxed
   container with its own max-width. Without this the whole page gets
   squeezed into a centred column on wide desktop screens. */
.tbe-wrapper {
  position: relative;
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  background-color: oklch(var(--bg-50));
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { text-decoration: none; color: inherit; }
button { cursor: pointer; font-family: inherit; border: none; background: none; }
.ff-heading { font-family: var(--font-heading); }

/* ===== Utility Classes ===== */
.w-full { width: 100%; }
.mx-auto { margin-left: auto; margin-right: auto; }
.text-center { text-align: center; }
.whitespace-nowrap { white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

/* ===== Layout ===== */
.container-xl { width: 100%; padding-left: 1.25rem; padding-right: 1.25rem; }
@media (min-width: 768px) { .container-xl { padding-left: 2rem; padding-right: 2rem; } }
@media (min-width: 1024px) { .container-xl { padding-left: 3rem; padding-right: 3rem; } }
.max-w-6xl { max-width: 80rem; }
@media (min-width: 1536px) {
  .container-xl { padding-left: 4rem; padding-right: 4rem; }
}
.max-w-4xl { max-width: 56rem; }
.max-w-3xl { max-width: 48rem; }
.max-w-2xl { max-width: 42rem; }

/* ===== Section Spacing ===== */
.section-py { padding-top: 5rem; padding-bottom: 5rem; }
@media (min-width: 768px) { .section-py { padding-top: 7rem; padding-bottom: 7rem; } }

/* ===== Grid ===== */
.grid { display: grid; }
.grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid-cols-12 { grid-template-columns: repeat(12, 1fr); }
.col-span-6 { grid-column: span 6 / span 6; }
@media (min-width: 640px) {
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
  .sm\:col-span-3 { grid-column: span 3 / span 3; }
  .sm\:col-span-4 { grid-column: span 4 / span 4; }
}
@media (min-width: 768px) {
  .md\:grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
  .md\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
  .md\:col-span-2 { grid-column: span 2 / span 2; }
}
@media (min-width: 1024px) {
  .lg\:grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
  .lg\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
  .lg\:grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
  .lg\:grid-cols-5 { grid-template-columns: repeat(5, 1fr); }
  .lg\:col-span-1 { grid-column: span 1 / span 1; }
  .lg\:col-span-2 { grid-column: span 2 / span 2; }
  .lg\:col-span-3 { grid-column: span 3 / span 3; }
}
.gap-1 { gap: 0.25rem; }
.gap-2 { gap: 0.5rem; }
.gap-2\.5 { gap: 0.625rem; }
.gap-3 { gap: 0.75rem; }
.gap-4 { gap: 1rem; }
.gap-5 { gap: 1.25rem; }
.gap-6 { gap: 1.5rem; }
.gap-8 { gap: 2rem; }
.gap-10 { gap: 2.5rem; }
.gap-12 { gap: 3rem; }
@media (min-width: 1024px) {
  .lg\:gap-8 { gap: 2rem; }
  .lg\:gap-16 { gap: 4rem; }
}

/* ===== Flex ===== */
.flex { display: flex; }
.flex-col { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.items-baseline { align-items: baseline; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-end { justify-content: flex-end; }
.shrink-0 { flex-shrink: 0; }
.grow { flex-grow: 1; }
.flex-1 { flex: 1 1 0%; }

/* ===== Typography ===== */
.text-xs { font-size: 0.75rem; }
.text-2xs { font-size: 0.625rem; }
.text-sm { font-size: 0.875rem; }
.text-base { font-size: 1rem; }
.text-lg { font-size: 1.125rem; }
.text-xl { font-size: 1.25rem; }
.text-2xl { font-size: 1.5rem; }
.text-3xl { font-size: 1.875rem; }
.text-4xl { font-size: 2.25rem; }
.text-5xl { font-size: 3rem; }
.text-7xl { font-size: 4.5rem; }
.text-8xl { font-size: 6rem; }
@media (min-width: 640px) { .sm\:text-5xl { font-size: 3rem; } }
@media (min-width: 768px) {
  .md\:text-sm { font-size: 0.875rem; }
  .md\:text-base { font-size: 1rem; }
  .md\:text-lg { font-size: 1.125rem; }
  .md\:text-xl { font-size: 1.25rem; }
  .md\:text-2xl { font-size: 1.5rem; }
  .md\:text-3xl { font-size: 1.875rem; }
  .md\:text-4xl { font-size: 2.25rem; }
  .md\:text-5xl { font-size: 3rem; }
  .md\:text-6xl { font-size: 3.75rem; }
  .md\:text-8xl { font-size: 6rem; }
}
@media (min-width: 1024px) {
  .lg\:text-5xl { font-size: 3rem; }
  .lg\:text-7xl { font-size: 4.5rem; }
}
.font-light { font-weight: 300; }
.font-normal { font-weight: 400; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }
.uppercase { text-transform: uppercase; }
.tracking-wide { letter-spacing: 0.025em; }
.tracking-wider { letter-spacing: 0.05em; }
.tracking-widest { letter-spacing: 0.1em; }
.tracking-tight { letter-spacing: -0.025em; }
.leading-none { line-height: 1; }
.leading-tight { line-height: 1.25; }
.leading-snug { line-height: 1.375; }
.leading-relaxed { line-height: 1.625; }

/* ===== Colors (OKLCH) ===== */
.bg-bg-50 { background-color: oklch(var(--bg-50)); }
.bg-bg-100 { background-color: oklch(var(--bg-100)); }
.bg-bg-200 { background-color: oklch(var(--bg-200)); }
.bg-fg-950 { background-color: oklch(var(--fg-950)); }
.text-fg-400 { color: oklch(var(--fg-400)); }
.text-fg-500 { color: oklch(var(--fg-500)); }
.text-fg-600 { color: oklch(var(--fg-600)); }
.text-fg-700 { color: oklch(var(--fg-700)); }
.text-fg-800 { color: oklch(var(--fg-800)); }
.text-fg-900 { color: oklch(var(--fg-900)); }
.text-fg-950 { color: oklch(var(--fg-950)); }
.text-pr-500 { color: oklch(var(--pr-500)); }
.text-pr-700 { color: oklch(var(--pr-700)); }
.text-ac-500 { color: oklch(var(--ac-500)); }
.text-sc-500 { color: oklch(var(--sc-500)); }
.border-bg-200 { border-color: oklch(var(--bg-200)); }
.border-pr-500 { border-color: oklch(var(--pr-500)); }
.border-ac-500 { border-color: oklch(var(--ac-500)); }

/* ===== Spacing ===== */
.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-3 { margin-bottom: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-5 { margin-bottom: 1.25rem; }
.mb-6 { margin-bottom: 1.5rem; }
.mb-8 { margin-bottom: 2rem; }
.mb-10 { margin-bottom: 2.5rem; }
.mb-12 { margin-bottom: 3rem; }
.mb-14 { margin-bottom: 3.5rem; }
.mb-16 { margin-bottom: 4rem; }
.mt-0\.5 { margin-top: 0.125rem; }
.mt-1 { margin-top: 0.25rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-auto { margin-top: auto; }
.p-3 { padding: 0.75rem; }
.p-4 { padding: 1rem; }
.p-5 { padding: 1.25rem; }
.p-6 { padding: 1.5rem; }
.px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
.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-7 { padding-left: 1.75rem; padding-right: 1.75rem; }
.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
.py-1\.5 { padding-top: 0.375rem; padding-bottom: 0.375rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.py-2\.5 { padding-top: 0.625rem; padding-bottom: 0.625rem; }
.py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
.py-3\.5 { padding-top: 0.875rem; padding-bottom: 0.875rem; }
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
.py-6 { padding-top: 1.5rem; padding-bottom: 1.5rem; }
.pb-5 { padding-bottom: 1.25rem; }
.pb-16 { padding-bottom: 4rem; }
.pb-20 { padding-bottom: 5rem; }
.pt-4 { padding-top: 1rem; }
.pt-5 { padding-top: 1.25rem; }
.pt-6 { padding-top: 1.5rem; }
.pt-8 { padding-top: 2rem; }
.pt-28 { padding-top: 7rem; }
@media (min-width: 768px) {
  .md\:px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
  .md\:px-7 { padding-left: 1.75rem; padding-right: 1.75rem; }
  .md\:px-8 { padding-left: 2rem; padding-right: 2rem; }
  .md\:py-5 { padding-top: 1.25rem; padding-bottom: 1.25rem; }
  .md\:py-8 { padding-top: 2rem; padding-bottom: 2rem; }
  .md\:py-16 { padding-top: 4rem; padding-bottom: 4rem; }
  .md\:pb-20 { padding-bottom: 5rem; }
  .md\:pt-36 { padding-top: 9rem; }
  .md\:mb-14 { margin-bottom: 3.5rem; }
  .md\:mb-16 { margin-bottom: 4rem; }
}

/* ===== Rounded ===== */
.rounded-full { border-radius: 9999px; }
.rounded-lg { border-radius: 0.5rem; }
.rounded-md { border-radius: 0.375rem; }
.rounded-sm { border-radius: 0.25rem; }
.rounded-xl { border-radius: 0.75rem; }

/* ===== Borders ===== */
.border { border-width: 1px; border-style: solid; }
.border-t { border-top-width: 1px; border-top-style: solid; }
.border-b { border-bottom-width: 1px; border-bottom-style: solid; }
.border-2 { border-width: 2px; }
.border-bg\/40 { border-color: oklch(var(--bg-200) / 0.4); }
.border-bg\/60 { border-color: oklch(var(--bg-200) / 0.6); }
.border-white\/10 { border-color: rgba(255,255,255,0.1); }
.border-white\/15 { border-color: rgba(255,255,255,0.15); }
.border-white\/25 { border-color: rgba(255,255,255,0.25); }
.border-pr\/15 { border-color: oklch(var(--pr-500) / 0.15); }
.border-pr\/20 { border-color: oklch(var(--pr-500) / 0.2); }
.border-orange\/20 { border-color: rgba(249,115,22,0.2); }

/* ===== Backgrounds ===== */
.bg-transparent { background-color: transparent; }
.bg-white\/5 { background-color: rgba(255,255,255,0.05); }
.bg-white\/12 { background-color: rgba(255,255,255,0.12); }
.bg-black\/30 { background-color: rgba(0,0,0,0.3); }
.bg-bg-50 { background-color: oklch(var(--bg-50)); }
.bg-bg-50\/90 { background-color: oklch(var(--bg-50) / 0.9); }
.bg-bg-50\/98 { background-color: oklch(var(--bg-50) / 0.98); }
.bg-bg-100 { background-color: oklch(var(--bg-100)); }
.bg-bg-100\/60 { background-color: oklch(var(--bg-100) / 0.6); }
.bg-bg-200\/60 { background-color: oklch(var(--bg-200) / 0.6); }
.bg-bg-200\/30 { background-color: oklch(var(--bg-200) / 0.3); }
.bg-pr-950\/20 { background-color: oklch(var(--pr-950) / 0.2); }
.bg-pr-950\/30 { background-color: oklch(var(--pr-950) / 0.3); }
.bg-pr-950\/40 { background-color: oklch(var(--pr-950) / 0.4); }
.bg-pr-500 { background-color: oklch(var(--pr-500)); }
.bg-ac-500 { background-color: oklch(var(--ac-500)); }
.bg-ac-950\/30 { background-color: oklch(var(--ac-950) / 0.3); }
.bg-orange-500 { background-color: #f97316; }
.bg-orange-500\/10 { background-color: rgba(249,115,22,0.1); }
.bg-orange-500\/15 { background-color: rgba(249,115,22,0.15); }
.bg-orange-500\/60 { background-color: rgba(249,115,22,0.6); }
.bg-orange-950\/30 { background-color: rgba(67,20,7,0.3); }

/* ===== Text Colors ===== */
.text-white { color: #fff; }
.text-white\/45 { color: rgba(255,255,255,0.45); }
.text-white\/55 { color: rgba(255,255,255,0.55); }
.text-white\/65 { color: rgba(255,255,255,0.65); }
.text-white\/70 { color: rgba(255,255,255,0.7); }
.text-white\/80 { color: rgba(255,255,255,0.8); }
.text-black { color: #000; }
.text-orange-500 { color: #f97316; }

/* ===== Hover states ===== */
.hover\:text-white:hover { color: #fff; }
.hover\:text-fg-700:hover { color: oklch(var(--fg-700)); }
.hover\:text-fg-900:hover { color: oklch(var(--fg-900)); }
.hover\:text-fg-950:hover { color: oklch(var(--fg-950)); }
.hover\:text-pr-500:hover { color: oklch(var(--pr-500)); }
.hover\:text-ac-400:hover { color: oklch(var(--ac-400)); }
.hover\:bg-white\/20:hover { background-color: rgba(255,255,255,0.2); }
.hover\:bg-bg-100:hover { background-color: oklch(var(--bg-100)); }
.hover\:bg-orange-600:hover { background-color: #ea580c; }
.hover\:border-pr\/30:hover { border-color: oklch(var(--pr-500) / 0.3); }
.hover\:border-ac\/70:hover { border-color: oklch(var(--ac-400) / 0.7); }
.hover\:shadow-orange\/40:hover { box-shadow: 0 10px 25px -5px rgba(249,115,22,0.4); }

/* ===== Shadows ===== */
.shadow-lg { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1); }
.shadow-black\/20 { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.2); }
.shadow-orange\/20 { box-shadow: 0 10px 15px -3px rgba(249,115,22,0.2); }
.hover\:shadow-ac\/15:hover { box-shadow: 0 10px 15px -3px oklch(var(--ac-500) / 0.15); }

/* ===== Sizing ===== */
.w-1\.5 { width: 0.375rem; }
.w-2 { width: 0.5rem; }
.w-2\.5 { width: 0.625rem; }
.w-3 { width: 0.75rem; }
.w-3\.5 { width: 0.875rem; }
.w-4 { width: 1rem; }
.w-5 { width: 1.25rem; }
.w-6 { width: 1.5rem; }
.w-8 { width: 2rem; }
.w-10 { width: 2.5rem; }
.h-1\.5 { height: 0.375rem; }
.h-2 { height: 0.5rem; }
.h-2\.5 { height: 0.625rem; }
.h-3 { height: 0.75rem; }
.h-3\.5 { height: 0.875rem; }
.h-4 { height: 1rem; }
.h-5 { height: 1.25rem; }
.h-6 { height: 1.5rem; }
.h-8 { height: 2rem; }
.h-10 { height: 2.5rem; }
.h-16 { height: 4rem; }
.h-full { height: 100%; }
.min-h-screen { min-height: 100vh; }
@media (min-width: 768px) { .md\:h-18 { height: 4.5rem; } }

/* ===== Positioning ===== */
.fixed { position: fixed; }
.absolute { position: absolute; }
.relative { position: relative; }
.sticky { position: sticky; }
.inset-0 { top: 0; right: 0; bottom: 0; left: 0; }
.top-0 { top: 0; }
.right-0 { right: 0; }
.left-0 { left: 0; }
.z-10 { z-index: 10; }
.z-50 { z-index: 50; }
.translate-x-1 { transform: translateX(0.25rem); }
.-translate-x-1 { transform: translateX(-0.25rem); }
.-translate-y-2 { transform: translateY(-0.5rem); }

/* ===== Display ===== */
.block { display: block; }
.inline-block { display: inline-block; }
.inline-flex { display: inline-flex; }
.hidden { display: none; }
@media (min-width: 640px) { .sm\:block { display: block; } .sm\:flex { display: flex; } .sm\:hidden { display: none; } }
@media (min-width: 768px) { .md\:flex { display: flex; } .md\:hidden { display: none; } }

/* ===== Overflow ===== */
.overflow-hidden { overflow: hidden; }
.select-none { user-select: none; }
.cursor-pointer { cursor: pointer; }
.cursor-default { cursor: default; }

/* ===== Object ===== */
.object-cover { object-fit: cover; }
.object-contain { object-fit: contain; }
.object-top { object-position: top; }

/* ===== Transitions & Animations ===== */
.transition-all { transition: all 0.3s ease; }
.transition-colors { transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease; }
.transition-transform { transition: transform 0.2s ease; }
.duration-200 { transition-duration: 0.2s; }
.duration-300 { transition-duration: 0.3s; }
.duration-700 { transition-duration: 0.7s; }
.animate-pulse { animation: pulse 2s cubic-bezier(0.4,0,0.6,1) infinite; }
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
.backdrop-blur-sm { backdrop-filter: blur(4px); }
.backdrop-blur-md { backdrop-filter: blur(12px); }
.backdrop-blur-lg { backdrop-filter: blur(16px); }

/* ===== Focus ===== */
.focus\:outline-none:focus { outline: none; }
.focus\:border-pr\/50:focus { border-color: oklch(var(--pr-500) / 0.5); }
.focus\:ring-1:focus { box-shadow: 0 0 0 1px oklch(var(--pr-500) / 0.2); }

/* ===== Opacity ===== */
.opacity-0 { opacity: 0; }
.opacity-100 { opacity: 1; }

/* ===== Navbar specific ===== */
.navbar { transition: background-color 0.3s ease, backdrop-filter 0.3s ease, border-color 0.3s ease; }
.navbar.scrolled { background-color: oklch(var(--bg-50) / 0.9); backdrop-filter: blur(12px); border-bottom: 1px solid oklch(var(--bg-200) / 0.4); }
.nav-link-light { color: rgba(255,255,255,0.7); }
.nav-link-light:hover { color: #fff; }
.nav-link-dark { color: oklch(var(--fg-600)); }
.nav-link-dark:hover { color: oklch(var(--fg-900)); }
.mobile-toggle-light { color: #fff; }
.mobile-toggle-dark { color: oklch(var(--fg-600)); }
@media (max-width: 1023px) { .nav-phone { display: none; } }

/* ===== Hero ===== */
.hero-bg-overlay { background: linear-gradient(to bottom, rgba(0,0,0,0.65), rgba(0,0,0,0.5), rgba(0,0,0,0.75)); }

/* ===== Pill buttons ===== */
.pill-outcome {
  display: inline-flex; align-items: center; gap: 0.75rem;
  padding: 1rem 1.75rem; border-radius: 9999px;
  border: 2px solid rgba(255,255,255,0.25);
  background-color: rgba(255,255,255,0.12);
  backdrop-filter: blur(12px);
  color: #fff; font-size: 1rem; font-weight: 600;
  transition: all 0.2s ease; white-space: nowrap; cursor: pointer;
  box-shadow: 0 4px 6px -1px rgba(0,0,0,0.2);
}
.pill-outcome:hover {
  background-color: rgba(255,255,255,0.2);
  border-color: rgba(129, 230, 217, 0.7);
  box-shadow: 0 10px 15px -3px oklch(var(--ac-500) / 0.15);
}

/* ===== CTA button ===== */
.btn-cta {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.875rem 1.75rem;
  background-color: #f97316; color: #000; font-weight: 600;
  font-size: 0.875rem; border-radius: 9999px;
  transition: all 0.2s ease; white-space: nowrap; cursor: pointer;
  box-shadow: 0 10px 15px -3px rgba(249,115,22,0.2);
}
.btn-cta:hover { background-color: #ea580c; box-shadow: 0 10px 25px -5px rgba(249,115,22,0.4); }
.btn-cta:disabled { background-color: rgba(249,115,22,0.6); cursor: not-allowed; }

/* ===== Form inputs ===== */
.form-input {
  width: 100%; padding: 0.75rem 1rem; border-radius: 0.5rem;
  background-color: oklch(var(--bg-100)); border: 1px solid oklch(var(--bg-200) / 0.6);
  font-size: 0.875rem; color: oklch(var(--fg-900)); font-family: var(--font-body);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.form-input::placeholder { color: oklch(var(--fg-400)); }
.form-input:focus { outline: none; border-color: oklch(var(--pr-500) / 0.5); box-shadow: 0 0 0 1px oklch(var(--pr-500) / 0.2); }
textarea.form-input { resize: none; }

/* ===== FAQ Accordion ===== */
/* Answers are open by default so they are readable without JS.
   The accordion script collapses them on init. */
.faq-answer { display: grid; grid-template-rows: 1fr; transition: grid-template-rows 0.35s ease-out; }
.faq-answer.closed { grid-template-rows: 0fr; }
.faq-answer-inner { overflow: hidden; }
.faq-toggle { transition: transform 0.3s ease; }
.faq-toggle.open { transform: rotate(45deg); }

/* ===== Reveal animations ===== */
/* Content is visible by default. It is only hidden for the fade-in
   when JS has confirmed it can restore it (html.js). If the script is
   stripped or fails, every section still renders. */
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease-out, transform 0.7s ease-out; }
.js .reveal.visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .js .reveal { opacity: 1; transform: none; transition: none; }
}

/* ===== Honeypot ===== */
.hp-field { position: absolute; left: -9999px; opacity: 0; pointer-events: none; }

/* ===== Status messages ===== */
.status-success { background-color: oklch(var(--ac-950) / 0.3); border: 1px solid oklch(var(--ac-500) / 0.2); border-radius: 0.5rem; padding: 1rem; }
.status-success p { color: oklch(var(--ac-500)); font-size: 0.875rem; font-weight: 500; }
.status-error { background-color: oklch(var(--pr-950) / 0.2); border: 1px solid oklch(var(--pr-500) / 0.15); border-radius: 0.5rem; padding: 1rem; }
.status-error p { color: oklch(var(--pr-500)); font-size: 0.875rem; font-weight: 500; }

/* ===== Gradients ===== */
.gradient-overlay { background: linear-gradient(to bottom, rgba(0,0,0,0.65), rgba(0,0,0,0.5), rgba(0,0,0,0.75)); }

/* ===== Group hover ===== */
.group:hover .group-hover\:text-ac-400 { color: oklch(var(--ac-400)); }
.group:hover .group-hover\:opacity-100 { opacity: 1; }
.group:hover .group-hover\:translate-x-0 { transform: translateX(0); }
.group:hover .group-hover\:text-pr-500\/0 { color: oklch(var(--pr-500) / 0.06); }
.group:hover .group-hover\:border-pr\/30 { border-color: oklch(var(--pr-500) / 0.3); }
.group\/link:hover .group-hover\/link\:translate-x-0\.5 { transform: translateX(0.125rem); }
.group\/link:hover .group-hover\/link\:-translate-y-0\.5 { transform: translateY(-0.125rem); }

/* ===== Hover scale ===== */
.hover\:scale-104:hover { transform: scale(1.04); }

/* ===== Card reveal with ghost number ===== */
.sin-card:hover .sin-ghost { color: oklch(var(--pr-500) / 0.06); }

/* ===== Width utilities ===== */
.w-min { width: min-content; }
</style>
</head>
<body>

<div class="tbe-wrapper">

<!-- ===== Navbar ===== -->
<header id="navbar" class="navbar fixed top-0 left-0 right-0 z-50">
  <div class="container-xl">
    <div class="flex items-center justify-between h-16 md:h-18">
      <a href="#hero" class="flex items-center gap-2.5 shrink-0">
        <img src="https://thebrandexpress.com.au/wp-content/uploads/2021/12/cropped-Navy-White-Corporate-Letter-B-Logo.jpg" alt="The Brand Express" width="36" height="36" class="rounded-md object-cover">
        <span id="logo-text" class="ff-heading font-semibold text-base md:text-lg tracking-tight logo-text-light">The Brand Express</span>
      </a>
      <nav class="hidden sm:flex items-center gap-1">
        <a href="https://thebrandexpress.com.au/Blog/" target="_blank" rel="noopener noreferrer nofollow" class="px-3 py-2 text-sm font-medium nav-link-light nav-link-dynamic">Blog</a>
        <a href="#seo-aeo" class="px-3 py-2 text-sm font-medium nav-link-light nav-link-dynamic">Services</a>
        <a href="#faq" class="px-3 py-2 text-sm font-medium nav-link-light nav-link-dynamic">FAQ</a>
        <a href="https://thebrandexpress.com.au/local-seo-checklist" class="inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium text-ac-500 hover:text-ac-400 whitespace-nowrap"><span class="w-4 h-4 flex items-center justify-center"><i class="ri-checkbox-multiple-line text-sm"></i></span>SEO Checklist</a>
        <a href="#contact" class="px-3 py-2 text-sm font-medium nav-link-light nav-link-dynamic">Contact</a>
      </nav>
      <div class="hidden sm:flex items-center gap-3">
        <a href="tel:0411145312" class="nav-phone text-sm font-medium nav-link-light nav-link-dynamic whitespace-nowrap">0411 145 312</a>
        <a href="#contact" class="btn-cta">Book Strategy Session</a>
      </div>
      <button type="button" id="mobile-toggle" class="sm:hidden w-10 h-10 flex items-center justify-center mobile-toggle-light" aria-label="Toggle menu">
        <i id="mobile-toggle-icon" class="ri-menu-line text-xl"></i>
      </button>
    </div>
  </div>
  <!-- Mobile menu -->
  <div id="mobile-menu" class="hidden bg-bg-50/98 backdrop-blur-lg border-t border-bg/40 container-xl py-6 space-y-1">
    <a href="https://thebrandexpress.com.au/Blog/" target="_blank" rel="noopener noreferrer nofollow" class="mobile-nav-link block px-3 py-3 text-base font-medium text-fg-700 hover:text-fg-950 hover:bg-bg-100 rounded-lg transition-colors">Blog</a>
    <a href="#seo-aeo" class="mobile-nav-link block px-3 py-3 text-base font-medium text-fg-700 hover:text-fg-950 hover:bg-bg-100 rounded-lg transition-colors">Services</a>
    <a href="#faq" class="mobile-nav-link block px-3 py-3 text-base font-medium text-fg-700 hover:text-fg-950 hover:bg-bg-100 rounded-lg transition-colors">FAQ</a>
    <a href="https://thebrandexpress.com.au/local-seo-checklist" class="mobile-nav-link flex items-center gap-2 px-3 py-3 text-base font-medium text-ac-500 hover:text-ac-400 hover:bg-bg-100 rounded-lg transition-colors"><span class="w-5 h-5 flex items-center justify-center"><i class="ri-checkbox-multiple-line"></i></span>Local SEO Checklist</a>
    <a href="#contact" class="mobile-nav-link block px-3 py-3 text-base font-medium text-fg-700 hover:text-fg-950 hover:bg-bg-100 rounded-lg transition-colors">Contact</a>
    <div class="pt-4 border-t border-bg/40 flex flex-col gap-3">
      <a href="tel:0411145312" class="px-3 py-2 text-base font-medium text-fg-600">0411 145 312</a>
      <a href="#contact" class="inline-flex items-center justify-center px-5 py-3 bg-orange-500 hover:bg-orange-600 text-black text-base font-semibold rounded-full transition-colors w-full cursor-pointer mobile-nav-link">Book Strategy Session</a>
    </div>
  </div>
</header>

<!-- ===== Hero Section ===== -->
<section id="hero" class="relative min-h-screen flex flex-col justify-center overflow-hidden">
  <div class="absolute inset-0">
    <img src="https://readdy.ai/api/search-image?query=Abstract%20dark%20gradient%20background%20with%20subtle%20warm%20amber%20and%20golden%20light%20streaks%20flowing%20diagonally%20across%20a%20deep%20charcoal%20canvas%2C%20soft%20atmospheric%20glow%2C%20modern%20minimalist%20aesthetic%2C%20sophisticated%20premium%20brand%20texture%2C%20no%20text%20no%20people%2C%20cinematic%20lighting%2C%20elegant%20geometric%20diffusion%2C%20high-end%20corporate%20backdrop%2C%208k%20resolution&width=1800&height=1200&seq=hero-bg-brandexpress-2026&orientation=landscape" alt="" class="w-full h-full object-cover object-top">
    <div class="absolute inset-0 hero-bg-overlay"></div>
  </div>
  <div class="relative z-10 w-full container-xl pt-28 md:pt-36 pb-16 md:pb-20">
    <div class="max-w-4xl mx-auto text-center">
      <div class="inline-flex items-center gap-2 px-4 py-2 rounded-full border border-white/15 bg-white/5 backdrop-blur-sm mb-8">
        <span class="w-2 h-2 rounded-full bg-ac-500 animate-pulse"></span>
        <span class="text-xs font-medium text-white/80 tracking-wide uppercase">SEO &amp; AEO for Australian Trades</span>
      </div>
      <h1 class="ff-heading font-semibold text-4xl sm:text-5xl md:text-6xl lg:text-7xl text-white leading-tight mb-4">
        Be the plumber, sparkie or roofer<br class="hidden sm:block">locals find first.
      </h1>
      <div class="flex flex-wrap items-start justify-center gap-4 mb-8">
        <a href="#pricing" class="pill-outcome group">
          <span class="w-5 h-5 flex items-center justify-center"><i class="ri-user-star-line group-hover:text-ac-400 transition-colors"></i></span>
          More Booked Jobs
          <span class="w-4 h-4 flex items-center justify-center opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200"><i class="ri-arrow-down-line text-xs"></i></span>
        </a>
        <a href="#seo-aeo" class="pill-outcome group">
          <span class="w-5 h-5 flex items-center justify-center"><i class="ri-google-line group-hover:text-ac-400 transition-colors"></i></span>
          Rank for &quot;Near Me&quot;
          <span class="w-4 h-4 flex items-center justify-center opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200"><i class="ri-arrow-down-line text-xs"></i></span>
        </a>
        <a href="https://thebrandexpress.com.au/#ai-visibility" class="pill-outcome group">
          <span class="w-5 h-5 flex items-center justify-center"><i class="ri-robot-2-line group-hover:text-ac-400 transition-colors"></i></span>
          Get Named by AI
          <span class="w-4 h-4 flex items-center justify-center opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200"><i class="ri-arrow-down-line text-xs"></i></span>
        </a>
      </div>
      <p class="text-base md:text-lg text-white/65 leading-relaxed max-w-2xl mx-auto mb-10">
        SEO and AEO for plumbers, electricians, roofers, builders and landscapers. Show up in the map pack, the organic results, and the AI answers buyers read before they ever pick up the phone.
      </p>
      <div class="flex flex-col items-center justify-center gap-4 mb-12">
        <a href="#contact" class="btn-cta">
          Book a 30-Minute Strategy Session
          <span class="w-4 h-4 flex items-center justify-center"><i class="ri-arrow-down-line text-sm"></i></span>
        </a>
        <div class="flex flex-wrap items-center justify-center gap-x-5 gap-y-2">
          <span class="inline-flex items-center gap-1.5 text-xs md:text-sm text-white/55"><span class="w-4 h-4 flex items-center justify-center text-ac-400"><i class="ri-checkbox-circle-line text-sm"></i></span>No lock-in contracts</span>
          <span class="inline-flex items-center gap-1.5 text-xs md:text-sm text-white/55"><span class="w-4 h-4 flex items-center justify-center text-ac-400"><i class="ri-checkbox-circle-line text-sm"></i></span>Done-for-you, every month</span>
          <span class="inline-flex items-center gap-1.5 text-xs md:text-sm text-white/55"><span class="w-4 h-4 flex items-center justify-center text-ac-400"><i class="ri-checkbox-circle-line text-sm"></i></span>Direct consultant access</span>
        </div>
      </div>
      <p class="text-[11px] md:text-xs font-medium uppercase tracking-widest text-white/40">Plumbers &middot; Electricians &middot; Roofers &middot; Builders &middot; Landscapers — Brisbane, Sydney, Melbourne, Redland Bay</p>
    </div>
  </div>
  <!-- Stats bar -->
  <div class="relative z-10 w-full border-t border-white/10">
    <div class="container-xl py-6 md:py-8 bg-black/30 backdrop-blur-sm">
      <div class="grid grid-cols-3 gap-4 max-w-4xl mx-auto">
        <a href="#testimonials" class="text-center cursor-pointer transition-all duration-200 hover:scale-104">
          <p class="ff-heading font-semibold text-2xl md:text-3xl text-white mb-1">Page 1</p>
          <p class="text-xs md:text-sm text-white/55">Results for local trades</p>
        </a>
        <a href="#seo-aeo" class="text-center cursor-pointer transition-all duration-200 hover:scale-104">
          <p class="ff-heading font-semibold text-2xl md:text-3xl text-white mb-1">AEO</p>
          <p class="text-xs md:text-sm text-white/55">Answer engine ready</p>
        </a>
        <a href="#pricing" class="text-center cursor-pointer transition-all duration-200 hover:scale-104">
          <p class="ff-heading font-semibold text-2xl md:text-3xl text-white mb-1">$590</p>
          <p class="text-xs md:text-sm text-white/55">$590 a month, no lock-in</p>
        </a>
      </div>
    </div>
  </div>
</section>

<!-- ===== Problem Section ===== -->
<section id="visibility" class="bg-bg-50 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">Why Trade Businesses Switch</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight max-w-3xl">You are not losing jobs to a better plumber. You are losing them to a better-ranked one.</h2>
    </div>
    <div class="grid grid-cols-1 md:grid-cols-3 gap-5">
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-7 h-full">
        <span class="text-xs font-semibold uppercase tracking-widest text-sc-500 mb-3 block">What Owners Tell Me</span>
        <h3 class="ff-heading font-semibold text-lg md:text-xl text-fg-900 leading-snug mb-3">No clarity on what the retainer buys</h3>
        <p class="text-sm text-fg-500 leading-relaxed">Plumbers and sparkies pay month after month without knowing which pages were fixed, which suburbs were targeted, or which jobs the work was meant to produce.</p>
      </div>
      <div class="reveal rounded-xl bg-pr-950/40 border border-pr/20 p-6 md:p-7 h-full">
        <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-3 block">The Real Shift</span>
        <h3 class="ff-heading font-semibold text-lg md:text-xl text-fg-900 leading-snug mb-3">Buyers choose from AI answers now</h3>
        <p class="text-sm text-fg-500 leading-relaxed">Someone needing a roofer in Sydney often reads an AI summary and a map pack before they visit a single site. If your business is not in that answer, the click never happens.</p>
      </div>
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-7 h-full">
        <span class="text-xs font-semibold uppercase tracking-widest text-sc-500 mb-3 block">The Fix</span>
        <h3 class="ff-heading font-semibold text-lg md:text-xl text-fg-900 leading-snug mb-3">Own the suburb and the service</h3>
        <p class="text-sm text-fg-500 leading-relaxed">One clear page per service, per area you actually cover, backed by reviews, schema and proof. That is what makes Google and AI confident enough to recommend you by name.</p>
      </div>
    </div>
  </div>
</section>

<!-- ===== Pain Points Section ===== -->
<section id="pain-points" class="bg-bg-100 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16">
      <div class="reveal">
        <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">The Real Frustration</span>
        <h2 class="ff-heading font-semibold text-3xl md:text-4xl text-fg-950 leading-tight mb-6">What plumbers, sparkies and roofers are actually frustrated about</h2>
        <p class="text-base text-fg-500 leading-relaxed mb-8">These are the issues that make a trade business leave an SEO provider, put off hiring one, or go looking for a consultant who can explain search in plain English and connect it to booked work.</p>
        <div class="rounded-xl bg-pr-950/30 border border-pr/15 p-5">
          <p class="text-sm font-semibold text-pr-500 mb-1">The good news</p>
          <p class="text-sm text-fg-500 leading-relaxed">Every one of these is fixable with the right specialist approach. That is exactly what The Brand Express is built to do for service businesses in Brisbane, Sydney and Melbourne.</p>
        </div>
      </div>
      <div class="flex flex-col gap-5">
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7">
          <div class="flex items-start gap-4">
            <span class="ff-heading font-semibold text-3xl text-fg-400 shrink-0 leading-none">01</span>
            <div>
              <h3 class="ff-heading font-semibold text-lg text-fg-900 leading-snug mb-2">They get traffic, but not the right jobs.</h3>
              <p class="text-sm font-medium text-pr-500 mb-2">Plenty of visits, quiet phone.</p>
              <p class="text-sm text-fg-500 leading-relaxed">The site ranks for things nobody hires for, like &quot;how to unblock a drain yourself&quot;. Meanwhile &quot;blocked drain plumber Brisbane&quot; is held by someone else. Pages do not answer price, area or availability, and the call button is buried.</p>
            </div>
          </div>
        </div>
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7">
          <div class="flex items-start gap-4">
            <span class="ff-heading font-semibold text-3xl text-fg-400 shrink-0 leading-none">02</span>
            <div>
              <h3 class="ff-heading font-semibold text-lg text-fg-900 leading-snug mb-2">They cannot tell what the agency is doing.</h3>
              <p class="text-sm font-medium text-pr-500 mb-2">Reports show impressions, the bank account shows the fee.</p>
              <p class="text-sm text-fg-500 leading-relaxed">No one can say which service page was rewritten, which suburb was targeted, or what happens next month. No direct access to the person doing the work when a decision needs to be made.</p>
            </div>
          </div>
        </div>
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7">
          <div class="flex items-start gap-4">
            <span class="ff-heading font-semibold text-3xl text-fg-400 shrink-0 leading-none">03</span>
            <div>
              <h3 class="ff-heading font-semibold text-lg text-fg-900 leading-snug mb-2">They are invisible in the AI answer.</h3>
              <p class="text-sm font-medium text-pr-500 mb-2">Their provider still sells rankings as the only visibility layer.</p>
              <p class="text-sm text-fg-500 leading-relaxed">No schema. No FAQ content. No reviews mentioning the actual job and suburb. Buyers ask AI for a recommendation, a competitor gets named, and the phone never rings.</p>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ===== Solution Section ===== -->
<section id="seo-aeo" class="bg-bg-50 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">SEO + AEO For Local Trades</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight max-w-3xl mb-6">What ranking for &quot;plumber Brisbane&quot; actually takes</h2>
      <p class="text-base md:text-lg text-fg-500 leading-relaxed max-w-3xl">Nobody searches &quot;what is link building&quot; at 7am with a burst pipe. They search &quot;emergency plumber Brisbane&quot;, scan three results, and ring one. This work targets those buying moments: one page per service, one page per suburb you actually cover, and the proof Google and AI need to recommend you by name.</p>
    </div>
    <div class="rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-8 mb-10">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-3 block">Real Example: Emergency Electrician, Brisbane</span>
      <p class="text-sm md:text-base text-fg-500 leading-relaxed">
        <strong class="text-fg-800">SEO</strong> wins the searches people type when they need someone now: emergency electrician Brisbane, switchboard upgrade Redland Bay, level 2 electrician near me. Service pages, suburb pages, internal links, reviews and map-pack signals all point at those phrases. <strong class="text-fg-800">AEO</strong> then makes sure that when someone asks ChatGPT who to call, your business is described clearly enough to be named.
      </p>
    </div>
    <div class="grid grid-cols-1 md:grid-cols-3 gap-5">
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-7 h-full">
        <div class="flex items-center gap-3 mb-5">
          <div class="w-10 h-10 rounded-lg bg-pr-950/30 flex items-center justify-center"><span class="text-sm font-semibold text-pr-500">01</span></div>
          <span class="text-xs font-semibold uppercase tracking-widest text-fg-500">SEO Work</span>
        </div>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">Service and Suburb Pages</h3>
        <ul class="space-y-3" style="list-style:none;">
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">Technical audits, crawl fixes, speed and indexing repairs.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">A dedicated page for every job you sell, plus the suburbs you actually drive to.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">Keywords mapped to booked work, not blog topics nobody searches.</span></li>
        </ul>
      </div>
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-7 h-full">
        <div class="flex items-center gap-3 mb-5">
          <div class="w-10 h-10 rounded-lg bg-pr-950/30 flex items-center justify-center"><span class="text-sm font-semibold text-pr-500">02</span></div>
          <span class="text-xs font-semibold uppercase tracking-widest text-fg-500">AEO Work I Add</span>
        </div>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">Being the Business AI Recommends</h3>
        <ul class="space-y-3" style="list-style:none;">
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">FAQ and answer content built for AI Overviews and ChatGPT-style prompts.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">Entity strengthening through schema, consistent business details and expertise signals.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">Brand mentions and citations that make your business easy for AI to verify.</span></li>
        </ul>
      </div>
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-7 h-full">
        <div class="flex items-center gap-3 mb-5">
          <div class="w-10 h-10 rounded-lg bg-pr-950/30 flex items-center justify-center"><span class="text-sm font-semibold text-pr-500">03</span></div>
          <span class="text-xs font-semibold uppercase tracking-widest text-fg-500">What That Means For You</span>
        </div>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">More Calls From the Same Suburbs</h3>
        <ul class="space-y-3" style="list-style:none;">
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">You appear in the map pack and the AI answer, not just the blue links.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">Buyers compare you against competitors with worse information on the page.</span></li>
          <li class="flex items-start gap-2.5"><span class="w-1.5 h-1.5 rounded-full bg-pr-500 mt-2 shrink-0"></span><span class="text-sm text-fg-500 leading-relaxed">A pipeline that matches how people hire a trade now.</span></li>
        </ul>
      </div>
    </div>
  </div>
</section>

<!-- ===== Testimonials Section ===== -->
<section id="testimonials" class="bg-bg-100 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">Client Feedback</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight">What local businesses say</h2>
    </div>
    <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5">
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;Richard got my Stump Grinding business to page 1 in a matter of weeks and it's been there ever since.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Tony</p>
        <p class="text-xs text-fg-500">Stump Grinding Business</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;Working with Richard has made my life easier. He is always willing to help and throw out new ideas to streamline and upgrade my websites.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Acacia</p>
        <p class="text-xs text-fg-500">Local Business</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;Richard runs an exceptional SEO business, offering professional service and results derived from years of experience and expertise.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Olympia</p>
        <p class="text-xs text-fg-500">Service Business</p>
      </div>
      <div class="reveal md:col-span-2 lg:col-span-2 rounded-xl bg-pr-950/30 border border-pr/15 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-lg md:text-xl text-fg-900 ff-heading leading-relaxed mb-6">&ldquo;The Brand Express made everything simple. We finally had a clear SEO plan, better service page structure, and a much stronger understanding of what to do next.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Suncoast Plumbing Co</p>
        <p class="text-xs text-fg-500">Plumbing Services</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;We had traffic before, but not enough quality enquiries. The new strategy improved both our visibility and the quality of leads coming through.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Gold Coast Electrical Group</p>
        <p class="text-xs text-fg-500">Electrical Services</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;The Brand Express explained SEO and AEO in plain English and gave us a roadmap that actually felt practical. The advice was sharp and easy to action.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Brisbane Coastal Roofing</p>
        <p class="text-xs text-fg-500">Roofing Services</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;We appreciated the consultant-led approach. No fluff, no confusion, just a clear strategy focused on rankings, trust, and real enquiries.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Byron Bay Home Services</p>
        <p class="text-xs text-fg-500">Home Services</p>
      </div>
      <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-7 h-full">
        <div class="mb-4" aria-label="5 out of 5 stars"><span class="text-lg text-pr-500">★★★★★</span></div>
        <blockquote class="text-sm text-fg-700 leading-relaxed mb-6">&ldquo;We liked how the work focused on buyer intent and not just keywords. Our website now feels more aligned with how customers actually search.&rdquo;</blockquote>
        <p class="text-sm font-semibold text-fg-900">Logan Property Maintenance</p>
        <p class="text-xs text-fg-500">Property Services</p>
      </div>
    </div>
  </div>
</section>

<!-- ===== Pricing Section ===== -->
<section id="pricing" class="bg-bg-50 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">The Package</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight mb-5 max-w-3xl">One monthly retainer. No lock-in contract.</h2>
      <p class="text-base text-fg-500 leading-relaxed max-w-2xl">Built for trade and home service businesses. Everything below is in the $590 a month, month to month, so you can see exactly what you are paying for and why.</p>
    </div>
    <div class="grid grid-cols-1 lg:grid-cols-5 gap-5">
      <div class="lg:col-span-2 rounded-xl bg-orange-950/30 border border-orange/20 p-6 md:p-8 flex flex-col">
        <div class="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-orange-500/15 mb-5" style="align-self:flex-start;">
          <span class="w-1.5 h-1.5 rounded-full bg-orange-500"></span>
          <span class="text-xs font-semibold text-orange-500 uppercase tracking-wide">Ongoing monthly</span>
        </div>
        <h3 class="ff-heading font-semibold text-2xl md:text-3xl text-fg-950 leading-snug mb-3">Full-Service SEO + AEO Retainer</h3>
        <div class="flex items-baseline gap-2 mb-3">
          <span class="ff-heading font-bold text-4xl md:text-5xl text-fg-950">$590</span>
          <span class="text-base font-medium text-fg-500">/month</span>
          <span class="text-lg text-fg-400" style="text-decoration:line-through;margin-left:0.25rem;">$1,200</span>
        </div>
        <p class="text-sm text-fg-500 leading-relaxed mb-5">One flat monthly fee for trade and home service businesses. Strategy and delivery in the same package, month to month, with no lock-in contract and no exit fee.</p>
        <div class="rounded-lg bg-orange-500/10 border border-orange/20 p-4 mb-5">
          <p class="text-xs font-semibold text-orange-500 uppercase tracking-wide mb-1">What you are actually paying for</p>
          <p class="text-sm text-fg-600 leading-relaxed">Strategy plus delivery. Backlinks, service-page content, directory work and social posting are all done for you each month, under one fee.</p>
        </div>
        <p class="text-xs text-fg-500 leading-relaxed mb-6">Billed monthly. No setup fee, no ad-spend mark-up, and no separate invoices for content, links, directories or social.</p>
        <div class="mt-auto flex flex-col gap-3">
          <a href="#contact" class="inline-flex items-center justify-center gap-2 w-full px-6 py-3.5 bg-orange-500 hover:bg-orange-600 text-black font-semibold text-sm rounded-full transition-colors whitespace-nowrap">Start the $590/month package <span class="w-4 h-4 flex items-center justify-center"><i class="ri-arrow-right-line text-sm"></i></span></a>
          <a href="#strategy" class="inline-flex items-center justify-center gap-2 w-full px-6 py-3 rounded-full border" style="border-color:oklch(var(--bg-200) / 0.6);color:oklch(var(--fg-700));font-weight:500;font-size:0.875rem;">Not sure yet? Book the free call first</a>
        </div>
      </div>
      <div class="lg:col-span-3 rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-8">
        <div class="grid grid-cols-1 sm:grid-cols-2 gap-8 mb-8">
          <div>
            <h4 class="text-sm font-semibold text-fg-900 uppercase tracking-wide mb-1" style="margin-bottom:0.25rem;">What the $590/month covers</h4>
            <p class="text-sm text-fg-500 leading-relaxed mb-4" style="margin-bottom:1rem;">Delivered every month, with no add-on upsells and no separate invoices.</p>
            <div class="flex flex-col gap-3">
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-link text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Automated backlink creation, built month after month.</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-quill-pen-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Brand content and answer-led service copy.</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-map-pin-2-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Local directory submissions and correction work.</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-share-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Social media posts, managed for you across every channel.</span></div>
            </div>
          </div>
          <div>
            <h4 class="text-sm font-semibold text-fg-900 uppercase tracking-wide mb-1" style="margin-bottom:0.25rem;">How it is delivered</h4>
            <p class="text-sm text-fg-500 leading-relaxed mb-4" style="margin-bottom:1rem;">No account managers and no hand-offs. You deal with the person doing the work.</p>
            <div class="flex flex-col gap-3">
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Direct consultant access — no account managers</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Clear deliverables and written monthly priorities</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">First fixes shipping within 30 days of kickoff</span></div>
              <div class="flex items-start gap-2.5"><span class="w-4 h-4 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-sm"></i></span><span class="text-sm text-fg-500 leading-relaxed">Month to month — pause or cancel with 30 days notice</span></div>
            </div>
          </div>
        </div>
        <div class="rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 mb-8" style="margin-bottom:2rem;">
          <h4 class="text-sm font-semibold text-fg-900 uppercase tracking-wide mb-5">What happens after you say yes</h4>
          <div class="flex flex-col gap-5">
            <div class="flex items-start gap-4">
              <div class="w-9 h-9 rounded-full bg-orange-500/15 flex items-center justify-center shrink-0"><span class="text-xs font-semibold text-orange-500">1</span></div>
              <div><span class="text-xs font-semibold uppercase tracking-widest text-pr-500">Week 1</span><p class="text-sm font-semibold text-fg-900 leading-snug mt-0.5 mb-1">Kickoff and access</p><p class="text-sm text-fg-500 leading-relaxed">We list the services you want more of, the suburbs you actually service, and the questions buyers ask before they call. Then we audit what Google and AI can currently read on your site.</p></div>
            </div>
            <div class="flex items-start gap-4">
              <div class="w-9 h-9 rounded-full bg-orange-500/15 flex items-center justify-center shrink-0"><span class="text-xs font-semibold text-orange-500">2</span></div>
              <div><span class="text-xs font-semibold uppercase tracking-widest text-pr-500">Day 30</span><p class="text-sm font-semibold text-fg-900 leading-snug mt-0.5 mb-1">First work goes live</p><p class="text-sm text-fg-500 leading-relaxed">Service pages, technical fixes, backlinks, directory corrections and social posts start shipping. Every item is something a buyer or a search engine can actually see.</p></div>
            </div>
            <div class="flex items-start gap-4">
              <div class="w-9 h-9 rounded-full bg-orange-500/15 flex items-center justify-center shrink-0"><span class="text-xs font-semibold text-orange-500">3</span></div>
              <div><span class="text-xs font-semibold uppercase tracking-widest text-pr-500">Month 2 onward</span><p class="text-sm font-semibold text-fg-900 leading-snug mt-0.5 mb-1">Compounding visibility</p><p class="text-sm text-fg-500 leading-relaxed">Monthly delivery continues while we track rankings, map-pack position, AI mentions and enquiry volume. Keep going while it is working, stop whenever it is not.</p></div>
            </div>
          </div>
          <p class="text-xs text-fg-500 leading-relaxed mt-5 pt-4 border-t border-bg/40">Most clients stay three to six months because that is how long local authority and AI visibility take to build. Nothing forces you to.</p>
        </div>
        <div class="border-t border-bg/40 pt-8">
          <h4 class="text-sm font-semibold text-fg-900 uppercase tracking-wide mb-5">Who this is for, and who it is not for</h4>
          <div class="grid grid-cols-1 sm:grid-cols-2 gap-6">
            <div>
              <p class="text-xs font-semibold text-orange-500 uppercase tracking-wide mb-3">Good fit</p>
              <div class="flex flex-col gap-2.5">
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You run a trade or home service business — plumbing, electrical, roofing, building, landscaping — and want booked jobs, not impressions.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You already have a website and want a specialist who does the work, not an account manager holding the file.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You want to be the business locals see in Google, in the map pack, and in the AI answer.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-orange-500 shrink-0 mt-0.5"><i class="ri-check-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You can handle more enquiries once they start arriving.</span></div>
              </div>
            </div>
            <div>
              <p class="text-xs font-semibold text-fg-500 uppercase tracking-wide mb-3">Not a fit</p>
              <div class="flex flex-col gap-2.5">
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-fg-400 shrink-0 mt-0.5"><i class="ri-close-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You want guaranteed number-one rankings or overnight results.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-fg-400 shrink-0 mt-0.5"><i class="ri-close-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You need the cheapest monthly retainer on the market.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-fg-400 shrink-0 mt-0.5"><i class="ri-close-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You do not have the crew to take on extra work.</span></div>
                <div class="flex items-start gap-2"><span class="w-3.5 h-3.5 flex items-center justify-center text-fg-400 shrink-0 mt-0.5"><i class="ri-close-line text-xs"></i></span><span class="text-xs text-fg-500 leading-relaxed">You are after a one-off tactic instead of a visibility system.</span></div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ===== Reports Snapshot Section ===== -->
<section id="reports" class="bg-bg-100 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">Transparent Reporting</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight max-w-3xl mb-6">Real Analytics. Real Transparency.</h2>
      <p class="text-base md:text-lg text-fg-500 leading-relaxed max-w-3xl">No vanity metrics. No confusing dashboards you cannot read. Just clear snapshots that show what changed, what mattered, and what comes next.</p>
    </div>
    <div class="grid grid-cols-1 lg:grid-cols-4 gap-6 lg:gap-8">
      <div class="reveal lg:col-span-3 rounded-xl bg-bg-50 border border-bg/40 overflow-hidden p-5 md:p-6">
        <span class="text-xs font-medium text-fg-400 tracking-wide mb-4 block">Organic Traffic Trend &mdash; Last 4 Months</span>
        <svg viewBox="0 0 640 300" width="100%" height="300" xmlns="http://www.w3.org/2000/svg" style="display:block;">
          <!-- Background area -->
          <rect x="0" y="0" width="640" height="300" fill="transparent"/>

          <!-- Horizontal grid lines -->
          <line x1="50" y1="35" x2="590" y2="35" style="stroke:var(--chart-grid)" stroke-width="1"/>
          <line x1="50" y1="80" x2="590" y2="80" style="stroke:var(--chart-grid)" stroke-width="1"/>
          <line x1="50" y1="125" x2="590" y2="125" style="stroke:var(--chart-grid)" stroke-width="1"/>
          <line x1="50" y1="170" x2="590" y2="170" style="stroke:var(--chart-grid)" stroke-width="1"/>
          <line x1="50" y1="215" x2="590" y2="215" style="stroke:var(--chart-grid)" stroke-width="1"/>
          <line x1="50" y1="260" x2="590" y2="260" style="stroke:var(--chart-grid)" stroke-width="1"/>

          <!-- Y-axis labels -->
          <text x="590" y="39" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="11" style="fill:var(--chart-label)">80</text>
          <text x="590" y="84" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="11" style="fill:var(--chart-label)">60</text>
          <text x="590" y="129" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="11" style="fill:var(--chart-label)">40</text>
          <text x="590" y="174" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="11" style="fill:var(--chart-label)">20</text>
          <text x="590" y="264" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="11" style="fill:var(--chart-label)">0</text>

          <!-- Baseline axis -->
          <line x1="50" y1="260" x2="590" y2="260" style="stroke:var(--chart-axis)" stroke-width="1"/>

          <!-- Data line - polyline representing the GA trend from Mar to Jun -->
          <polyline fill="none" stroke="#f97316" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"
            points="50,252 65,248 80,254 95,240 110,245 125,250 140,238 155,244 170,248 185,242 200,236 215,230 230,242 245,235 260,228 275,245 290,250 305,245 320,240 335,235 350,80 365,100 380,220 395,228 410,232 425,240 440,235 455,228 470,232 485,240 500,235 515,228 530,220 545,210 560,225 575,215 590,55"/>

          <!-- Filled area under the line -->
          <polygon fill="url(#areaGradient)" stroke="none"
            points="50,260 50,252 65,248 80,254 95,240 110,245 125,250 140,238 155,244 170,248 185,242 200,236 215,230 230,242 245,235 260,228 275,245 290,250 305,245 320,240 335,235 350,80 365,100 380,220 395,228 410,232 425,240 440,235 455,228 470,232 485,240 500,235 515,228 530,220 545,210 560,225 575,215 590,55 590,260"/>

          <!-- Gradient definition for filled area -->
          <defs>
            <linearGradient id="areaGradient" x1="0" y1="0" x2="0" y2="1">
              <stop offset="0%" stop-color="#f97316" stop-opacity="0.18"/>
              <stop offset="100%" stop-color="#f97316" stop-opacity="0.02"/>
            </linearGradient>
          </defs>

          <!-- Key data point circles (like GA annotations) -->
          <!-- Low point in March -->
          <circle cx="80" cy="254" r="5" fill="none" stroke="#f97316" stroke-width="2"/>
          <!-- Mid-April annotation -->
          <circle cx="215" cy="230" r="5" fill="none" stroke="#f97316" stroke-width="2"/>
          <!-- The big May spike -->
          <circle cx="350" cy="80" r="6" fill="#f97316" style="stroke:var(--chart-point-ring)" stroke-width="2.5"/>
          <!-- End June high point -->
          <circle cx="590" cy="55" r="5" fill="none" stroke="#f97316" stroke-width="2"/>

          <!-- X-axis month labels -->
          <text x="50" y="280" text-anchor="start" font-family="Inter,system-ui,sans-serif" font-size="12" style="fill:var(--chart-label)">01 Mar</text>
          <text x="180" y="280" text-anchor="start" font-family="Inter,system-ui,sans-serif" font-size="12" style="fill:var(--chart-label)">01 Apr</text>
          <text x="310" y="280" text-anchor="start" font-family="Inter,system-ui,sans-serif" font-size="12" style="fill:var(--chart-label)">01 May</text>
          <text x="440" y="280" text-anchor="start" font-family="Inter,system-ui,sans-serif" font-size="12" style="fill:var(--chart-label)">01 Jun</text>

          <!-- Metric summary row below chart -->
          <text x="50" y="300" font-family="Inter,system-ui,sans-serif" font-size="10" style="fill:var(--chart-label)">Active users shown (daily sessions). Peak reflects optimisation impact.</text>
        </svg>
      </div>
      <div class="flex flex-col gap-4 lg:col-span-1">
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 flex-1">
          <span class="text-xs font-medium text-fg-400 tracking-wide mb-3 block">Organic Users</span>
          <div class="flex items-baseline gap-3 mb-1"><span class="ff-heading font-bold text-3xl text-fg-950">2,847</span><span class="text-sm font-semibold text-ac-500">+34%</span></div>
          <span class="text-xs text-fg-400">vs last quarter</span>
        </div>
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 flex-1">
          <span class="text-xs font-medium text-fg-400 tracking-wide mb-3 block">Local Discovery</span>
          <div class="flex items-baseline gap-3 mb-1"><span class="ff-heading font-bold text-3xl text-fg-950">1,203</span><span class="text-sm font-semibold text-ac-500">+28%</span></div>
          <span class="text-xs text-fg-400">map pack impressions</span>
        </div>
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 flex-1">
          <span class="text-xs font-medium text-fg-400 tracking-wide mb-3 block">Avg Session Duration</span>
          <div class="flex items-baseline gap-3 mb-1"><span class="ff-heading font-bold text-3xl text-fg-950">3:42</span><span class="text-sm font-semibold text-ac-500">+19%</span></div>
          <span class="text-xs text-fg-400">engagement up</span>
        </div>
        <div class="reveal rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 flex-1">
          <span class="text-xs font-medium text-fg-400 tracking-wide mb-3 block">Goal Completions</span>
          <div class="flex items-baseline gap-3 mb-1"><span class="ff-heading font-bold text-3xl text-fg-950">156</span><span class="text-sm font-semibold text-ac-500">+41%</span></div>
          <span class="text-xs text-fg-400">enquiries &amp; calls</span>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ===== 7 Deadly Sins of Local SEO ===== -->
<section id="seven-sins" class="bg-bg-100 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">Local SEO Fundamentals</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight max-w-3xl mb-3">The 7 Deadly Sins of Local SEO</h2>
      <p class="text-base text-fg-500">The seven things quietly costing trade businesses enquiries — and why AI never mentions you</p>
    </div>
    <div class="grid grid-cols-12 gap-4 md:gap-5">
      <div class="reveal col-span-6 sm:col-span-3 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">01</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">01</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Google Business Profile</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">For a plumber or electrician this is often the first thing a buyer sees. Add services, service area, hours, and photos so Google knows exactly which jobs to send you for.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-3 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">02</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">02</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">Business Details are Inconsistent</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">Your name, address and phone should match everywhere. Old addresses and mismatched numbers quietly weaken local trust signals — the cheapest fix with the biggest upside.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-3 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">03</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">03</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Main Page Per Service</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">One &quot;Services&quot; page cannot rank for blocked drains, hot water, gas fitting and emergency call-outs at the same time. Each service needs its own page aimed at one buyer intent.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-3 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">04</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">04</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Internal Linking</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">Internal links tell Google which service pages matter most. Link from your homepage and suburb pages into the jobs you actually want more of this quarter.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-4 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">05</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">05</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Reviews</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">Reviews that mention the job and the suburb do double duty: they convince the buyer and they feed local rankings. Reply to every one so the profile stays active.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-4 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">06</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">06</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Helpful Content</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">Answer the questions buyers ask before they call: price ranges, timeframes, service area, what happens on site. That content wins the enquiry and gives AI something to quote.</p></div>
      </div>
      <div class="reveal col-span-6 sm:col-span-4 group rounded-xl bg-bg-50 border border-bg/40 p-5 md:p-6 h-full transition-all duration-300 hover:border-pr/30 relative overflow-hidden cursor-default">
        <div class="absolute top-0 right-0 text-7xl md:text-8xl ff-heading font-bold text-fg-400/30 select-none leading-none translate-x-1 -translate-y-2 sin-ghost">07</div>
        <div class="relative"><span class="ff-heading font-bold text-xs text-pr-500 tracking-wider mb-3 block">07</span><h3 class="ff-heading font-semibold text-sm md:text-base text-fg-950 leading-snug mb-2">No Social Media</h3><p class="text-xs md:text-sm text-fg-500 leading-relaxed">Job photos, reviews and finished work keep a trade business visible between searches and give buyers another reason to trust you before they ring.</p></div>
      </div>
    </div>
  </div>
</section>

<!-- ===== Difference Section ===== -->
<section id="difference" class="bg-bg-50 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="mb-14 md:mb-16 reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">What A Specialist Actually Does</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight max-w-3xl mb-6">How a specialist approach turns into booked jobs</h2>
      <p class="text-base md:text-lg text-fg-500 leading-relaxed max-w-3xl">Not a slogan. Here is exactly what changes on your site and in your search results when the work is built around buyer intent instead of generic SEO terms.</p>
    </div>
    <div class="grid grid-cols-1 md:grid-cols-3 gap-5">
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-8 h-full">
        <span class="text-xs font-medium text-fg-400 tracking-wide mb-4 block">(001)</span>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">From Keywords to Booked Jobs</h3>
        <p class="text-sm text-fg-500 leading-relaxed">I do not start with a spreadsheet of generic SEO terms. I start with what a buyer types at 7am when a pipe bursts, then build the page and the proof that wins that call.</p>
      </div>
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-8 h-full">
        <span class="text-xs font-medium text-fg-400 tracking-wide mb-4 block">(002)</span>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">From Content to Local Proof</h3>
        <p class="text-sm text-fg-500 leading-relaxed">A service page is a trust asset. Service scope, suburbs covered, reviews, schema, FAQs and photos all need to point at the same thing so Google and AI can verify it.</p>
      </div>
      <div class="reveal rounded-xl bg-bg-100 border border-bg/40 p-6 md:p-8 h-full">
        <span class="text-xs font-medium text-fg-400 tracking-wide mb-4 block">(003)</span>
        <h3 class="ff-heading font-semibold text-xl text-fg-900 leading-snug mb-4">From Reports to Clear Decisions</h3>
        <p class="text-sm text-fg-500 leading-relaxed">You get the priority, the reason, and what ships next month. That matters when you are the owner and the phone is the only dashboard you care about.</p>
      </div>
    </div>
  </div>
</section>

<!-- ===== FAQ Section ===== -->
<section id="faq" class="bg-bg-50 section-py">
  <div class="container-xl max-w-3xl mx-auto">
    <div class="mb-12 md:mb-14 text-center reveal">
      <span class="text-xs font-semibold uppercase tracking-widest text-pr-500 mb-4 block">Common Questions</span>
      <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight mb-4">Straight answers before you book a call</h2>
      <p class="text-base text-fg-500 leading-relaxed">The questions trade business owners actually ask on the first call — pricing, timelines, contracts and what gets delivered.</p>
    </div>
    <div class="flex flex-col gap-3">
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Do you do SEO for plumbers, electricians and roofers in Brisbane?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Yes. Plumbing, electrical, roofing, building, landscaping and other home service businesses are the core of what I do. I work with clients across Brisbane, Sydney, Melbourne, Redland Bay and bayside Queensland, so the pages, suburbs and keywords are built around the areas you actually service.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Can you rank a trade business for searches like emergency electrician Brisbane?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">That is exactly the type of search this work targets. Commercial, buyer-ready phrases such as emergency electrician Brisbane, blocked drain plumber Redland Bay or roof restoration Sydney get the pages and the links, not informational terms that rarely turn into a phone call.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">How long until the phone starts ringing?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Technical, content and conversion fixes usually go live in the first 30 to 60 days. Most local businesses see clear movement in enquiries inside 60 to 90 days, while competitive metro suburbs take three to six months.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Do I have to sign a lock-in contract?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">No. The $590/month package is month to month. If your priorities change you can pause or cancel with 30 days notice, with no exit fee and no awkward phone calls.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">What does the $590 a month actually cover?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Strategy plus delivery. Backlinks, brand content, local directory work and social posts are all produced each month under the one fee. No add-on invoices, no ad-spend mark-up and no setup fee.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Is it done-for-you, or do I have to write the content?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Genuinely done-for-you. I handle the links, the content, the directory corrections and the social posting. You review what ships and keep running the business.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Do I need SEO, AEO, or both?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">For most trade and local service businesses, both. SEO gets you into the map pack and the organic results. AEO gets your business named when someone asks ChatGPT or Google AI to recommend a plumber, sparkie or roofer in their suburb.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">Do you work with builders, landscapers and other home service businesses?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Yes. Builders, landscapers, roofers, concreters, pool builders and cleaners are a natural fit, because their buyers search by service plus suburb and decide quickly.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">How do you measure whether it is working?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">Enquiries, calls and form fills first, then the searches that produced them. Rankings, map-pack position and AI mentions are reported as supporting evidence, not as the headline number.</p></div></div>
      </div>
      <div class="rounded-xl bg-bg-100 border border-bg/40 overflow-hidden">
        <button type="button" class="faq-btn w-full flex items-center justify-between gap-4 px-5 md:px-6 py-4 md:py-5 text-left" aria-expanded="false">
          <span class="text-sm md:text-base font-medium text-fg-800">What platforms and websites do you work with?</span>
          <span class="faq-toggle w-6 h-6 flex items-center justify-center rounded-full bg-bg-200/60 text-fg-500 shrink-0"><i class="ri-add-line text-sm"></i></span>
        </button>
        <div class="faq-answer"><div class="faq-answer-inner px-5 md:px-6 pb-5"><p class="text-sm text-fg-500 leading-relaxed">WordPress, Shopify, Squarespace, Wix and custom builds. If your current site cannot rank without a rebuild, I will say so in week one instead of billing around the problem for six months.</p></div></div>
      </div>
    </div>
  </div>
</section>

<!-- ===== Strategy CTA Section ===== -->
<section id="strategy" class="bg-bg-100 section-py">
  <div class="container-xl max-w-6xl mx-auto">
    <div class="reveal grid grid-cols-1 lg:grid-cols-2 gap-10 lg:gap-16 items-start">
      <div>
        <h2 class="ff-heading font-semibold text-3xl md:text-4xl lg:text-5xl text-fg-950 leading-tight mb-6">No Obligation Strategy Call</h2>
        <p class="text-base text-fg-500 leading-relaxed mb-8">A relaxed 30 minutes on your current search visibility. We look at what you rank for, which suburbs are sending calls, and where a competitor is taking work that should be yours. No commitment, no agency pitch.</p>
        <a href="#contact" class="btn-cta">Book Your Free Call <span class="w-4 h-4 flex items-center justify-center"><i class="ri-arrow-down-line text-sm"></i></span></a>
      </div>
      <div class="rounded-xl bg-bg-50 border border-bg/40 p-6 md:p-8">
        <h3 class="ff-heading font-semibold text-lg text-fg-900 mb-6">What you get</h3>
        <div class="flex flex-col gap-5 mb-6">
          <div class="flex items-start gap-4"><div class="w-8 h-8 rounded-full bg-pr-950/30 flex items-center justify-center shrink-0"><span class="text-sm font-semibold text-pr-500">1</span></div><p class="text-sm text-fg-500 leading-relaxed pt-1">A live review of your current SEO and AI-search visibility gaps.</p></div>
          <div class="flex items-start gap-4"><div class="w-8 h-8 rounded-full bg-pr-950/30 flex items-center justify-center shrink-0"><span class="text-sm font-semibold text-pr-500">2</span></div><p class="text-sm text-fg-500 leading-relaxed pt-1">Three highest-priority fixes or growth opportunities.</p></div>
          <div class="flex items-start gap-4"><div class="w-8 h-8 rounded-full bg-pr-950/30 flex items-center justify-center shrink-0"><span class="text-sm font-semibold text-pr-500">3</span></div><p class="text-sm text-fg-500 leading-relaxed pt-1">A recommendation on whether Local SEO, SEO + AEO, or a content sprint fits best.</p></div>
        </div>
        <div class="rounded-lg bg-bg-100/60 p-4">
          <p class="text-xs text-fg-500 leading-relaxed"><strong class="text-fg-700">No strings attached</strong> Because the best way to see if specialist SEO + AEO advice is a fit for your business is to experience the strategy first-hand, with zero obligation to continue.</p>
        </div>
      </div>
    </div>
  </div>
</section>



<!-- ===== Scripts ===== -->
<script>
(function() {
  'use strict';

  // ===== Mobile Menu =====
  var toggle = document.getElementById('mobile-toggle');
  var menu = document.getElementById('mobile-menu');
  var icon = document.getElementById('mobile-toggle-icon');

  if (toggle && menu && icon) {
    toggle.addEventListener('click', function() {
      var isOpen = !menu.classList.contains('hidden');
      menu.classList.toggle('hidden', isOpen);
      icon.className = isOpen ? 'ri-menu-line text-xl' : 'ri-close-line text-xl';
    });

    var mobileLinks = menu.querySelectorAll('.mobile-nav-link');
    for (var i = 0; i < mobileLinks.length; i++) {
      mobileLinks[i].addEventListener('click', function(e) {
        e.preventDefault();
        var href = this.getAttribute('href');
        menu.classList.add('hidden');
        icon.className = 'ri-menu-line text-xl';

        // Scroll after menu close settles to avoid layout-shift issues
        if (href && href.startsWith('#')) {
          setTimeout(function() {
            var target = document.querySelector(href);
            if (target) {
              var offset = 80;
              var top = target.getBoundingClientRect().top + window.pageYOffset - offset;
              window.scrollTo({ top: top, behavior: 'smooth' });
            }
          }, 100);
        } else if (href && (href.startsWith('http') || href.startsWith('tel:') || href.startsWith('mailto:'))) {
          window.open(href, '_blank', 'noopener,noreferrer');
        }
      });
    }
  }

  // ===== Navbar scroll =====
  var navbar = document.getElementById('navbar');
  var logoText = document.getElementById('logo-text');
  var navDynamicLinks = navbar ? navbar.querySelectorAll('.nav-link-dynamic') : [];
  var mobileToggle = document.getElementById('mobile-toggle');

  function updateNavbar() {
    var scrolled = window.scrollY > 60;
    if (scrolled) {
      navbar.classList.add('scrolled');
      if (logoText) { logoText.classList.remove('logo-text-light'); logoText.classList.add('logo-text-dark'); }
      if (mobileToggle) { mobileToggle.classList.remove('mobile-toggle-light'); mobileToggle.classList.add('mobile-toggle-dark'); }
    } else {
      navbar.classList.remove('scrolled');
      if (logoText) { logoText.classList.remove('logo-text-dark'); logoText.classList.add('logo-text-light'); }
      if (mobileToggle) { mobileToggle.classList.remove('mobile-toggle-dark'); mobileToggle.classList.add('mobile-toggle-light'); }
    }
    for (var i = 0; i < navDynamicLinks.length; i++) {
      var link = navDynamicLinks[i];
      if (scrolled) {
        link.classList.remove('nav-link-light');
        link.classList.add('nav-link-dark');
      } else {
        link.classList.remove('nav-link-dark');
        link.classList.add('nav-link-light');
      }
    }
  }
  updateNavbar();
  window.addEventListener('scroll', updateNavbar, { passive: true });

  // ===== FAQ Accordion =====
  var faqBtns = document.querySelectorAll('.faq-btn');
  var allAnswers = document.querySelectorAll('.faq-answer');
  var allToggles = document.querySelectorAll('.faq-toggle');

  // Answers render expanded by default (so they work without JS).
  // Now that the script is running, collapse them into an accordion.
  for (var a = 0; a < allAnswers.length; a++) {
    allAnswers[a].classList.add('closed');
  }

  for (var i = 0; i < faqBtns.length; i++) {
    faqBtns[i].addEventListener('click', function() {
      var answer = this.nextElementSibling;
      var toggleEl = this.querySelector('.faq-toggle');
      var isCollapsed = answer.classList.contains('closed');

      // Close all
      for (var j = 0; j < allAnswers.length; j++) {
        allAnswers[j].classList.add('closed');
        allToggles[j].classList.remove('open');
        faqBtns[j].setAttribute('aria-expanded', 'false');
      }

      // Open clicked if it was closed
      if (isCollapsed) {
        answer.classList.remove('closed');
        toggleEl.classList.add('open');
        this.setAttribute('aria-expanded', 'true');
      }
    });
  }

  // ===== Scroll Reveal =====
  var revealEls = document.querySelectorAll('.reveal');
  var revealReady = false;

  function showReveal(el) { el.classList.add('visible'); }

  function revealEverything() {
    for (var n = 0; n < revealEls.length; n++) { showReveal(revealEls[n]); }
  }

  if ('IntersectionObserver' in window) {
    var revealObserver = new IntersectionObserver(function(entries) {
      for (var k = 0; k < entries.length; k++) {
        if (entries[k].isIntersecting) {
          showReveal(entries[k].target);
          revealObserver.unobserve(entries[k].target);
        }
      }
    }, { rootMargin: '0px 0px -80px 0px', threshold: 0.01 });

    for (var r = 0; r < revealEls.length; r++) { revealObserver.observe(revealEls[r]); }
    revealReady = true;
  } else {
    var checkReveal = function() {
      var windowHeight = window.innerHeight;
      for (var m = 0; m < revealEls.length; m++) {
        if (revealEls[m].getBoundingClientRect().top < windowHeight - 80) {
          showReveal(revealEls[m]);
        }
      }
    };
    checkReveal();
    window.addEventListener('scroll', checkReveal, { passive: true });
    revealReady = true;
  }

  // Safety net: if anything above failed to initialise, show all content
  // rather than leaving sections invisible.
  window.setTimeout(function() {
    if (!revealReady || !document.querySelector('.reveal.visible')) {
      revealEverything();
    }
  }, 1500);

  // ===== Smooth scroll for hash links (handles fixed header offset) =====
  var hashLinks = document.querySelectorAll('a[href^="#"]');
  for (var i = 0; i < hashLinks.length; i++) {
    hashLinks[i].addEventListener('click', function(e) {
      var href = this.getAttribute('href');
      if (!href || href === '#') return;
      var target = document.querySelector(href);
      if (target) {
        e.preventDefault();
        var offset = 80;
        var top = target.getBoundingClientRect().top + window.pageYOffset - offset;
        window.scrollTo({ top: top, behavior: 'smooth' });
      } else if (href === '#contact') {
        // Contact form is not inside this embed — it sits between this embed and the footer on the page.
        // Try the footer as an anchor, or fall back to near-bottom of page.
        e.preventDefault();
        var footer = document.getElementById('tbe-footer');
        var scrollTop;
        if (footer) {
          // Footer found — scroll to just above it so the contact form is visible
          scrollTop = footer.getBoundingClientRect().top + window.pageYOffset - (window.innerHeight * 0.6);
        } else {
          // No footer anchor — scroll to near bottom of page
          var docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
          scrollTop = docHeight - (window.innerHeight * 1.1);
        }
        window.scrollTo({ top: Math.max(0, scrollTop), behavior: 'smooth' });
      }
    });
  }

})();
</script>

<!-- Structured Data: LocalBusiness -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "The Brand Express",
  "description": "Australia-wide SEO and AEO consultant for trade and home service businesses, including plumbers, electricians, roofers, builders and landscapers. Serving Brisbane, Sydney, Melbourne, Redland Bay and bayside Queensland.",
  "serviceType": ["SEO for plumbers", "SEO for electricians", "SEO for roofers", "SEO for builders and landscapers", "Local SEO", "Answer engine optimisation"],
  "url": "https://thebrandexpress.com.au/",
  "telephone": "+61411145312",
  "email": "info@thebrandexpress.com.au",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "39 Kardinia Street",
    "addressLocality": "Redland Bay",
    "addressRegion": "QLD",
    "postalCode": "4165",
    "addressCountry": "AU"
  },
  "areaServed": [{"@type":"City","name":"Brisbane"},{"@type":"City","name":"Sydney"},{"@type":"City","name":"Melbourne"},{"@type":"City","name":"Redland Bay"}],
  "priceRange": "$590/month",
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "17:00"
  }
}
</script>

<!-- Structured Data: FAQPage -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {"@type":"Question","name":"Do you do SEO for plumbers, electricians and roofers in Brisbane?","acceptedAnswer":{"@type":"Answer","text":"Yes. Plumbing, electrical, roofing, building, landscaping and other home service businesses are the core of what I do. I work with clients across Brisbane, Sydney, Melbourne, Redland Bay and bayside Queensland, so the pages, suburbs and keywords are built around the areas you actually service."}},
    {"@type":"Question","name":"Can you rank a trade business for searches like emergency electrician Brisbane?","acceptedAnswer":{"@type":"Answer","text":"That is exactly the type of search this work targets. Commercial, buyer-ready phrases such as emergency electrician Brisbane, blocked drain plumber Redland Bay or roof restoration Sydney get the pages and the links, not informational terms that rarely turn into a phone call."}},
    {"@type":"Question","name":"How long until the phone starts ringing?","acceptedAnswer":{"@type":"Answer","text":"Technical, content and conversion fixes usually go live in the first 30 to 60 days. Most local businesses see clear movement in enquiries inside 60 to 90 days, while competitive metro suburbs take three to six months."}},
    {"@type":"Question","name":"Do I have to sign a lock-in contract?","acceptedAnswer":{"@type":"Answer","text":"No. The $590/month package is month to month. If your priorities change you can pause or cancel with 30 days notice, with no exit fee and no awkward phone calls."}},
    {"@type":"Question","name":"What does the $590 a month actually cover?","acceptedAnswer":{"@type":"Answer","text":"Strategy plus delivery. Backlinks, brand content, local directory work and social posts are all produced each month under the one fee. No add-on invoices, no ad-spend mark-up and no setup fee."}},
    {"@type":"Question","name":"Is it done-for-you, or do I have to write the content?","acceptedAnswer":{"@type":"Answer","text":"Genuinely done-for-you. I handle the links, the content, the directory corrections and the social posting. You review what ships and keep running the business."}},
    {"@type":"Question","name":"Do I need SEO, AEO, or both?","acceptedAnswer":{"@type":"Answer","text":"For most trade and local service businesses, both. SEO gets you into the map pack and the organic results. AEO gets your business named when someone asks ChatGPT or Google AI to recommend a plumber, sparkie or roofer in their suburb."}},
    {"@type":"Question","name":"Do you work with builders, landscapers and other home service businesses?","acceptedAnswer":{"@type":"Answer","text":"Yes. Builders, landscapers, roofers, concreters, pool builders and cleaners are a natural fit, because their buyers search by service plus suburb and decide quickly."}},
    {"@type":"Question","name":"How do you measure whether it is working?","acceptedAnswer":{"@type":"Answer","text":"Enquiries, calls and form fills first, then the searches that produced them. Rankings, map-pack position and AI mentions are reported as supporting evidence, not as the headline number."}},
    {"@type":"Question","name":"What platforms and websites do you work with?","acceptedAnswer":{"@type":"Answer","text":"WordPress, Shopify, Squarespace, Wix and custom builds. If your current site cannot rank without a rebuild, I will say so in week one instead of billing around the problem for six months."}}
  ]
}
</script>

</div>

</body>
</html>