Archive

Components we don't use anymore but haven't deleted. Each entry preserves the demo, the class names, and a note about why it's archived and what — if anything — replaces it. Most CSS rules are still live in components.css so existing screens keep rendering; the entry's CSS status says whether the rules are kept, removed, or aliased.

Add a new entry by copying one of the <section class="entry"> blocks below and editing the title / meta / demo / class table. Order: newest archived at the top.

Archive
Cards & rows

.playable-card

.playable-card / .playable-card-* archived 2026-05-03
What it was
Earlier playable-detail surface — a card-shaped pop-style detail view for a playable. Predates the .ply-dp slide-over.
Why archived
Superseded by the .ply-dp slide-over panel (Patterns · Ply-detail slide-over). Zero live usage.
Replacement
.ply-dp + .odp-* family.
CSS status
Rules retained in components.css (no demo here — markup was very tied to the old prototype layout; if revival is needed, see git history before 2026-04-28).

Schedule card

.rcard / .carry-* archived 2026-05-03 · deprecated 2026-04-29
What it was
A compact "schedule slot" card used in the original weekly board day cells — title + carryover marker.
Why archived
Last lived in weekly-v1.html (frozen). Superseded by the unified .ply-card in weekly v2.
Replacement
.ply-card.
CSS status
Rules retained in components.css.

Task row — Pulse / Delivery

.task-row / .task-row.needs-review / .stalled / .failed / .selected archived 2026-05-03
What it was
Flat full-width row representation of a playable — a third visual format alongside .ply-card (kanban) and .ply-dp (slide-over). State modifiers tinted the row's surface to communicate urgency without a separate badge: .needs-review (amber), .stalled (amber-subtle), .failed (red), .selected (accent).
Why archived
Designed for Pulse and Delivery views but never adopted in any prototype. Zero live HTML usage. Pulse content currently uses the slide-over panel and entity cards; Delivery is still a stub.
Replacement
None right now. If a flat-row format returns, the unified .tag system + .ply-card components are likely sufficient — revisit when Pulse/Delivery get serious design.
CSS status
All .task-row* rules retained in components.css.
V
Neon Burst
PLY-032Pop Frenzy
Veljko M.Assigned
R2
Neon Burst
PLY-033Pop Frenzy
Nastia B.Pending TL
R2
Neon Burst
PLY-033Pop Frenzy
Nastia B.Stuck
V
Neon Burst
PLY-032Pop Frenzy
Amir C.Build Failed
ClassDescription
.task-row44px flex row — assigned or in-progress, no urgency signal.
.task-row.needs-review / .stalled / .failed / .selectedState modifiers — amber wash / lighter amber / red / accent wash.
.task-row-type / -name / -title / -sub / -meta / -actionsLayout slots — type chip · name block · meta badges · hover actions.
.task-row-id / .task-row-game / .task-row-audMono sub-labels in the name block second row + auditor name.

Tier badge

.tier-badge / .tier-badge.t1 / .t2 / .t3 / .rev / .lg archived 2026-05-03
What it was
Square 18×18 chip (24×24 with .lg) used inside .ply-card and .task-row to encode the partner tier visually — T1 dark, T2 mid, T3 light, R for revisions.
Why archived
Latest weekly v2 uses .type-chip (V/R rounded pill) on the card and a separate tier tag in the group header — partner tier no longer encoded on individual cards. Last consumer was .task-row (also archived).
Replacement
For type chip: .type-chip.type-chip-v / .type-chip-r. For partner tier: .tag.tag--ink.tag--square (T1) / .tag.tag--ink-mid.tag--square (T2) / .tag.tag--outline.tag--square (T3) — see tag-types.html.
CSS status
Rules retained in components.css. <TierBadge> React wrapper still exported.
T1 T2 T3 R2 T1 T2 T3 R2
Archive
Tags & chips

Count badge

.count-badge archived 2026-05-03
What it was
Small numeric pill (18×18, radius-full, bg-sunken / ink-soft) intended for sidebar nav counts and lane head counts.
Why archived
Never adopted as a primitive. Sidebar nav uses its own .nav-count (scoped to NavItem.tsx) and kanban lane heads use .kl-head-count. Zero live HTML usage.
Replacement
None needed. If a generic numeric pill is wanted later, prefer extending the unified .tag with a numeric variant rather than reviving this.
CSS status
Rules retained in design-system/components.css (search for .count-badge). React wrapper retained in react/Badge.tsx. Both unused.
12 42 3
ClassDescription
.count-badgeNumeric count chip — bg-sunken / ink-soft / radius-full
.count-badge.accentAccent-colored count for active or important numbers

