<!DOCTYPE html><html lang="en" data-beasties-container><head>
  <meta charset="utf-8">
  <title>Pineau Labs - AI-Powered Software Sprints</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Short, fixed-scope software sprints powered by agentic AI. Pick from a catalog of 1-12 week engagements: prototype, MVP, AI integration, security, code audit, SOC 2, HIPAA. Built by a 25-year engineer and former CTO based in Charlottetown, PEI.">
  <meta name="keywords" content="AI codebase hardening, AI security scanning, Claude Code setup, Codex setup, AGENTS.md, AI penetration testing, AI development tools, fractional CTO, MVP development, AI consulting Charlottetown, AI software PEI, AI development Prince Edward Island, software consulting PEI, AI developer Charlottetown PEI, AI services Atlantic Canada">
  <meta name="robots" content="index, follow">
  <link rel="canonical" href="https://www.pineaulabs.com/">
  <link rel="icon" type="image/svg+xml" href="favicon.svg">
  <link rel="icon" type="image/png" href="favicon.png">
  <link rel="apple-touch-icon" href="favicon.png">

  <!-- Open Graph defaults (overridden per-page by MetaService) -->
  <meta property="og:type" content="website">
  <meta property="og:site_name" content="Pineau Labs">
  <meta property="og:locale" content="en_CA">
  <meta property="og:image" content="https://www.pineaulabs.com/pineaulabs-logo-share.jpg">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
  <meta property="og:title" content="Pineau Labs - AI-Powered Software Sprints">
  <meta property="og:description" content="Short, fixed-scope software sprints powered by agentic AI. Pick from a catalog of 1-12 week engagements: prototype, MVP, AI integration, security, code audit, SOC 2, HIPAA. Built by a 25-year engineer and former CTO based in Charlottetown, PEI.">
  <meta property="og:url" content="https://www.pineaulabs.com/">

  <!-- Twitter Card defaults -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@bradpineau">
  <meta name="twitter:creator" content="@bradpineau">
  <meta name="twitter:title" content="Pineau Labs - AI-Powered Software Sprints">
  <meta name="twitter:description" content="Short, fixed-scope software sprints powered by agentic AI. Pick from a catalog of 1-12 week engagements: prototype, MVP, AI integration, security, code audit, SOC 2, HIPAA. Built by a 25-year engineer and former CTO based in Charlottetown, PEI.">
  <meta name="twitter:image" content="https://www.pineaulabs.com/pineaulabs-logo-share.jpg">

  <!-- Fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <style>@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.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:'Inter';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.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:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.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:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.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:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.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:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.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:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.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:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.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:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.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:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.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>

  <!-- Structured Data: Organization -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "Pineau Labs",
    "url": "https://www.pineaulabs.com",
    "logo": "https://www.pineaulabs.com/pineaulabs-logo-share.jpg",
    "description": "AI codebase hardening and software consulting in Charlottetown, Prince Edward Island (PEI), Canada. AI-powered security scanning, development tool setup, fractional CTO consulting, and MVP development.",
    "email": "brad@pineaulabs.com",
    "founder": {
      "@type": "Person",
      "name": "Brad Pineau"
    },
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Charlottetown",
      "addressRegion": "PE",
      "addressCountry": "CA"
    },
    "sameAs": [
      "https://www.linkedin.com/in/bradpineau/",
      "https://x.com/bradpineau"
    ]
  }
  </script>

  <!-- Structured Data: WebSite -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "Pineau Labs",
    "url": "https://www.pineaulabs.com"
  }
  </script>

  <!-- Structured Data: ProfessionalService -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "ProfessionalService",
    "name": "Pineau Labs",
    "url": "https://www.pineaulabs.com",
    "logo": "https://www.pineaulabs.com/pineaulabs-logo-share.jpg",
    "description": "AI codebase hardening and software consulting in Charlottetown, Prince Edward Island (PEI), Canada. AI-powered security scanning, development tool setup, fractional CTO consulting, and MVP development.",
    "email": "brad@pineaulabs.com",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Charlottetown",
      "addressRegion": "PE",
      "addressCountry": "CA"
    },
    "areaServed": [
      {
        "@type": "City",
        "name": "Charlottetown",
        "containedInPlace": {
          "@type": "AdministrativeArea",
          "name": "Prince Edward Island"
        }
      },
      {
        "@type": "Country",
        "name": "Canada"
      },
      "Worldwide"
    ],
    "priceRange": "$$$$",
    "serviceType": [
      "AI Codebase Hardening",
      "AI Security Scanning",
      "AI Penetration Testing",
      "Claude Code Setup & Configuration",
      "AGENTS.md Configuration",
      "AI Development Tool Setup",
      "Fractional CTO Consulting",
      "MVP Development",
      "Custom AI Consulting"
    ],
    "knowsAbout": [
      "AI Codebase Security",
      "Agentic AI Development",
      "Claude Code",
      "Codex",
      "AGENTS.md Configuration",
      "AI Penetration Testing",
      "Frontier AI Models",
      "HIPAA Compliance",
      "Model Context Protocol"
    ]
  }
  </script>

  <!-- Google Analytics (production only) -->
  <script>
  if (window.location.hostname === 'pineaulabs.com' || window.location.hostname === 'www.pineaulabs.com') {
    var s = document.createElement('script');
    s.async = true;
    s.src = 'https://www.googletagmanager.com/gtag/js?id=G-3EVR5ZGT2N';
    document.head.appendChild(s);
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'G-3EVR5ZGT2N');
  }
  </script>
