Skip to main content
PimentCSS v1.0.1, what's new
Home

Cards

Card patterns for Copy, Newsletter signup, Blank slots, media ratios, and elevated panels.

Composable cards for Copy, Newsletter, and Blank layouts. Styles live in scss/components/_card.scss with _slot.scss, _copy.scss, and form primitives. For overlay dialogs, see Modals; for inline feedback, see Alerts.

Card variants

Each variant sets a max width: card--copy (26rem), card--newsletter (32rem), card--blank (11.6875rem). Stack blocks in .card__slots (media, copy, fields, slots).

Blank card is an empty shell: dashed .slot placeholders show where you compose custom regions (header, body, actions) with Slots & layouts. It is not a fourth content pattern like Copy or Newsletter.

Copy card

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Newsletter signup

Blank card

Header
Content
Action

Media ratios in cards

Pair .card__media with the same .media--* modifiers as on the Placeholder page. Placeholder SVGs use matching intrinsic dimensions (/media-placeholder/{w}/{h}/{variant}.svg) so the crop aligns with aspect-ratio. Vertical cards use $card-copy-gap (12px) between media and copy, then $slot-gap (24px) before the action; summary text uses body-small via .copy-block__text inside .card.

  • Vertical (default), media stacks above copy in .card__slots.
  • Horizontal, add card--horizontal and wrap copy + actions in .card__content; portrait media--3-4 or square media--1-1 work well beside text.

media--1-1 · 1:1

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

media--8-5 · 8:5

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

media--3-4 · 3:4

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

media--3-2 · 3:2

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Vertical and horizontal layouts

card--horizontal lays out .card__slots as a row: fixed-width media, flexible .card__content for copy and buttons. Wide ratios (media--8-5, media--3-2) suit vertical cards; tall or square ratios suit horizontal rows.

Vertical · media--8-5

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Vertical · media--3-4

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Horizontal · card--horizontal + media--3-4

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Horizontal · media--1-1

Headline medium length

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas luctus arcu sed ante consectetur porttitor. Aenean malesuada augue id pulvinar molestie.

Elevated card (header / body / footer)

.card--elevated removes outer padding and splits header, body, and footer with borders. Footer uses surface-muted. Pair with semantic regions and a visible title in the header.

Card title

Structured panel with header, body, and footer. Uses --shadow-sm and region borders.

  • Placeholder, copy blocks and .media ratios used in the Copy card.
  • Slots & layouts, .slot and .slots-layout in the Blank card.
  • Input fields, labels and fields in the Newsletter card.
  • Modals, overlay dialogs when a card pattern is not enough.

Class reference

ClassDescription
.cardBase container (padding, border, column flex)
.card__slotsVertical stack for card content (gap $slot-gap)
.card__mediaFull-width media inside a card; pair with .media--1-1.media--3-2
.card__contentCopy + actions column inside card--horizontal
.card--copy / .card--newsletter / .card--blankMax-width presets per variant (copy, newsletter, blank)
.card--horizontalRow layout: media + .card__content (max-width $card-width-horizontal)
.card--elevatedShadow + header/body/footer regions
.card__header / .card__body / .card__footerStructured elevated regions

Customize (Sass)

  1. Card widths and padding

    Override layout tokens before importing components.
    @use "pimentcss-design-system" with (
      $card-width-copy: 36rem,
      $card-width-horizontal: 42rem,
      $card-horizontal-media-width: 12rem,
      $card-padding: 1.25rem,
      $slot-gap: 1rem
    );
  2. Rebuild CSS

    Run after editing _card.scss or related partials.
    npm run build:css

Accessibility (RGAA / WCAG)

Cards

  • Landmarks, use <article> when the card is a self-contained unit; include a heading (for example h2 / h3 in the copy block).
  • Images, decorative thumbnails use alt=""; informative images need descriptive alt text. Set width and height to the real asset dimensions so layout matches aspect-ratio.
  • Forms, every field in the Newsletter card needs a visible <label> linked with for / id.
  • Actions, primary buttons must have an accessible name; do not rely on the card title alone.

Next steps