inside · paddingControls space inside components.
UI reference
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Structure & spacing
.panel · .control-card · .control-subsection
Use the surface hierarchy deliberately: Panel is a top-level page region; Settings section groups preferences inside a dialog or settings surface; Control card groups application controls or a coherent specimen; Subsection divides a card internally; specialized groups such as Category group live below that level. Density changes space inside components; Rhythm changes local gaps between related controls; top-level page/section composition remains authored structure.
inside · paddingControls space inside components.
between · spacingControls local space between related elements.
.settings-section · .settings-section-headingLorem ipsum dolor sit amet, consectetur adipiscing elit.
.masthead-image-stage · .masthead-title · .masthead-subtitleThe site owns outer placement and image-stage geometry. Masthead copy uses the same title/subtitle typography as Settings section headings; carousel controls are centered on the image-stage midpoint.
.page-toc · .page-toc-list · .page-toc-sublistPage-local contents are generated from authored data-toc and data-toc-subitem markers. This specimen shows the standard expanded presentation while its sample links remain inert with respect to the Styles page's own TOC discovery.
.control-subsection · .control-subheadingLorem ipsum dolor sit amet, consectetur adipiscing elit.
.control-cardAlpha
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
.control-card.placeholder · .placeholder-badgeDisabled future-work controls retain the active theme while the complete panel is attenuated by --placeholder-opacity.
.category-editor · .category-panel · .category-group.layout-visibility-header · .layout-visibility-row.theme-surface-preview · current / alternateTypography
Headings · Text · Monospace
Public typography roles are Headings, Text, and Monospace. Internally these map to --font-display, --font-interface, and --font-mono; “display” and “interface” are implementation names, not additional user-facing roles.
--font-display · --weight-*--font-interface · --weight-*--font-mono · --weight-*.eyebrowALPHA BETA
.taglineLorem ipsum dolor sit amet, consectetur adipiscing elit.
--font-interface · --font-display · --font-monoMono · code and technical text
Colors
semantic roles · status roles · palette families
Colors owns authored theme surfaces, semantic UI roles, and palette families. Accessibility owns user adaptations such as color-vision correction. The color-vision control shown here is only a synchronized shell mirror. Application/component CSS should consume component-facing aliases such as --input; authored source roles such as --input-shared and --input-inset describe how that alias is resolved, not a choice each component should make independently.
Component-facing semantic aliases
--page--panel--card--input--text--muted--border--accent--secondaryAuthored / resolved input-surface roles
--input-shared--input-insetGlobal semantic status colors
--info--warning--success--error--status-neutralDiscrete palette families · Standard exact / colorblindness-assisted
Standard mode uses exact protected samples. Deuteranopia, Protanopia, and Tritanopia transform runtime colors at the current correction strength; sequential families preserve source positions and categorical families are reselected in the assisted display space.
Accessibility
Standard · Deuteranopia · Protanopia · Tritanopia
Accessibility owns adaptations, not authored palette identity. The authored theme stays unchanged. Assist modes use simulation-driven daltonization: 0% is the exact authored color and 100% applies the full mode-specific correction. Components continue to request semantic color roles; the accessibility layer adapts their rendered presentation.
Authored
Assist
Assist
Assist
Guide
purpose first · anatomy second
Choose a category by semantic purpose, then choose the smallest component anatomy that satisfies the interaction. Do not choose a component merely because it looks similar. The order below is the framework taxonomy used by Styles, AGENTS, Architecture, and new-project work.
Overlays
.modal · .anchored-popover · [data-floating-panel]
Dialog is modal and owns a focused workflow that temporarily blocks the underlying page. Popover is anchored and non-modal; it presents contextual detail or local actions while the page remains active. Floating panel is a movable, optionally resizable workspace surface that remains open while the page stays interactive; geometry belongs to Interface state, and narrow layouts may fall back to modal presentation.
.modal · .modal-heading · .modal-body · .modal-actionsAlpha
Optional context belongs in the heading rhythm, not in ad hoc compressed spacing.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante venenatis dapibus.
.anchored-popoverAlpha
[data-floating-panel] · floating-panel.jsWorkspace
Modeless on wide screens; movable, optionally resizable, and safe to leave open while working.
Panel content remains application- or framework-owned independently from the floating presentation primitive.
Actions & status
.primary-button · .secondary-button · .text-button · .chip · .status-chip · .icon-button
Reusable control text is deliberately quiet: buttons, chips, segmented choices, and control values use the shared Regular control-text weight; structural/control labels use Medium, and selection/primary state does not increase weight. Primary is the principal commit/advance action and should normally appear at most once per local action cluster. Secondary is an ordinary alternate/utility action. Text is deliberately low-emphasis and local. A plain Chip is passive identity/category metadata; a Status chip is passive semantic state and adds only semantic tint plus the 8 px traffic-light dot. Status-bar actions are buttons, not chips. Badge is reserved for passive qualifiers/counts such as Placeholder; authenticated identity is an interactive Account button, not a badge. Icon glyph sizes are role-based: Primary 24 px, Contextual 20 px, Compact 14 px, Traffic light 8 px.
.primary-button.secondary-button.text-button.chip.secondary-button · .status-bar-action--icon-size-primary · 24 px20 px glyph · 24 px control--icon-size-compact · 14 px.chip · .status-chip · .status-chip--error.action-feedbackPrimary · Contextual · Compact · Traffic light.text-icon · .field-label-icon · .control-icon-pair · .contextual-icon-run · .inline-icon-runContextual controls stay 20 px regardless of surrounding type size. Short clickable info / warning / error runs use adjacent 24 px control boxes with no added run gap, leaving 4 px between 20 px glyphs. Passive semantic glyph clusters use .inline-icon-run instead; the two concepts are intentionally separate. Relationship wrappers center the complete run on the text/control midline.
.inline-icon--info · --warning · --error · --success.toolbar-icon-cluster · .toolbar-icon-group · .toolbar-icon-runThe left Persistent status-bar cluster remains Back to top / Release / Feedback; Home/root navigation now lives in the shared breadcrumb below the utility bar. On the right, adjacent Primary 24 px icons keep the zero-gap 30 px-wide × 32 px-high run rhythm inside semantic families. Neighboring families receive equal 10 px boundary space around a faint 1 px accent separator; the separator is structural CSS, not a focusable control. Color and Typography form the Appearance family, while page/authoring actions and System controls remain separate families.
Choice & state
.segmented-toggle · .toggle-switch · .switch-field · .checkbox-field
Segmented control chooses exactly one option from a small visible set. Switch changes an immediate current/persistent state such as Show labels or Enable grid. Checkbox means include/select, especially in forms, batch operations, import/export, or “include X” payload semantics. Do not choose between switch and checkbox based on appearance alone.
.segmented-toggle .segmented-toggle--fill .segmented-toggle--2.segmented-toggle .segmented-toggle--fill .segmented-toggle--4.segmented-toggle--compact.segmented-toggle--comfortable.toggle-switch · .toggle-track · .toggle-thumb.switch-field .switch-field--compact.switch-field .switch-field--supporting.choice-field · .choice-control-mark.checkbox-fieldFields
.field-control · .field-inline · .field-stack · .field-row · .slider-row
Field classes describe layout anatomy, not input type. .field-control is the explicit presentation boundary for a text-like input, select, or textarea when application typography must not leak into the control; it may be combined with the layout anatomies below. Use .field-inline for compact label/control pairs, .field-stack for label above a full-width input/select with optional supporting text, and .field-row for dense label/control rows inside compact cards. Search is simply an input type inside the appropriate field anatomy. Sliders keep their dedicated label + track + value triplet.
.field-inline.field-stack.field-stack.field-row.field-control.slider-row.slider-row .settings-slider-row.file-drop-zoneComposition
.control-group · .button-row · .equal-action-row · .control-aligned-item · .layer-display-row
Composition arranges primitives; it does not redefine their semantics. .control-group gives heterogeneous switch/field/slider rows one shared label lane; its label width and typography are controlled by the global --control-group-label-* tokens and may be overridden on one group. Compound rows wrap by logical control group: label + switch, label + slider + value, and label + select stay atomic. Components that can be narrow inside a wide page respond to their own container width. When a control-aligned label becomes stacked, return it to normal in-flow field anatomy.
.control-group · --control-group-label-width.button-row.equal-action-row .equal-action-row--2.equal-action-row .equal-action-row--3.control-aligned-item.layer-display-rowData display
.readout-row · .value-list · .data-table · .visualization-host
Choose by data shape: Readout is one compact scalar summary; Value list is several key/value metadata pairs; Data table is comparable records or measurements with row/column semantics; Visualization host is a graphical data viewport. Semantic categorical state belongs in a Status chip instead of any of these.
.readout-row · .readout-label.readout-row.emphasized.value-list.data-table| Sample | Mass mg |
|---|---|
| Alpha | 12.35 |
| Beta | 9.82 |
| Gamma | — |
.visualization-hostIcons
Material Symbols Rounded · local filled SVGs · src/js/icon-catalog.js
These are the standard filled icon names retained by the framework. Semantic status glyphs use their global status colors here. The two-pip die is a local SVG derived from the filled casino die silhouette so the pair reads as one family.
Tokens
layout · density · rhythm
Token ownership follows the same hierarchy: Density modifies component padding/height, Rhythm modifies local gaps, fixed anatomy tokens define invariant component relationships, and structural tokens compose top-level surfaces. Prefer the highest-level semantic token that matches the job.
Density
--ui-padding-x-adjustmentDensity X--ui-padding-y-adjustmentDensity Y--panel-card-padding-x14px + density--panel-card-padding-y14px + density--modal-padding-x / yoverlay padding + densityRhythm
--ui-spacing-x-adjustmentRhythm X--ui-spacing-y-adjustmentRhythm Y--panel-card-gaplocal vertical rhythm--panel-card-gap-inlinelocal inline rhythm--panel-row-gaprow rhythmFixed component anatomy
--slider-value-gaptrack → value--slider-value-widthnumeric edge--segmented-paddingsegmented shell--segmented-gapsegment separation--contextual-icon-control-size24px contextual targetStructural layout
--panel-stack-gaptop-level panel stack--release-control-gappersistent identity rhythm--utility-bar-stack-gapstatus-bar row structure--space-ypage structural space