SuperCat Design System · Primitives · iPad-grade

Card .kc

A surface for grouping content. Slots own their padding, so cards embed edge-to-edge tables and lists without fighting them. Every card lifts a hair on hover with a soft shadow — interactive cards take a slightly stronger shadow to read as clickable. The dashboard tiles, summary panels, and activity feeds you saw in the App screenshots all compose from this primitive.

01 · Anatomy 02 · Sizes 03 · Surfaces 04 · Metric tiles 04b · Auto-fit stress test 05 · Panels with tables 06 · Activity lists 07 · Interactive 08 · Empty / dashed
01

Anatomy — head · body · foot

Three slots, each with its own padding. Hairline dividers appear automatically between adjacent slots. Use only the slots you need — a card with just .kc-body is fully valid.

Anatomy

Card with all three slots

Body content sits between hairlines. Use this slot for paragraphs, forms, lists, charts, or nested tables. Padding scales with the card size variant.

Updated 14:39

Body-only card — no head, no foot. Useful for callouts, single- paragraph notices, or content where the title is implicit from the surrounding context.

02

Sizes — sm · md · lg

Three padding scales: 16, 24 (default), and 32 px. Radius scales with the size — sm uses --radius-md, default uses --radius-lg, lg uses --radius-xl.

Small

16 px padding · radius-md. For toolbars, sidebar groups, dense dashboards.

Default (md)

24 px padding · radius-lg. The everyday card.

Large

32 px padding · radius-xl. For feature panels and hero sections.

03

Surfaces — flat · feature · inverse · dashed

Four orthogonal surface treatments. .kc alone is the default (white card on cream paper). .kc-feature drops the border in favor of a paper-2 fill. .kc-inverse is ink-dark and theme-agnostic. .kc-dashed is for empty slots and "drop here" affordances.

Default · flat

Surface card

White card on cream paper, hairline border. Everyday content.

Feature

Heavier emphasis

Paper-2 fill, no border. Use sparingly — the tint IS the chrome.

Inverse

Stamped tone tile

Ink-dark surface, cream text. Theme-agnostic — same in light and dark.

Hero · CTA · Feature
Dashed

Empty slot. Drop a file, add a widget,
or use as a "no content yet" placeholder.

04

Metric tiles — the dashboard pattern

Direct replacement for the four stat tiles on the App's Dashboard (Total products / eCat orders / Total customers / Active users). Big tabular-numeral display, mono caps eyebrow, optional icon and trend chip. Use .kc-grid.kc-grid-4 for the classic four-up layout.

Opame Collective · Dashboardpast 30 days
Total products
50
+ 4 this month
eCat orders
1,287
+ 12% vs last month
Total customers
342
no change
Active users · 30d
4
- 2 this week
04b

Metric stress test — numbers auto-fit the tile

Each tile is its own CSS container (container-type: inline-size), so the value's font scales with the tile's actual rendered width, not the viewport. Drop the same metric into a 4-up grid, then a 2-up, then a 1-up — the number shrinks or grows on its own. Long numbers in narrow tiles compress automatically instead of overflowing.

Same value · different grid widthsfont: clamp(22 px, 8 cqw, 48 px)
4-up · narrow tiles
Total revenue
$1,287,432
+ 12%
Orders YTD
42,180
+ 8%
Customers
3,421
no change
Active users
42
- 2
2-up · medium tiles
Total revenue
$1,287,432
+ 12% vs last month
Orders YTD
42,180
+ 8% vs last month
1-up · single wide tile
Total revenue
$1,287,432
+ 12% vs last month

Pathological inputs — say a 10-digit number in a 4-up grid — will hit the clamp floor (22 px) and may still feel cramped. For values that long, format to "1.3M" or use a wider grid (.kc-grid-2). The card never breaks: parent .kc has overflow: hidden.

05

Panels with tables — the Best-Selling pattern

A card with .kc-body-flush embeds a table edge to edge. The card supplies the title and footer; the table runs the data. Direct replacement for "Best Selling Products" and "Statistics" panels on the App's Dashboard.

Past 30 days

Best selling products

Product SKU Vendor Units Revenue
Mantle dining tableMN-2210Caldera Mills142$150,520.00
Ridgeline armchairRD-1042Caldera Mills88$109,120.00
Cane side tableCS-7732Wovenway Co.412$24,720.00
Field benchFB-3304Field & Frame298$17,880.00
Linen runner · oatLR-0418Atlas Linens181$362.00
5 of 47 SKUs
06

Activity lists — the Most-Active-Users pattern

For non-tabular vertical data: avatar + name/meta + trailing value. Lighter than a table, denser than free prose. Direct replacement for "Most Active Users" on the App's Dashboard.

Past 30 days

Most active users

  • Brent Sanders
    42 logins · 18 orders
    $84,320.00
  • Lina Park
    28 logins · 12 orders
    $56,180.00
  • Jamie Hoang
    21 logins · 9 orders
    $41,005.00
  • Rae Donnelly
    18 logins · 7 orders
    $29,440.00

Statistics

  • Billable users
    12
  • Total users
    42
  • Average order value
    $3,180.00
  • Fulfillment rate
    94.2%
  • Return rate
    1.8%
07

Interactive cards — hover lifts & crimson edge

Add .kc-interactive for hoverable cards. On hover the card lifts translateY(-1px) and a 3 px crimson left edge fades in — never a hard border. Use on <a> for links or <button> for actions; both are keyboard-focusable with a proper crimson ring.

08

Empty / dashed — placeholder slots

Dashed cards for empty states and "drop a widget here" affordances. No fill, dashed hairline. Pair with a clear empty-state body — see the table primitive's .kdt-empty-board for a richer empty composition.

Add a widget

Drop a metric tile, chart, or recent-activity feed into this slot.

Drop a CSV here

Or browse to import historical orders.

Next · .kdt table · .kb button · .kf forms · App screens (next)