<style>:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #E8912D;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 232, 145, 45;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: rgb(92.8, 58, 18);--bs-secondary-text-emphasis: rgb(43.2, 46.8, 50);--bs-success-text-emphasis: rgb(10, 54, 33.6);--bs-info-text-emphasis: rgb(5.2, 80.8, 96);--bs-warning-text-emphasis: rgb(102, 77.2, 2.8);--bs-danger-text-emphasis: rgb(88, 21.2, 27.6);--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: rgb(250.4, 233, 213);--bs-secondary-bg-subtle: rgb(225.6, 227.4, 229);--bs-success-bg-subtle: rgb(209, 231, 220.8);--bs-info-bg-subtle: rgb(206.6, 244.4, 252);--bs-warning-bg-subtle: rgb(255, 242.6, 205.4);--bs-danger-bg-subtle: rgb(248, 214.6, 217.8);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(245.8, 211, 171);--bs-secondary-border-subtle: rgb(196.2, 199.8, 203);--bs-success-border-subtle: rgb(163, 207, 186.6);--bs-info-border-subtle: rgb(158.2, 233.8, 249);--bs-warning-border-subtle: rgb(255, 230.2, 155.8);--bs-danger-border-subtle: rgb(241, 174.2, 180.6);--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #1a1a1a;--bs-body-color-rgb: 26, 26, 26;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(26, 26, 26, .75);--bs-secondary-color-rgb: 26, 26, 26;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(26, 26, 26, .5);--bs-tertiary-color-rgb: 26, 26, 26;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #E8912D;--bs-link-color-rgb: 232, 145, 45;--bs-link-decoration: underline;--bs-link-hover-color: rgb(185.6, 116, 36);--bs-link-hover-color-rgb: 186, 116, 36;--bs-code-color: #d63384;--bs-highlight-color: #1a1a1a;--bs-highlight-bg: rgb(255, 242.6, 205.4);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(232, 145, 45, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,h3,h2,h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3{font-size:1.75rem}}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}ul{padding-left:2rem}ul{margin-top:0;margin-bottom:1rem}.small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}img{vertical-align:middle}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}button,[type=button]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled){cursor:pointer}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.container{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}@media (min-width: 1400px){.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.g-4{--bs-gutter-x: 1.5rem}.g-4{--bs-gutter-y: 1.5rem}.g-5{--bs-gutter-x: 3rem}.g-5{--bs-gutter-y: 3rem}@media (min-width: 768px){.col-md-6{flex:0 0 auto;width:50%}}@media (min-width: 992px){.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.offset-lg-1{margin-left:8.33333333%}}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn:first-child:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn:first-child:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #000;--bs-btn-bg: #E8912D;--bs-btn-border-color: #E8912D;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(235.45, 161.5, 76.5);--bs-btn-hover-border-color: rgb(234.3, 156, 66);--bs-btn-focus-shadow-rgb: 197, 123, 38;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(236.6, 167, 87);--bs-btn-active-border-color: rgb(234.3, 156, 66);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #E8912D;--bs-btn-disabled-border-color: #E8912D}.btn-outline-primary{--bs-btn-color: #E8912D;--bs-btn-border-color: #E8912D;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #E8912D;--bs-btn-hover-border-color: #E8912D;--bs-btn-focus-shadow-rgb: 232, 145, 45;--bs-btn-active-color: #000;--bs-btn-active-bg: #E8912D;--bs-btn-active-border-color: #E8912D;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #E8912D;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #E8912D;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-lg{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.collapse:not(.show){display:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #e8912d40}.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2826, 26, 26, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}:root{--bs-btn-close-filter: }:root{--bs-carousel-indicator-active-bg: #fff;--bs-carousel-caption-color: #fff;--bs-carousel-control-icon-filter: }.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.opacity-75{opacity:.75!important}.d-flex{display:flex!important}.d-none{display:none!important}.border-0{border:0!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.align-items-center{align-items:center!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-3{margin-right:1rem!important}.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.ms-1{margin-left:.25rem!important}.ms-auto{margin-left:auto!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.gap-3{gap:1rem!important}.fw-medium{font-weight:500!important}.fw-bold{font-weight:700!important}.text-center{text-align:center!important}.text-uppercase{text-transform:uppercase!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}@media (min-width: 992px){.d-lg-block{display:block!important}.align-items-lg-center{align-items:center!important}}@font-face{font-display:block;font-family:bootstrap-icons;src:url("./media/bootstrap-icons-CVBWLLHT.woff2?e34853135f9e39acf64315236852cd5a") format("woff2"),url("./media/bootstrap-icons-VQNJTM6Q.woff?e34853135f9e39acf64315236852cd5a") format("woff")}.bi:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-arrow-right:before{content:"\f138"}body{color:#1a1a1a;padding-top:66px;background:#faf9f7;line-height:1.4}a{text-decoration:none}.text-primary{color:#e8912d!important}.text-muted{color:#6b7280!important}.btn-primary{font-weight:600;color:#fff;border:none}.btn-primary:hover,.btn-primary:focus,.btn-primary:active{color:#fff;background-color:#c97a1f}.btn-outline-primary:hover{color:#fff}section{padding:5rem 0}.bg-dark-section{background:#0f1923;color:#fff}h1,h2,h3{letter-spacing:-.02em}h1{line-height:1.1}h2{line-height:1.2}.lead{font-weight:400;line-height:1.5}@media (max-width: 767.98px){.container{padding-left:1.5rem;padding-right:1.5rem}section{padding:3.5rem 0}}
</style><link rel="stylesheet" href="styles-B3YECVDJ.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-B3YECVDJ.css"></noscript><style ng-app-id="ng">.navbar[_ngcontent-ng-c3288454965]{background:#fff;box-shadow:0 1px 3px #0000000f;padding-top:.25rem;padding-bottom:.25rem}.nav-link.active[_ngcontent-ng-c3288454965]{color:#e8912d!important;font-weight:600}.navbar-logo[_ngcontent-ng-c3288454965]{height:48px;width:auto}.nav-link[_ngcontent-ng-c3288454965]{font-weight:500;font-size:.925rem;color:#1a1a1a;padding-left:1.1rem!important;padding-right:1.1rem!important;transition:color .15s}.nav-link[_ngcontent-ng-c3288454965]:hover{color:#e8912d}.btn-primary[_ngcontent-ng-c3288454965]{font-size:.925rem}@media (max-width: 991.98px){.btn-primary[_ngcontent-ng-c3288454965]{margin-top:.75rem}}</style><style ng-app-id="ng">footer[_ngcontent-ng-c221709104]{background:#0f1923;color:#fff;padding:4rem 0 2rem}.footer-logo[_ngcontent-ng-c221709104]{height:42px;width:auto}.footer-link[_ngcontent-ng-c221709104]{color:#6b7280;font-size:.875rem;transition:color .15s}.footer-link[_ngcontent-ng-c221709104]:hover{color:#e8912d}</style><style ng-app-id="ng">.hero[_ngcontent-ng-c2562117009]{background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E"),radial-gradient(ellipse at 15% 50%,rgba(232,145,45,.12) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(232,145,45,.06) 0%,transparent 40%),linear-gradient(160deg,#0f1923,#162033 40%,#1a1a2e);padding:7rem 0 6rem}.hero-eyebrow[_ngcontent-ng-c2562117009]{text-transform:uppercase;font-weight:700;font-size:.8rem;letter-spacing:.18em;color:#e8912d;margin-bottom:1rem}.hero-headline[_ngcontent-ng-c2562117009]{font-size:clamp(2.5rem,5vw,3.75rem);font-weight:700;color:#fff;max-width:800px;line-height:1.05}.hero-sub[_ngcontent-ng-c2562117009]{font-size:1.2rem;line-height:1.7;color:#ffffffb8;max-width:620px}.terminal[_ngcontent-ng-c2562117009]{background:#0a0e14;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.08);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.78rem;line-height:1.65}.terminal-bar[_ngcontent-ng-c2562117009]{background:#ffffff0d;padding:10px 14px;display:flex;gap:6px}.terminal-dot[_ngcontent-ng-c2562117009]{width:10px;height:10px;border-radius:50%;background:#ffffff1f}.terminal-body[_ngcontent-ng-c2562117009]{padding:16px 20px}.terminal-line[_ngcontent-ng-c2562117009]{margin:0;color:#e0e0e0;white-space:nowrap}.t-muted[_ngcontent-ng-c2562117009]{color:#5a6270}.t-flag[_ngcontent-ng-c2562117009]{color:#7ec8e3}.t-warn[_ngcontent-ng-c2562117009]{color:#ff6b6b;font-weight:600}.t-orange[_ngcontent-ng-c2562117009]{color:#e8912d;font-weight:600}.t-mid[_ngcontent-ng-c2562117009]{color:#ffd93d;font-weight:600}.t-green[_ngcontent-ng-c2562117009]{color:#6bcb77}.catalog-band[_ngcontent-ng-c2562117009]{background:#faf9f7}.eyebrow[_ngcontent-ng-c2562117009]{text-transform:uppercase;font-weight:700;font-size:.8rem;letter-spacing:.12em;color:#e8912d;margin-bottom:.75rem}.leverage-band[_ngcontent-ng-c2562117009]{background:#0f1923;color:#fff}.leverage-band[_ngcontent-ng-c2562117009]   .eyebrow[_ngcontent-ng-c2562117009]{color:#e8912d}.leverage-grid[_ngcontent-ng-c2562117009]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.leverage-card[_ngcontent-ng-c2562117009]{background:#ffffff08;border:1px solid rgba(232,145,45,.18);border-radius:12px;padding:1.5rem;position:relative;overflow:hidden}.leverage-card[_ngcontent-ng-c2562117009]:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(232,145,45,.5) 50%,transparent 100%)}.leverage-card-wide[_ngcontent-ng-c2562117009]{grid-column:span 2;background:#e8912d14;border-color:#e8912d66}.leverage-stat[_ngcontent-ng-c2562117009]{font-size:2.5rem;font-weight:800;color:#e8912d;line-height:1;margin-bottom:.5rem;letter-spacing:-.02em}.leverage-label[_ngcontent-ng-c2562117009]{font-size:.85rem;color:#ffffffb3;line-height:1.5;margin-bottom:0}.phone-mockup[_ngcontent-ng-c2562117009]{width:220px;height:460px;background:#000;border-radius:28px;padding:4px;position:relative;box-shadow:0 0 0 1px #ffffff1a,0 20px 50px #00000040,inset 0 0 0 1px #ffffff0d}.phone-notch[_ngcontent-ng-c2562117009]{position:absolute;top:14px;left:50%;transform:translate(-50%);width:72px;height:22px;background:#000;border-radius:20px;z-index:2}.phone-screen[_ngcontent-ng-c2562117009]{width:100%;height:100%;border-radius:24px;overflow:hidden;background:#000}.phone-screen[_ngcontent-ng-c2562117009]   img[_ngcontent-ng-c2562117009]{width:100%;height:100%;object-fit:cover;object-position:top center}.cta-section[_ngcontent-ng-c2562117009]{padding:5rem 0}@media (max-width: 575.98px){.leverage-grid[_ngcontent-ng-c2562117009]{grid-template-columns:1fr}}</style><style ng-app-id="ng">.sprint-card[_ngcontent-ng-c2226700065]{display:flex;flex-direction:column;background:#fff;border:1px solid #ececec;border-radius:12px;padding:1.75rem;height:100%;color:inherit;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.sprint-card[_ngcontent-ng-c2226700065]:hover{transform:translateY(-3px);box-shadow:0 10px 28px #00000012;border-color:#e8912d80}.card-top[_ngcontent-ng-c2226700065]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.card-eyebrow[_ngcontent-ng-c2226700065]{text-transform:uppercase;font-weight:700;font-size:.7rem;letter-spacing:.12em;color:#e8912d}.card-coming-soon[_ngcontent-ng-c2226700065]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#6b7280;background:#f3f3f0;padding:.2rem .55rem;border-radius:999px}.card-title[_ngcontent-ng-c2226700065]{font-size:1.35rem;font-weight:700;margin-bottom:.5rem;color:#1a1a1a}.card-tagline[_ngcontent-ng-c2226700065]{color:#6b7280;font-size:.95rem;line-height:1.55;flex-grow:1;margin-bottom:1.25rem}.card-foot[_ngcontent-ng-c2226700065]{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid #f0f0f0}.card-price[_ngcontent-ng-c2226700065]{font-weight:600;font-size:.9rem;color:#1a1a1a}.card-arrow[_ngcontent-ng-c2226700065]{color:#e8912d;font-size:1.1rem}</style></head>
<body><!--nghm--><script type="text/javascript" id="ng-event-dispatch-contract">(()=>{function p(t,n,r,o,e,i,f,m){return{eventType:t,event:n,targetElement:r,eic:o,timeStamp:e,eia:i,eirp:f,eiack:m}}function u(t){let n=[],r=e=>{n.push(e)};return{c:t,q:n,et:[],etc:[],d:r,h:e=>{r(p(e.type,e,e.target,t,Date.now()))}}}function s(t,n,r){for(let o=0;o<n.length;o++){let e=n[o];(r?t.etc:t.et).push(e),t.c.addEventListener(e,t.h,r)}}function c(t,n,r,o,e=window){let i=u(t);e._ejsas||(e._ejsas={}),e._ejsas[n]=i,s(i,r),s(i,o,!0)}window.__jsaction_bootstrap=c;})();
</script><script>window.__jsaction_bootstrap(document.body,"ng",["click"],[]);</script>
  <app-root ng-version="19.2.18" ngh="3" ng-server-context="ssg"><app-navbar _nghost-ng-c3288454965 ngh="0"><nav _ngcontent-ng-c3288454965 class="navbar navbar-expand-lg fixed-top"><div _ngcontent-ng-c3288454965 class="container"><a _ngcontent-ng-c3288454965 routerlink="/" class="navbar-brand" href="/" jsaction="click:;"><img _ngcontent-ng-c3288454965 src="pineaulabs-logo-dark.svg" alt="Pineau Labs" class="navbar-logo"></a><button _ngcontent-ng-c3288454965 type="button" aria-controls="navbarNav" aria-label="Toggle navigation" class="navbar-toggler border-0" aria-expanded="false" jsaction="click:;"><span _ngcontent-ng-c3288454965 class="navbar-toggler-icon"></span></button><div _ngcontent-ng-c3288454965 id="navbarNav" class="collapse navbar-collapse"><ul _ngcontent-ng-c3288454965 class="navbar-nav ms-auto me-3 align-items-lg-center"><li _ngcontent-ng-c3288454965 class="nav-item"><a _ngcontent-ng-c3288454965 routerlink="/" routerlinkactive="active" class="nav-link active" href="/" jsaction="click:;">Home</a></li><li _ngcontent-ng-c3288454965 class="nav-item"><a _ngcontent-ng-c3288454965 routerlink="/services" routerlinkactive="active" class="nav-link" href="/services" jsaction="click:;">Services</a></li><li _ngcontent-ng-c3288454965 class="nav-item"><a _ngcontent-ng-c3288454965 routerlink="/about" routerlinkactive="active" class="nav-link" href="/about" jsaction="click:;">About</a></li></ul><a _ngcontent-ng-c3288454965 routerlink="/contact" class="btn btn-primary px-4" href="/contact" jsaction="click:;">Get in Touch</a></div></div></nav></app-navbar><main><router-outlet></router-outlet><app-home _nghost-ng-c2562117009 ngh="2"><section _ngcontent-ng-c2562117009 class="hero"><div _ngcontent-ng-c2562117009 class="container"><div _ngcontent-ng-c2562117009 class="row g-5 align-items-center"><div _ngcontent-ng-c2562117009 class="col-lg-7"><p _ngcontent-ng-c2562117009 class="hero-eyebrow">Pineau Labs</p><h1 _ngcontent-ng-c2562117009 class="hero-headline"> Software sprints,<br _ngcontent-ng-c2562117009><span _ngcontent-ng-c2562117009 class="text-primary">powered by agentic AI.</span></h1><p _ngcontent-ng-c2562117009 class="hero-sub mt-4"> Pick a sprint from the catalog. I deliver it in 1 to 12 weeks with frontier AI agents working alongside me. 25 years of engineering judgment plus daily agentic AI practice equals timelines that were not possible three years ago. </p><div _ngcontent-ng-c2562117009 class="d-flex gap-3 flex-wrap mt-5"><a _ngcontent-ng-c2562117009 routerlink="/services" class="btn btn-primary btn-lg px-4" href="/services" jsaction="click:;">See the sprint catalog</a><a _ngcontent-ng-c2562117009 routerlink="/contact" class="btn btn-outline-light btn-lg px-4" href="/contact" jsaction="click:;">Get in Touch</a></div></div><div _ngcontent-ng-c2562117009 class="col-lg-5 d-none d-lg-block"><div _ngcontent-ng-c2562117009 class="terminal"><div _ngcontent-ng-c2562117009 class="terminal-bar"><span _ngcontent-ng-c2562117009 class="terminal-dot"></span><span _ngcontent-ng-c2562117009 class="terminal-dot"></span><span _ngcontent-ng-c2562117009 class="terminal-dot"></span></div><div _ngcontent-ng-c2562117009 class="terminal-body"><p _ngcontent-ng-c2562117009 class="terminal-line"><span _ngcontent-ng-c2562117009 class="t-muted">$</span> claude <span _ngcontent-ng-c2562117009 class="t-flag">--sprint security</span></p><p _ngcontent-ng-c2562117009 class="terminal-line t-muted">Loading codebase context (847 files)...</p><p _ngcontent-ng-c2562117009 class="terminal-line t-muted">Launching 3 parallel agents</p><p _ngcontent-ng-c2562117009 class="terminal-line">&nbsp;</p><p _ngcontent-ng-c2562117009 class="terminal-line"><span _ngcontent-ng-c2562117009 class="t-green">✓</span> Agent 1: Semgrep + gitleaks scan</p><p _ngcontent-ng-c2562117009 class="terminal-line"><span _ngcontent-ng-c2562117009 class="t-green">✓</span> Agent 2: OWASP Top 10 review (Opus 4.7)</p><p _ngcontent-ng-c2562117009 class="terminal-line"><span _ngcontent-ng-c2562117009 class="t-green">✓</span> Agent 3: Cross-verify (GPT-5)</p><p _ngcontent-ng-c2562117009 class="terminal-line">&nbsp;</p><p _ngcontent-ng-c2562117009 class="terminal-line"><span _ngcontent-ng-c2562117009 class="t-warn">CRITICAL</span> 4 · <span _ngcontent-ng-c2562117009 class="t-orange">HIGH</span> 7 · <span _ngcontent-ng-c2562117009 class="t-mid">MED</span> 12</p><p _ngcontent-ng-c2562117009 class="terminal-line t-muted">Drafting report · opening PRs...</p><p _ngcontent-ng-c2562117009 class="terminal-line t-green">Sprint complete in 5 days.</p></div></div></div></div></div></section><section _ngcontent-ng-c2562117009 class="catalog-band"><div _ngcontent-ng-c2562117009 class="container"><div _ngcontent-ng-c2562117009 class="row mb-5 justify-content-center text-center"><div _ngcontent-ng-c2562117009 class="col-lg-8"><p _ngcontent-ng-c2562117009 class="eyebrow">The catalog</p><h2 _ngcontent-ng-c2562117009 class="mb-3">Pick the sprint that fits where you are.</h2><p _ngcontent-ng-c2562117009 class="text-muted lead mb-0 mx-auto" style="max-width: 720px;"> Each sprint is scoped, priced, and time-boxed. You know what you are getting and when. Stack a few in sequence if you want to take an idea all the way to enterprise-ready. </p></div></div><div _ngcontent-ng-c2562117009 class="row g-4 justify-content-center"><div _ngcontent-ng-c2562117009 class="col-md-6 col-lg-5"><app-sprint-card _ngcontent-ng-c2562117009 _nghost-ng-c2226700065 ngh="1"><a _ngcontent-ng-c2226700065 class="sprint-card" href="/services/prototype" jsaction="click:;"><div _ngcontent-ng-c2226700065 class="card-top"><span _ngcontent-ng-c2226700065 class="card-eyebrow">2 Week Sprint</span><!----></div><h3 _ngcontent-ng-c2226700065 class="card-title">Idea-to-Prototype</h3><p _ngcontent-ng-c2226700065 class="card-tagline">Working software, built by a senior engineer with agentic AI. Not by agentic AI alone. Cheaper than you think.</p><div _ngcontent-ng-c2226700065 class="card-foot"><span _ngcontent-ng-c2226700065 class="card-price">Starts at $5,000</span><span _ngcontent-ng-c2226700065 class="card-arrow"><i _ngcontent-ng-c2226700065 class="bi bi-arrow-right"></i></span></div></a></app-sprint-card></div><div _ngcontent-ng-c2562117009 class="col-md-6 col-lg-5"><app-sprint-card _ngcontent-ng-c2562117009 _nghost-ng-c2226700065 ngh="1"><a _ngcontent-ng-c2226700065 class="sprint-card" href="/services/prototype-to-mvp" jsaction="click:;"><div _ngcontent-ng-c2226700065 class="card-top"><span _ngcontent-ng-c2226700065 class="card-eyebrow">4-8 Week Sprint</span><!----></div><h3 _ngcontent-ng-c2226700065 class="card-title">Prototype-to-MVP</h3><p _ngcontent-ng-c2226700065 class="card-tagline">Take a prototype to first paying users in four to eight weeks. Real payments. Real users. Real ops.</p><div _ngcontent-ng-c2226700065 class="card-foot"><span _ngcontent-ng-c2226700065 class="card-price">Starts at $15,000</span><span _ngcontent-ng-c2226700065 class="card-arrow"><i _ngcontent-ng-c2226700065 class="bi bi-arrow-right"></i></span></div></a></app-sprint-card></div><div _ngcontent-ng-c2562117009 class="col-md-6 col-lg-5"><app-sprint-card _ngcontent-ng-c2562117009 _nghost-ng-c2226700065 ngh="1"><a _ngcontent-ng-c2226700065 class="sprint-card" href="/services/ai-integration" jsaction="click:;"><div _ngcontent-ng-c2226700065 class="card-top"><span _ngcontent-ng-c2226700065 class="card-eyebrow">4-8 Week Sprint</span><!----></div><h3 _ngcontent-ng-c2226700065 class="card-title">AI Integration</h3><p _ngcontent-ng-c2226700065 class="card-tagline">Add real AI features to an existing product. Not chatbots. Tools, agents, and workflows that move metrics.</p><div _ngcontent-ng-c2226700065 class="card-foot"><span _ngcontent-ng-c2226700065 class="card-price">Starts at $15,000</span><span _ngcontent-ng-c2226700065 class="card-arrow"><i _ngcontent-ng-c2226700065 class="bi bi-arrow-right"></i></span></div></a></app-sprint-card></div><div _ngcontent-ng-c2562117009 class="col-md-6 col-lg-5"><app-sprint-card _ngcontent-ng-c2562117009 _nghost-ng-c2226700065 ngh="1"><a _ngcontent-ng-c2226700065 class="sprint-card" href="/services/security" jsaction="click:;"><div _ngcontent-ng-c2226700065 class="card-top"><span _ngcontent-ng-c2226700065 class="card-eyebrow">1 Week Sprint</span><!----></div><h3 _ngcontent-ng-c2226700065 class="card-title">Security Sprint</h3><p _ngcontent-ng-c2226700065 class="card-tagline">A 1-week security audit run by frontier AI. Branded report, configured AI tooling, and prioritized rollout plan.</p><div _ngcontent-ng-c2226700065 class="card-foot"><span _ngcontent-ng-c2226700065 class="card-price">Starts at $5,000</span><span _ngcontent-ng-c2226700065 class="card-arrow"><i _ngcontent-ng-c2226700065 class="bi bi-arrow-right"></i></span></div></a></app-sprint-card></div><!----></div><div _ngcontent-ng-c2562117009 class="text-center mt-5"><a _ngcontent-ng-c2562117009 routerlink="/services" class="btn btn-outline-primary btn-lg" href="/services" jsaction="click:;"> See full catalog details <i _ngcontent-ng-c2562117009 class="bi bi-arrow-right ms-1"></i></a></div></div></section><section _ngcontent-ng-c2562117009 class="leverage-band"><div _ngcontent-ng-c2562117009 class="container"><div _ngcontent-ng-c2562117009 class="row g-5 align-items-center"><div _ngcontent-ng-c2562117009 class="col-lg-5"><p _ngcontent-ng-c2562117009 class="eyebrow">Why this is fast</p><h2 _ngcontent-ng-c2562117009 class="mb-4">Agentic AI is the leverage.<br _ngcontent-ng-c2562117009>I am the judgment.</h2><p _ngcontent-ng-c2562117009 class="text-light opacity-75 lead"> I use Claude Code and Codex every day, not as experiments, as core production tools. Agents handle the parallel work: scans, test matrices, scaffolding, evidence collection. I make every architecture decision, severity call, and trade-off that a buyer cares about. </p><p _ngcontent-ng-c2562117009 class="text-light opacity-75"> Every code change agents make gets tested and verified by hand. 25 years of shipping production edge cases means I spot the failure modes a junior engineer or an agent would miss. Each new feature gets hardened before the next one starts. </p><p _ngcontent-ng-c2562117009 class="text-light opacity-75"> The result: what used to take a 3-person team weeks now takes one engineer plus agents in days. That is why a 1 week security sprint or a 2 week prototype is a real number, not a marketing claim. </p></div><div _ngcontent-ng-c2562117009 class="col-lg-6 offset-lg-1"><div _ngcontent-ng-c2562117009 class="leverage-grid"><div _ngcontent-ng-c2562117009 class="leverage-card leverage-card-wide"><div _ngcontent-ng-c2562117009 class="leverage-stat">100%</div><p _ngcontent-ng-c2562117009 class="leverage-label">Of agent-written code tested and verified by hand before it ships.</p></div><div _ngcontent-ng-c2562117009 class="leverage-card"><div _ngcontent-ng-c2562117009 class="leverage-stat">25y</div><p _ngcontent-ng-c2562117009 class="leverage-label">Software engineering experience</p></div><div _ngcontent-ng-c2562117009 class="leverage-card"><div _ngcontent-ng-c2562117009 class="leverage-stat">2</div><p _ngcontent-ng-c2562117009 class="leverage-label">Frontier models cross-verifying every high-stakes call</p></div><div _ngcontent-ng-c2562117009 class="leverage-card"><div _ngcontent-ng-c2562117009 class="leverage-stat">30+</div><p _ngcontent-ng-c2562117009 class="leverage-label">AI tools shipped on Fitly (built with these same agents)</p></div><div _ngcontent-ng-c2562117009 class="leverage-card"><div _ngcontent-ng-c2562117009 class="leverage-stat">4</div><p _ngcontent-ng-c2562117009 class="leverage-label">Software patents from prior product work</p></div></div></div></div></div></section><section _ngcontent-ng-c2562117009><div _ngcontent-ng-c2562117009 class="container"><div _ngcontent-ng-c2562117009 class="row g-5 align-items-center"><div _ngcontent-ng-c2562117009 class="col-lg-7"><p _ngcontent-ng-c2562117009 class="eyebrow">Skin in the game</p><h2 _ngcontent-ng-c2562117009 class="mb-4">I build my own products with the same playbook.</h2><p _ngcontent-ng-c2562117009 class="text-muted lead"> I do not just consult. I ship production AI software for myself, on the same stack and with the same agentic workflow I bring into client engagements. When you hire me for an AI Integration Sprint, you are buying patterns I use on my own products that day. </p><p _ngcontent-ng-c2562117009 class="text-muted lead"><a _ngcontent-ng-c2562117009 href="https://www.fitly.chat" target="_blank" rel="noopener noreferrer" class="text-primary fw-medium">Fitly AI</a> is the flagship: a full-stack platform with 30+ AI tools and 16 autonomous agents, built with Claude Code and Codex from day one. Other shipped work includes a decade of clinical software at <a _ngcontent-ng-c2562117009 href="https://www.timelessmedical.com" target="_blank" rel="noopener noreferrer" class="text-primary fw-medium">Timeless Medical Systems</a> and <a _ngcontent-ng-c2562117009 href="https://www.hospiceprosoft.com" target="_blank" rel="noopener noreferrer" class="text-primary fw-medium">HospicePro</a>. </p><p _ngcontent-ng-c2562117009 class="lead fw-medium mt-4"><a _ngcontent-ng-c2562117009 routerlink="/case-studies/fitly" class="text-primary" href="/case-studies/fitly" jsaction="click:;">Read the Fitly AI case study <i _ngcontent-ng-c2562117009 class="bi bi-arrow-right"></i></a></p></div><div _ngcontent-ng-c2562117009 class="col-lg-4 offset-lg-1 d-none d-lg-block"><div _ngcontent-ng-c2562117009 class="phone-mockup mx-auto"><div _ngcontent-ng-c2562117009 class="phone-notch"></div><div _ngcontent-ng-c2562117009 class="phone-screen"><img _ngcontent-ng-c2562117009 src="case-studies/fitly/fitly-hero.png" alt="Fitly AI - built with Claude Code"></div></div></div></div></div></section><section _ngcontent-ng-c2562117009 class="bg-dark-section"><div _ngcontent-ng-c2562117009 class="container"><div _ngcontent-ng-c2562117009 class="row justify-content-center text-center"><div _ngcontent-ng-c2562117009 class="col-lg-9"><p _ngcontent-ng-c2562117009 class="eyebrow">The talent stack</p><h2 _ngcontent-ng-c2562117009 class="text-white mb-4">No single skill is rare. The combination is.</h2><p _ngcontent-ng-c2562117009 class="text-light opacity-75 lead mb-5"> 25 years of shipping software. CTO experience leading product teams. A decade in regulated healthcare codebases. Acquirer-side perspective from buying and scaling a company. Daily practice with frontier AI agents. That stack is what makes a 1-week security sprint or an 8-week SOC 2 sprint a real deliverable, not a sales pitch. </p><a _ngcontent-ng-c2562117009 routerlink="/about" class="btn btn-outline-light btn-lg px-4" href="/about" jsaction="click:;"> Read more about the stack <i _ngcontent-ng-c2562117009 class="bi bi-arrow-right ms-1"></i></a></div></div></div></section><section _ngcontent-ng-c2562117009 class="cta-section"><div _ngcontent-ng-c2562117009 class="container text-center"><h2 _ngcontent-ng-c2562117009>Tell me what you are working on.</h2><p _ngcontent-ng-c2562117009 class="text-muted mt-3 mb-4 lead mx-auto" style="max-width: 600px;"> I will let you know which sprint fits, or scope a custom engagement if a different shape is better. 30 minutes, no pitch. </p><a _ngcontent-ng-c2562117009 routerlink="/contact" class="btn btn-primary btn-lg px-5" href="/contact" jsaction="click:;">Get in Touch</a></div></section></app-home><!----></main><app-footer _nghost-ng-c221709104 ngh="0"><footer _ngcontent-ng-c221709104><div _ngcontent-ng-c221709104 class="container"><div _ngcontent-ng-c221709104 class="row g-4"><div _ngcontent-ng-c221709104 class="col-lg-5"><img _ngcontent-ng-c221709104 src="pineaulabs-logo.svg" alt="Pineau Labs" class="footer-logo mb-3"><p _ngcontent-ng-c221709104 class="text-muted small"> AI codebase hardening and software consulting.<br _ngcontent-ng-c221709104> Charlottetown, PEI, Canada. Serving clients worldwide. </p></div><div _ngcontent-ng-c221709104 class="col-lg-3"><h6 _ngcontent-ng-c221709104 class="fw-bold text-uppercase small mb-3">Navigate</h6><ul _ngcontent-ng-c221709104 class="list-unstyled"><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/" class="footer-link" href="/" jsaction="click:;">Home</a></li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/services" class="footer-link" href="/services" jsaction="click:;">Services</a></li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/case-studies/fitly" class="footer-link" href="/case-studies/fitly" jsaction="click:;">Case Study</a></li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/about" class="footer-link" href="/about" jsaction="click:;">About</a></li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/partners" class="footer-link" href="/partners" jsaction="click:;">Partners</a></li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 routerlink="/contact" class="footer-link" href="/contact" jsaction="click:;">Contact</a></li></ul></div><div _ngcontent-ng-c221709104 class="col-lg-4"><h6 _ngcontent-ng-c221709104 class="fw-bold text-uppercase small mb-3">Contact</h6><ul _ngcontent-ng-c221709104 class="list-unstyled text-muted small"><li _ngcontent-ng-c221709104 class="mb-2">brad@pineaulabs.com</li><li _ngcontent-ng-c221709104 class="mb-2"><a _ngcontent-ng-c221709104 href="https://www.linkedin.com/in/bradpineau/" target="_blank" rel="noopener noreferrer" class="footer-link">LinkedIn</a> &nbsp;·&nbsp; <a _ngcontent-ng-c221709104 href="https://x.com/bradpineau" target="_blank" rel="noopener noreferrer" class="footer-link">X</a></li><li _ngcontent-ng-c221709104 class="mb-2">Charlottetown, PEI, Canada</li><li _ngcontent-ng-c221709104 class="mb-2">Response within 1 business day</li></ul></div></div><hr _ngcontent-ng-c221709104 class="mt-4 mb-3 opacity-10"><p _ngcontent-ng-c221709104 class="text-muted small mb-0"> © 2026 Pineau Labs Inc. </p></div></footer></app-footer></app-root>
<link rel="modulepreload" href="chunk-VVXSGBNN.js"><script src="polyfills-B6TNHZQ6.js" type="module"></script><script src="main-WJCWXJ2J.js" type="module"></script>

<script id="ng-state" type="application/json">{"__nghData__":[{},{"t":{"4":"t1"},"c":{"4":[]}},{"t":{"77":"t0"},"c":{"77":[{"i":"t0","r":1,"x":4}]}},{"c":{"2":[{"i":"c2562117009","r":1}]}}]}</script></body></html>