<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
    <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png" />
    <link rel="apple-touch-icon" sizes="192x192" href="/favicon-192.png" />
    <link rel="manifest" href="/manifest.json" />
    <title>Custom Branded Mats | #1 Custom Mat & Signage Supplier in South Africa</title>
    <meta name="description" content="Shop custom branded mats, personalised photo door mats, pet mats, logo mats, acrylic door signs & anti-fatigue mats. Free delivery nationwide in South Africa." />
    <meta name="keywords" content="custom mats, personalised door mats, pet photo mats, logo mats, acrylic door signs, anti-fatigue mats, South Africa" />
    <meta name="author" content="Custom Branded Mats" />
    <meta name="robots" content="index, follow" />
    <meta name="google-site-verification" content="ZGTSSn4fp0C3MXhBkGg1psETmckP0dENr-xL3b6wT4Y" />
    <link rel="canonical" href="https://custombrandedmats.com/" />

    <!-- Preconnect to external domains for faster loading -->
    <link rel="preconnect" href="https://custombrandedmats.com" />

    <!-- Fonts: self-hosted woff2, same-origin, no external CSS request -->
    <link rel="preload" as="font" type="font/woff2" href="/fonts/dm-sans-400-latin.woff2" crossorigin />
    <link rel="preload" as="font" type="font/woff2" href="/fonts/space-grotesk-700-latin.woff2" crossorigin />
    <style>
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/dm-sans-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/dm-sans-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/dm-sans-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/dm-sans-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/dm-sans-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
      @font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/dm-sans-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
      @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/space-grotesk-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
      @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/space-grotesk-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
      @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/space-grotesk-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
      @font-face{font-family:'Space Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/space-grotesk-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
    </style>

    <!-- DNS prefetch for WooCommerce shop subdomain -->
    <link rel="dns-prefetch" href="https://custombrandedmats.com" />

    <meta property="og:title" content="Custom Branded Mats | Custom Door Mats South Africa" />
    <meta property="og:description" content="Custom branded mats & personalised home products with free delivery nationwide. Pet mats, logo mats, acrylic signs & more." />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://custombrandedmats.com/" />
    <meta property="og:image" content="https://custombrandedmats.com/og-image.png" />

    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="Custom Branded Mats | Custom Door Mats South Africa" />
    <meta name="twitter:description" content="Custom branded mats & personalised home products with free delivery nationwide." />
    <meta name="twitter:image" content="https://custombrandedmats.com/og-image.png" />
    
    <!-- Theme color for PWA -->
    <meta name="theme-color" content="#1a3c2a" />

    <!-- Critical above-the-fold styles for the pre-hydration hero shell.
         Lets the browser paint real hero copy before the React bundle
         finishes parsing, instead of staring at a blank #root for ~3s. -->
    <style>
      /* Mirrors the rendered HeroSection box model so React's hydration paint
         is not registered as a new, larger LCP candidate. */
      #root{min-height:100vh}
      .boot-hero{background:hsl(224 61% 15%);color:#fff;padding:3rem 1rem;font-family:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif}
      .boot-hero__inner{width:100%;max-width:1280px;margin:0 auto}
      .boot-hero__copy{max-width:36rem}
      .boot-hero__badge{display:inline-block;padding:.375rem .75rem;border-radius:9999px;background:hsl(209 44% 56% / .2);font-size:.75rem;font-weight:600;margin-bottom:1.25rem}
      .boot-hero__title{font-family:'Space Grotesk',system-ui,sans-serif;font-weight:700;font-size:2.25rem;line-height:1.05;margin:0 0 1rem}
      .boot-hero__sub{font-family:'Space Grotesk',system-ui,sans-serif;font-weight:500;font-size:1.125rem;line-height:1.5;color:hsl(209 44% 56%);margin:0 0 .75rem}
      .boot-hero__desc{font-size:1rem;line-height:1.625;color:rgba(255,255,255,.8);margin:0 0 1.75rem}
      .boot-hero__desc em{font-style:normal;font-weight:500;color:hsl(209 44% 56%)}
      .boot-hero__cta{display:inline-block;padding:.875rem 1.75rem;border-radius:.5rem;background:hsl(209 44% 56%);color:hsl(224 61% 15%);font-weight:700;text-decoration:none}
      @media (min-width:768px){.boot-hero{padding:4rem 1.5rem}.boot-hero__title{font-size:3rem}.boot-hero__sub{font-size:1.25rem}.boot-hero__desc{font-size:1.125rem}}
    </style>

    <!-- Google Analytics 4 — queued immediately, network/parse deferred until the
         main thread is idle (or the first user interaction) to protect LCP/INP. -->
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-2TTBRY0EEC');
      (function () {
        var loaded = false;
        function loadGtag() {
          if (loaded) return;
          loaded = true;
          var s = document.createElement('script');
          s.async = true;
          s.src = 'https://www.googletagmanager.com/gtag/js?id=G-2TTBRY0EEC';
          document.head.appendChild(s);
        }
        ['pointerdown', 'keydown', 'touchstart', 'scroll'].forEach(function (evt) {
          window.addEventListener(evt, loadGtag, { once: true, passive: true });
        });
        // 479 KB of tag-manager payload competes directly with LCP on 4G,
        // so hold it until well after the page has settled.
        window.addEventListener('load', function () {
          if ('requestIdleCallback' in window) {
            requestIdleCallback(loadGtag, { timeout: 8000 });
          } else {
            setTimeout(loadGtag, 6000);
          }
        });
      })();
    </script>
    <script type="module" crossorigin src="/assets/index-BCgrJNSh.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/react-vendor-BvllnCM9.js">
    <link rel="modulepreload" crossorigin href="/assets/data-vendor-DgL34ojr.js">
    <link rel="stylesheet" crossorigin href="/assets/index-Bn4Ng54l.css">
  <script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script></head>

  <body>
    <div id="root">
      <!-- Pre-hydration hero shell. React replaces this on mount; the copy
           mirrors the default hero variation so there is no content shift. -->
      <div class="boot-hero" id="boot-hero">
        <div class="boot-hero__inner">
          <div class="boot-hero__copy">
            <span class="boot-hero__badge">&#127487;&#127462; South Africa's Complete Branding Partner</span>
            <h1 class="boot-hero__title">Complete Business Branding Solutions</h1>
            <p class="boot-hero__sub">Mats + Signage + Everything In Between</p>
            <p class="boot-hero__desc">South Africa's ONLY supplier offering custom branded mats AND professional signage under one roof. From entrance mats to pull-up banners, gazebos to vehicle branding - we do it all. <em>Free delivery across South Africa &bull; Made in South Africa</em></p>
            <a class="boot-hero__cta" href="/custom-mat">Design Custom Mat</a>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>