{carousel} lays every {tab} inside it out as a slide in a horizontal row that scrolls and snaps (CSS scroll snap). Each slide has previous and next links, and below the row there is a dot per slide - plain links to the slides' ids, so the carousel works without JavaScript. The previous link of the first slide goes to the last and the next link of the last to the first. There is no autoplay.

The label of a {tab} is the slide's caption, and is optional here - unlike in {tabs} and {accordion}. label= names the whole carousel for a screen reader. The markup follows the WAI-ARIA carousel pattern: a region with aria-roledescription="carousel", each slide a group announced as "slide 2 of 4" with its caption.

A small script, written once per page with the CSP nonce when one is asked for, makes it smoother: the links scroll only the row instead of the page, and the dot of the slide in view is marked, also after a swipe. Scrolling is smooth unless reduced motion is asked for; printed, the slides stand under each other. Under the strict check a carousel that never closes, one without slides or with text between its slides is an error. The colours are --pad-carousel-accent, -text, -muted, -surface and -dot on .pad-carousel.