<div class="container">
  <head>
    <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <title>404</title>
  <link rel="stylesheet" href="https://use.typekit.net/tsf7mkd.css">
  <link rel="stylesheet" href="/assets/css/base.css">
  <link rel="shortcut icon" type="image/x-ico" href="">
  <!-- 1️⃣ jQuery – required by Lightbox2 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
        integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
        crossorigin="anonymous"></script>

<!-- 2️⃣ Lightbox CSS (put the file in assets/css/) -->
<link rel="stylesheet" href="/assets/css/lightbox.min.css">

<!-- 3️⃣ Lightbox JS (put the file in assets/js/) -->
<script src="/assets/js/lightbox-plus-jquery.min.js"></script>

<!-- 4️⃣ Lightbox options – keep the overlay inside the viewport -->
<script>
  // Wait until Lightbox has been defined (it attaches to window.lightbox)
  if (window.lightbox) {
    lightbox.option({
      // Scale the image so it never exceeds the visible area
      fitImagesInViewport: true,

      // Use percentages – works on any screen size
      maxWidth:  '100%',
      maxHeight: '100%',

      // Optional: hide the “1 of N” counter if you don’t need it
      showImageNumberLabel: false
    });
  }
</script>

<!-- 5️⃣ Thumbnail‑swap + auto‑cycle script -->
<script>
document.addEventListener('DOMContentLoaded', function () {
  const heroImg    = document.getElementById('hero-img');
  const heroLink   = document.getElementById('hero-link');
  const heroCap    = document.getElementById('hero-caption');
  const thumbLinks = document.querySelectorAll('.thumb-link');
  const regLinks   = document.querySelectorAll('.lightbox-reg');

  const captions = null;
  let currentIdx = 0;
  let cycleTimer = null;
  let userPaused = false;

  // Preload images
  

  function setHero(idx) {
    const link = thumbLinks[idx];
    if (!link) return;
    const url = link.dataset.full;
    const cap = (captions && captions[idx]) ? captions[idx] : '';

    heroImg.src  = url;
    heroLink.href = url;
    heroCap.textContent = cap;

    // Sync the hidden lightbox registry so prev/next opens the right image
    if (regLinks[idx]) regLinks[idx].setAttribute('id', 'lightbox-current');

    thumbLinks.forEach(l => l.classList.remove('active'));
    link.classList.add('active');
    currentIdx = idx;

    // Scroll active thumb into view within the strip only — not the whole page
    const thumbRow = document.getElementById('thumb-row');
    if (thumbRow) {
      const linkCenter = link.offsetLeft + link.offsetWidth / 2;
      thumbRow.scrollTo({ left: linkCenter - thumbRow.offsetWidth / 2, behavior: 'smooth' });
    }
  }

  // Thumbnail click
  thumbLinks.forEach(link => {
    link.addEventListener('click', function (e) {
      e.preventDefault();
      userPaused = true; // pause auto-cycle on manual interaction
      setHero(parseInt(this.dataset.index, 10));
    });
  });

  // Hero click — open lightbox at current index
  heroLink.addEventListener('click', function (e) {
    e.preventDefault();
    userPaused = true;
    if (regLinks[currentIdx]) {
      regLinks[currentIdx].click();
    }
  });

  // Auto-cycle — advances every 4s, pauses on hover or manual click
  function startCycle() {
    cycleTimer = setInterval(function () {
      if (userPaused) return;
      const next = (currentIdx + 1) % thumbLinks.length;
      setHero(next);
    }, 4000);
  }

  const heroWrapper = document.querySelector('.hero-image-wrapper');
  if (heroWrapper) {
    heroWrapper.addEventListener('mouseenter', () => { userPaused = true; });
    heroWrapper.addEventListener('mouseleave', () => { userPaused = false; });
  }

  if (captions && captions.length) heroCap.textContent = captions[0];
  if (thumbLinks.length > 1) startCycle();
});
</script>


  <script>
    function toggleMenu() {
      const mobileMenu = document.querySelector('.mobile-menu');
      const menuIcon = document.querySelector('.menu-icon');
      const closeIcon = document.querySelector('.close-icon');

      // Toggle the active state for both mobile menu and close icon
      mobileMenu.classList.toggle('active');
      menuIcon.classList.toggle('active'); // Hide menu icon when the menu is open
      closeIcon.classList.toggle('active'); // Show close icon when the menu is open
    }
  </script>
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-XB5JRHR9GW"></script>
  <script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-XB5JRHR9GW');
  </script>

</head>

  </head>

  
    <nav class="left-bar">
      <div class="logo">
        <a href="/" ><img src="/assets/Logo-mark-Black.svg" alt="Logo" class="logo"></a>
      </div>

      
        
          <h3>404</h3>
        
        
        
          <p>Page not found :(</p>
        
        
        
        
        
        
        
        
      

    </nav>

  <div class="column">
    <section class="project-content">
      <a href="/" class="back-button">← Back to Portfolio</a>
      <div class="project-description">
        <div class="column">
  <p>The requested page could not be found.</p>
</div>

      </div>
    </section>
  </div>
</div>
<footer>
  <footer class="site-footer">
    © 2026 Chad Galloway &nbsp;·&nbsp; <a href="mailto:me@whoiscg.com">me@whoiscg.com</a>
</footer>

</footer>

