Drafts · CardsExperiment

Role tier card

A role tier card pair introduces two tiers of one category side by side, for example Standard and Administrator, and links on to the full comparison table.

Tokens, type, sizes, measurements and requirements. The values come from the live token package and from the comparison pages; there is no Figma component.

Design Tokens

Resolved from the live token package.

CardPartTokenValue

Colors

PartBase cardDark card (.role-tier--dark)
Backgroundsurface-raised-primarysurface-100
Borderborder-primarysurface-90
Title and icontext-primaryaccent-default
Descriptiontext-secondarytext-secondary-inverted
Linktext-action-primary, hover -hovertext-action-primary-inverted, hover -hover
Feature stripssurface-05, lines border-primarysurface-90, lines white at 12%

Open point: the line between the feature strips on the dark card is rgba(255, 255, 255, 0.12). There is no token for white at 12%, so it is written out with a comment in the CSS.


Typography

ElementTokenMobileDesktop (769px+)
Nametitle-lg, weight 60020/24, 024/28, 0
Descriptionbody-md16/22, 0.32px17/24, 0.32px
LinkAction link, Medium, Bold (600), 24px icon, gap 6px16/24, 0.32px17/24, 0.32px
Featurebody-sm14/20, 0.36px14/20, 0.36px
Quick linkSystem, small14/14, 0.56px, uppercase, 600The same

Sizes

PartValue
Pair1 column below 769px, 2 columns from 769px, gap 24px; stacked pairs 24px (xs) and 32px (md and up) apart
CardColumn below 640px, row from 640px; 1px border, sharp corners
Info block24px padding (32px from 769px), gap 8px, 55% of the width
Feature stripMin height 56px, 16px padding, text centered; 45% of the width
Quick linkHeight 32px, padding 6px 12px, gap 6px, icon 16px

A card has one size. The parts change with the breakpoint, as the table shows.


Measurements

Dimensions

AttributeMobile (below 769px)Desktop (769px+)
Info block padding24px32px
Gap inside the info block8px8px
Gap between badge row and name12px (8px gap + 4px margin)12px
Link top margin8px8px
Feature stripmin 56px high, 16px paddingThe same
Card border1px1px
Gap between the two cards24px24px
Gap between stacked pairs24px32px

The card changes at 640px and at 769px, and the Breakpoint control only switches at 769px, so there is no measurement figure and no Breakpoint control. The values are read from the component.

Spacing

The values as spacing tokens.

PartValue
Info block padding, mobilespace-24
Info block padding, desktopspace-32
Gap in the info block, link top marginspace-8
Feature strip paddingspace-16
Gap, icon to link label6px (no spacing token)

States

StateLinkRest of the card
EnabledNo underline. Base: text-action-primary. Dark: text-action-primary-inverted.Static.
HoverLabel underlined. Color moves to the -hover token of its card.Static.
Focus2px ring, border-focus, 2px outside (keyboard only).Static.

The card itself has no hover, active or disabled state.


Structure

Elements

ElementClassNotes
Pairrole-tier-pairA grid of two cards. Several pairs stack.
Cardrole-tier, role-tier--darkLight by default; --dark for the extended tier.
Info blockrole-tier__infoHolds the badge row, name, description and link.
Badge rowrole-tier__badge-rowrole-tier__icon and a badge-basic.
Name, descriptionrole-tier__name, role-tier__descParagraphs.
Linkrole-tier__linkrole-tier__link-label and role-tier__link-icon.
Feature stripsrole-tier__features, role-tier__featureThree or four rows.
Quick linksrole-quicklinks, role-quicklinkA row of small links above the cards.

Width

A pair fills its container. Two cards share the row equally from 769px.


Behavior

TopicRule
LinkSwitches the active tab in the table before scrolling, by calling the table’s own setCompareView(). Call event.preventDefault() so the anchor does not snap mid-scroll.
Scroll offsetScroll to the section with the --header-top-h offset, never a plain scrollIntoView().
Feature stripsThree or four rows taken from rows that really exist in the comparison table and are specific to that role.
OrderThe pairs follow the order of the tabs.
MotionThe link color changes with duration-fast-3 and ease-standard.

Open points: no Figma component. The card is built for the comparison pages, and the link needs their table script.


Accessibility Requirements

TopicRequirement
LinkA real <a> with a label that names the tier. The click handler calls preventDefault() and moves focus or scroll to the table.
IconsThe tier icon and the arrow are decorative: aria-hidden="true".
FocusKeyboard focus shows a 2px ring (border-focus) 2px outside the link.
ContrastText on the dark card uses the inverted tokens (text-secondary-inverted on surface-100).
OrderThe reading order is badge, name, description, link, then the features.