Phase tag

.phase-tag archived 2026-05-03
What it was
Pipeline-phase label — a neutral pill with a border (radius-full + bg-raised + line-strong border + uppercase mono). Used in the original Air prototype's topbar to label macro phases (Ideation / Build / QA / Delivery).
Why archived
Subsumed by the unified tag system. Already flagged "legacy" in the live docs before this archive existed; never adopted in the weekly v2 prototype.
Replacement
.tag.tag--pill.tag--outline produces an equivalent pill via the unified tag API. See tag-types.html#phase.
CSS status
Rules retained in design-system/components.css. <PhaseTag> React wrapper now delegates to <Tag shape="pill" outline /> internally — old call sites still work.
Ideation Build QA Delivery
ClassDescription
.phase-tagPipeline phase label — neutral pill with border. Equivalent to .tag.tag--pill.tag--outline in the unified system.

Filter pill

.filter-pill archived 2026-05-03
What it was
Rounded filter button — icon + label, optional accent state with a trailing close ×. Designed to live in topbars for view-level filters ("All statuses", "All assignees", "T2 + T1 ×").
Why archived
Zero live HTML usage outside of weekly-v1.html (frozen older snapshot). Filter affordances in the current prototypes are built ad-hoc using the popover-menu framework instead. Archiving so we can confirm whether to re-adopt the pattern when filtering returns as a deliberate design.
Replacement
None right now. If a filter chip is needed later, decide between (a) reviving .filter-pill from CSS, (b) using .tag.tag--pill.tag--outline as a base, or (c) extending .popover-anchor with a chip-style trigger.
CSS status
Rules retained in design-system/components.css. <FilterPill> React wrapper still exported from react/Tabs.tsx (held with an inline note flagged 2026-04-29). Both unused.
ClassDescription
.filter-pillRounded filter button — icon + label + optional close ×. Active state: accent border / accent-wash bg / accent-dark text.

Status dot

.status-dot archived 2026-05-03 · deprecated 2026-04-29
What it was
5px circular dot in currentColor intended to sit inside a status pill.
Why archived
Zero live usage. The pill shape of .status-tag / .tag already provides sufficient status identity; the dot adds redundant visual weight.
Replacement
None — use .tag alone.
CSS status
Rules retained in components.css.

Tier card

.tier-card archived 2026-05-03
What it was
A grouping card for partner-tier rollups in early dashboard sketches.
Why archived
Never reached a prototype. Zero live usage.
Replacement
None active. Tier rollups will likely use .entity-card + the tier-breakdown bar (Data Visualization) when needed.
CSS status
Rules retained in components.css.

Game chip

.game-chip archived 2026-05-03
What it was
A pill-style chip for game names, intended to live alongside playable rows.
Why archived
Never reached a prototype. Zero live usage.
Replacement
If a game-name chip is needed, use .tag.tag--outline.tag--sm.
CSS status
Rules retained in components.css.

Date label

.date-label archived 2026-05-03 · deprecated 2026-04-29
What it was
Mono date-range label from the original weekly topbar.
Why archived
Replaced by .week-selector-label + .week-selector-rel in weekly v2 (Patterns · Week selector). Last lived in weekly-v1.html (frozen).
Replacement
.week-selector family.
CSS status
Rules retained in components.css.
Archive
Detail & overlays

Detail panel — docked

.detail-panel / .dp-* archived 2026-05-03
What it was
The first take on a playable detail surface — a 320px panel docked to the right edge of the main content area, used for Playable / Game / Auditor entity types with a shared head + body structure (.dp-head, .dp-title-row, .dp-meta, .dp-preview, .dp-timeline, .dp-pipeline).
Why archived
Out of sync with the live product. The weekly.html prototype uses the slide-over pattern instead (see active Detail panel section). Zero current consumers; demo and class table are stale relative to what we ship.
Replacement
The current .ply-dp + .odp-* slide-over, documented in index.html#detail-panel under the simpler "Detail panel" name.
CSS status
Rules retained in design-system/components.css (.detail-panel, .dp-head, .dp-title-row, .dp-tabs, .dp-meta, .dp-preview, .dp-timeline, .dp-pipeline family). No live consumers; safe to remove in a future cleanup if we never revive the docked pattern.

Ply-detail slide-over (early version)

