Regional Transportation Authority

Welcome to the

of Pima County

The Regional Transportation Authority oversees implementation of a 20-year regional transportation plan that voters approved on March 10, 2026. The $2.67 billion plan is funded by a half-cent excise (sales) tax. The RTA's mission is to deliver transportation improvements that ensure a safe, reliable, and efficient transportation network across the region.

News

We are committed to sharing the latest information with you regarding
RTA programs, services and project delivery efforts.

RTA Delivers Podcast

The RTA Delivers podcast explores the history of the RTA as well as updates on delivery of RTA plan projects and services, economic and transportation network benefits of the RTA public sales tax investment, what’s in the pipeline and much more.

Stay Informed

To stay up to date on all RTA updates, please sign up for our newsletter below.

Sign up for updates

Citizen Oversight

Fifteen community members appointed to oversee RTA plan delivery.

:root {
  --animation-duration: 5000ms;
}
document.addEventListener("DOMContentLoaded", function() {
  const buttons = document.querySelectorAll('.changing');
  const slides = document.querySelectorAll('.changing-media');
  const contents = document.querySelectorAll('.feature-card-milan__description');
  let currentIndex = 0;
  let intervalId;

  // Initialize the first button, slide, and content
  buttons[currentIndex].setAttribute('aria-selected', 'true');
  contents[currentIndex].setAttribute('aria-hidden', 'false');

  const animationDuration = getComputedStyle(document.documentElement)
      .getPropertyValue('--animation-duration');
  const durationInMs = parseInt(animationDuration);

  function changeSelected() {
    
    const shouldAnimate = Array.from(buttons).every(button => button.dataset.shouldAnimate === 'true');
    if (!shouldAnimate) return;

    updateVisibility(currentIndex, false);
    
    currentIndex = (currentIndex + 1) % buttons.length;

    updateVisibility(currentIndex, true);
    
    slides.forEach((slide) => {
      slide.style.transform = `translateX(${(-currentIndex) * 100}%)`;
    });
  }

  function updateVisibility(index, isVisible) {
    buttons[index].setAttribute('aria-selected', isVisible);
    slides[index].setAttribute('tab-selected', isVisible);
    contents[index].setAttribute('aria-hidden', !isVisible);
  }

  function startInterval() {
    intervalId = setInterval(changeSelected, durationInMs);
  }

  function stopInterval() {
    clearInterval(intervalId);
  }

  startInterval();

  buttons.forEach((button, index) => {
    button.addEventListener('click', () => {
      
      buttons.forEach(btn => btn.dataset.shouldAnimate = 'false');

      // Update visibility for the clicked button
      updateVisibility(currentIndex, false);
      currentIndex = index;
      updateVisibility(currentIndex, true);

      // Stop the animation
      stopInterval();
      
      // Move the corresponding slide into view
      slides.forEach((slide) => {
        slide.style.transform = `translateX(${(-currentIndex) * 100}%)`;
      });
    });
  });
});