Regional Transportation Authority

Welcome to the

of Pima County

The RTA is a state-established taxing district within Pima County, Arizona, with local, county, state and tribal government leaders working together to improve the region’s livability and deliver a safe, reliable and efficient transportation network for all users. As the fiscal manager of the RTA’s 20-year voter-approved plan and public funding, the RTA oversees delivery of roadway, transit, safety, bicycle, pedestrian, signal technology and other network improvements.

An RTA Accountability pledge signed by the 2026 RTA Board of Directors hangs on an office wall.

News

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

Meetings

Upcoming Meetings & Events

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.

Citizen Oversight

Fifteen community members appointed to oversee RTA plan delivery.

Learn More
: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}%)`;
      });
    });
  });
});