.ply-dp + .odp-* (Activity tab + Details tab) archived 2026-05-03
What it was
The slide-over panel as it was first documented — with an Activity tab (event timeline, feedback form), Details tab (status block, mono key/value meta rows), and earlier Ideas tabs / panels (.odp-tabs, .odp-tab, .odp-feed, .odp-ev, .odp-ev-card, .odp-feedback-form, .odp-details-sec, .odp-meta).
Why archived
The live screens/components/ply-detail.js has converged on a simpler shape — head + ideas stack, no tabs, no activity feed, no feedback form. The old documentation described features that aren't in the product.
Replacement
The current "Detail panel" section (index.html#detail-panel) — same .ply-dp shell and .odp-* head, simpler body.
CSS status
Rules retained in design-system/components.css for every retired sub-element (.odp-tabs, .odp-tab, .odp-feed, .odp-ev*, .odp-feedback-*, .odp-details-sec, .odp-meta, .odp-mk, .odp-mv, .odp-act). If feedback / activity returns, the markup is ready.

Legacy click popover

.popover / .pop-* archived 2026-05-03 · deprecated 2026-04-29
What it was
The original click-popover tooltip card — .popover shell with .pop-head / .pop-body / .pop-foot sections, used for "click a card to see details + quick actions" in early dispatch screens.
Why archived
Only live usage left is screens/prototypes/weekly-v1.html (frozen older snapshot). The detail interaction has since moved into the slide-over .ply-dp panel; ad-hoc dropdowns use the unified .popover-menu framework (Patterns · 15).
Replacement
For card detail → .ply-dp (Patterns · 14, Ply-detail slide-over). For dropdown / overflow menus → .popover-menu family (Patterns · 15).
CSS status
Rules retained in design-system/components.css so the v1 snapshot keeps rendering. No React wrapper.
R2
Neon Burst
StatusPending PG
AuditorVeljko M.
ScheduledThu 24, Apr 2026
IDPLY-033
ClassDescription
.popover / .popover--demoContainer — tooltip-card shell with shadow + rounded corners
.pop-head / .pop-title / .pop-close / .pop-tier-badgeHeader row — chip + name + close button
.pop-body / .pop-row / .pop-key / .pop-valKey-value detail rows in the body
.pop-foot / .pop-btn (+ .primary)Footer action row — secondary buttons + primary Open CTA
Archive
Layout & structure

Sidebar — full app shell

.sidebar / .sidebar.collapsed / .sidebar-* archived 2026-05-03
What it was
Full-height app-shell sidebar — 212px expanded with brand header, nav list, user footer; collapses to a 48px icon rail with state persisted in localStorage. Components · 06.
Why archived
The latest weekly v2 prototype uses a different navigation pattern — an .app-topbar + slim .nav-list rail, no full-height collapsible sidebar. Live usage is limited to dashboard.html + delivery.html (stub prototypes that haven't been rebuilt) and the frozen review/dispatch-*.html snapshots.
Replacement
.app-topbar + .nav-list + .nav-item (still documented in Navigation).
CSS status
All rules retained in components.css. The four screens that still use it keep rendering unchanged.
Expanded · 212px
Collapsed · 48px
ClassDescription
.sidebar / .sidebar.collapsedFull-height shell. Adds .collapsed to drop to 48px rail.
.sidebar-brand / .sidebar-brand-text / .brand-name / .brand-subTop brand row + chevron toggle button.
.sidebar-toggle / .toggle-icon-collapse / .toggle-icon-expand24px ghost button; swaps the chevron icon based on the collapsed state.
.sidebar-navNav item list; centers icon-only when collapsed.
.sidebar-footer / .user-row / .user-name / .user-roleFooter identity row; hides label content when collapsed.

Sidebar nav (demo grouping)

.nav-preview · .nav-item archived 2026-05-03
What it was
The "Sidebar nav" subsection of Components · 05 Navigation — a small grouped preview showing four .nav-item entries (Weekly Board / Delivery / Status / Revisions) inside a .nav-preview wrapper, framed as a generic sidebar pattern.
Why archived
The grouping in the demo doesn't match how navigation actually works in any current prototype. The latest weekly.html uses an .app-topbar + a slim .nav-list rail, not a Weekly/Delivery/Status/Revisions sidebar. The demo was creating false expectations about app structure.
Replacement
The .nav-item class itself is still alive and used in weekly.html, air.html, and others — see the Navigation section's code table for its current API. Only the framed sidebar demo was retired.
CSS status
.nav-item, .nav-icon, .nav-label, .nav-count, .nav-item.active all retained — they're part of the live system. .nav-preview wrapper was demo-only and stays in CSS for the archive demo below.

Group header — collapsible

.group-header / .gh-chevron / .gh-title / .gh-count archived 2026-05-03
What it was
Collapsible section heading with a chevron — meant to organise nested lists ("by default auditor" inside the quota backlog). Adding .expanded / .collapsed rotated the chevron 90°.
Why archived
Zero live usage. The actual quota-backlog grouping in weekly.html uses the simpler non-collapsible .section-header instead — chevron + collapse never made it in.
Replacement
.section-header (Patterns · Section header) for non-collapsible group titles. If a collapsible variant is ever needed, revisit this CSS or build on top of .section-header.
CSS status
Rules retained in components.css. Demo previously lived in Patterns · Group header (now removed).
Tatiana I. — default 4
Archive
Data viz

Progress bars

.progress-wrap / .progress-track / .progress-fill archived 2026-05-03 · deprecated 2026-04-29
What it was
Generic labeled progress bar — title + percentage above, colored fill bar below. Three semantic colors: green / amber / red.
Why archived
Zero live usage. Auditor capacity is handled by .cap-bar inside the kanban lane head; trend data uses Recharts area/bar charts in the Data Visualization section.
Replacement
.cap-bar for capacity (Patterns · Kanban lane). .load-bar-wrap for compact severity-colored capacity strips. Recharts for trend / proportion / gauge views.
CSS status
Rules retained in components.css.
Spine Road Rumble78%
Epic Kingdoms54%
Space Defenders31%
Archive
Feedback

Inline alerts

.alert / .alert-info / .alert-success / .alert-warning / .alert-danger archived 2026-05-03
What it was
Four-variant inline alert component — info / success / warning / danger — with optional title + description body. Designed for non-modal in-context messaging ("Sync in progress", "PLY-032 sent to Apollo", "3 playables at risk", "Quota mismatch").
Why archived
Designed but never shipped to any prototype. Zero live HTML usage.
Replacement
None active. When alerts return, decide whether to revive this CSS or build on the unified .tag system with a wider container.
CSS status
Rules retained in components.css.
Sync in progress
Atlas data is refreshing. Counts may change.
PLY-032 sent to Apollo
Build triggered for Neon Burst.
3 playables at risk
Due today with no build confirmation.
Quota mismatch
Atlas shows 84, Cosmo count is 91.
ClassDescription
.alert + .alert-info / -success / -warning / -dangerBase + variant. Always pair the base with a variant.
.alert-body / .alert-title / .alert-descContent wrapper / bold heading / softer description (omit in dense surfaces).

Toast

.toast / .toast.show archived 2026-05-03
What it was
Fixed bottom-center pill notification for momentary confirmations ("Assigned to Veljko M."). Hidden by default; .show reveals (opacity 1, translateY 0).
Why archived
Designed but never shipped. Zero live HTML usage.
Replacement
None right now.
CSS status
Rules retained in components.css.
Assigned to Veljko M.

Manage quotas dialog (archived 2026-05-24)

Archived from index.html showcase. CSS rules (.mq-dialog, .mq-row, .mq-input, .mq-footer, etc.) remain in components.css for live consumers.

Patterns · 23

Manage quotas dialog

Full-screen backdrop overlay + centered dialog for editing per-game weekly quota targets. One row per game: game name (truncated), read-only monthly target, and an editable weekly-quota number input. Dirty rows highlight in accent-wash. A footer shows an unsaved-changes count and Save / Cancel buttons.

V-quota auto-sync semantics: on dialog open, the host page reads the current quota slot count per game from the live panel list. On save, the new weekly targets are written back; blank quota slots are added or removed to match the new target value.


Dialog (always-open for demo)

In production the overlay is hidden; add .open to show it. The demo renders the dialog inline without the backdrop so all three states are visible.

Manage Quotas
Game Monthly Weekly quota
Bubble Cash 8
Solitaire Cash 6
Pool Payday 4

Row states

Game Monthly Weekly quota
Clean row (default) 6
Dirty row (unsaved edit) 6
Class reference
ClassState / VariantDescription
.mq-overlaydefault (hidden)Fixed full-screen backdrop. blurred ink overlay, display:none by default
.mq-overlay.openstateShows the backdrop and centers the dialog (display:flex)
.mq-dialogstructureCentered dialog. max-width 620px, max-height 80vh, bg-panel, shadow-lg, radius-lg, flex column
.mq-headerstructureTitle row. space-between flex; contains .mq-title and .mq-close
.mq-titleelementDisplay-font dialog heading. text-md, 700, letter-spacing -0.02em
.mq-closeelement28px circular close button. transparent, hover sunken
.mq-search-rowstructureSearch row below the header. padded, bottom border
.mq-search-wrapelementSearch input wrapper. sunken bg, line border, focus ring on :focus-within
.mq-search-inputelementBorderless text input inside the wrapper
.mq-col-headstructure3-column grid column headers (Game / Monthly / Weekly quota). 9.5px mono caps
.mq-col-labelelementIndividual column label. Add .centered for text-align:center columns.
.mq-liststructureScrollable game list. flex:1, thin scrollbar
.mq-rowelementOne game row. 3-col grid matching .mq-col-head, min-height 44px, hover sunken
.mq-row.dirtystateAccent-wash highlight. row has an unsaved change
.mq-game-nameelementGame name. text-sm/500, truncates with ellipsis
.mq-monthlyelementRead-only monthly target. 11px mono, ink-muted, centered
.mq-input-cellelementCenter-aligned cell wrapping .mq-input
.mq-inputelement48px number input. mono font, radius-sm, line border, accent focus ring
.mq-input.has-valuestateStronger border (line-strong) when the field has a value
.mq-footerstructureBottom action bar. space-between, bg-panel, top border
.mq-dirty-countelementUnsaved-change count. mono xs, ink-muted by default
.mq-dirty-count.has-changesstateInk-soft. visible when there are pending changes
.mq-footer-actionselementFlex row of .mq-btn buttons
.mq-btnelementSecondary-style dialog button. radius-sm, shadow-xs
.mq-btn.savevariantAccent-filled Save button

Entity cards (archived 2026-05-24)

Patterns · 05

Entity cards

Three entity types — Playable, Game, and Auditor — each represented at two scales: a compact task row for dense lists, and a collapsible entity card for grouped views. All states shown.


Game entity card

Groups all tasks for a game. Expandable — collapsed shows summary stats, expanded shows individual task rows. Square avatar with partner badge.

BU
SK
Bubble Cash
Skillz · 7 tasks
5V
2R
2To Send
1Stalled
2Done
T2
Cascade
PLY-017
Veljko M.Assigned
R2
Spring Sweep
PLY-024
Veljko M.2d left
R2
Pop Frenzy
PLY-023
Nastia B.1d lateStalled

Selected state (.entity-card.selected)

Add .selected to the card when its detail panel is open — accent border replaces the default line border, and the header takes a faint accent wash. This mirrors the .ply-card.dp-selected treatment so selection intent is consistent across both card types.

PC
PA
Pool Cash
Papaya · 4 tasks
3V
1R
2Done
T1
Sky Drop
PLY-003
Assigned

Auditor entity card

Groups tasks by auditor. Shows capacity bar inline in the header. Circle avatar (person). Used in TL Dispatch and TL Pulse.

TI
Tatiana Iudina
Auditor
Capacity 3 / 4
3Active
1Done
T2
Cascade
PLY-017Bubble Cash
Assigned
T1
Power Rush
PLY-006Solitaire Cash
Pending TL
T3
Diamond Cut
PLY-103Bubble Cash
Approved
Class reference
ClassState / VariantDescription
.task-listbaseContainer for task rows — bordered, rounded, clips overflow
.task-row family ARCHIVED 2026-05-03-Pulse/delivery flat row variants. See archive.html. CSS retained.
.entity-carddefaultCollapsible group card — expanded by default
.entity-card.collapsedstateHides .entity-card-body; chevron rotates -90 degrees
.entity-card.selectedstateAccent border + accent-wash header — card linked to open detail panel
.entity-card-head / -bodystructureAlways-visible header / hideable content area
.entity-av / .entity-av-sq / .entity-av-badge / .entity-av-circleelementAvatar wrapper — .entity-av-sq for games (square), .entity-av-circle for people, .entity-av-badge for partner overlay
.entity-name / .entity-subelementPrimary label (14px/600) and secondary descriptor line (11px muted)
.entity-stats / .entity-statelementStat cluster in header — flex row of number+label pairs
.entity-stat-nelementNumeric value — add .warn / .danger / .good to apply semantic color
.entity-stat-lelementLabel below the number (10px muted)
.entity-chevronelementCollapse/expand indicator — rotates -90 degrees when .collapsed is on the card
.entity-detail-btnelementPanel-open icon button in card header — use stopPropagation to avoid triggering collapse
.cap-bar / .cap-bar-track / .cap-bar-fillelementInline capacity bar — add .ok / .warn / .over to .cap-bar-fill for semantic fill color

Tag (archived 2026-05-24, superseded by .ftag)

Components · 02

Tag

A single component for every label, badge, and status pill in the system. .tag takes modifiers across four axes — tone, size, shape, and treatment — and any combination is valid. The full mapping of which recipe encodes which real-world value (each of the 13 canonical statuses, T1/T2/T3/VIP/FDE tiers, V/R/Done counters, age severities, fail-loud) lives in the tag spec. This section is the component.

Legacy aliases still live. The previous tag families — .tag-on-track, .status-tag.*, .tier-badge, .tag-v/.tag-r/.tag-done, .tag-tier, .tag-age — remain in components.css as direct aliases so wireframes and older prototypes keep rendering unchanged. New work uses .tag with modifiers.


Tones

Seven tones cover every label in the system. Default (no tone modifier) is neutral — used for unstarted, queued, "no signal yet" states. Each tone has a paired bg + text color drawn from the cream/green/amber/red/build/orange/ink ramps.

Neutral Green Amber Red Blue Orange Ink Ink-mid

Sizes

Default is 10px / 3px 7px padding. .tag--sm drops to 9px / 2px 5px for dense group-header meta rows and per-card counters.

Default Small

Shapes

.tag--square renders as an 18x18 chip; .tag--square-lg bumps to 24x24 for detail views. .tag--pill swaps the radius to fully-rounded for pipeline-phase labels.

T1 T2 T3 T1 Pipeline phase

Treatments

Optional modifiers that change weight or affordance. .tag--outline swaps the fill for a border (used by T3, age default). .tag--alert adds a 1px currentColor border on top of a tone — used for stuck / waiting-for-fix to make the amber stand out further. .tag--fail is the dashed-red fail-loud fallback for unrecognized data. .tag--cased preserves the source casing instead of forcing uppercase — needed for "5V quota" and similar mixed-case labels.

Outline Alert border ? Unknown 5V quota

With leading icon

Drop any element inside the tag — an SVG, a Lucide icon, a status dot — and it picks up the gap and current text color. Use sparingly; the pill shape carries enough identity on its own.

Approved Stuck Building
Class reference
ClassAxisEffect
.tagbaseMono uppercase 10px / 3px 7px / radius-xs. Default tone is neutral (bg-sunken / ink-soft).
.tag--greentonegreen-100 / green-600 — success, on-track, V quota, approved, build-complete, completed
.tag--ambertoneamber-100 / amber-600 — at-risk, R revision, pending-tl, pending-pg, age-warn
.tag--redtonered-100 / red-600 — behind, build-failed, age-over, FDE
.tag--bluetonebuild-100 / build-600 — in-progress, building, delivered
.tag--orangetoneorange-100 / orange-700 — VIP partner
.tag--inktoneink-700 / cream-100 — T1 partner, high-emphasis dark
.tag--ink-midtoneink-500 / cream-100 — T2 partner
.tag--smsize9px / 2px 5px / tighter letter-spacing — dense meta rows
.tag--squareshape18x18 chip, no padding, larger weight — tier badges
.tag--square-lgshape24x24 chip / radius-sm / 11px — detail views
.tag--pillshaperadius-full — pipeline phase labels
.tag--outlinetreatmentbg-raised + 1px line border. Combined with a tone, softens to the tone's -200 border + -100 bg.
.tag--alerttreatment1px currentColor border + tighter padding — emphasizes a tone (stuck, waiting-for-fix)
.tag--failtreatmentred-100 bg + dashed red-500 border + red-600 text — fail-loud fallback for unrecognized status keys
.tag--casedtreatmentPreserves source casing + drops letter-spacing — for "5V quota", "2 done", and other mixed-case labels

Composition examples.

Class reference
RecipeEncodes
.tag.tag--ink.tag--squareT1 tier badge
.tag.tag--green.tag--sm.tag--cased"3V" / "5V quota" counter
.tag.tag--amber.tag--alert"Stuck" / "Waiting for fix" alert status
.tag.tag--outline.tag--smDefault age tag (e.g. "2d")
.tag.tag--red.tag--outline.tag--smAge over (e.g. "9d")
.tag.tag--fail"?" / "Unknown" fail-loud fallback

See the tag spec for the full mapping of every real-world status, tier, counter, and age value to its tag recipe.