UI reference

Styles

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Structure & spacing

Panels, cards, and hierarchy

.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.

Densityinside · padding

Controls space inside components.

Rhythmbetween · spacing

Controls local space between related elements.

Settings section.settings-section · .settings-section-heading

Section title

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Masthead.masthead-image-stage · .masthead-title · .masthead-subtitle

The 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.

Masthead title

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Page TOC.page-toc · .page-toc-list · .page-toc-sublist

Page-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.

Subsection.control-subsection · .control-subheading
Subgroup titleAlpha

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Control card.control-card

Alpha

Card heading

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Placeholder card.control-card.placeholder · .placeholder-badge

Future mechanism

Placeholder

Disabled future-work controls retain the active theme while the complete panel is attenuated by --placeholder-opacity.

Nested category editor.category-editor · .category-panel · .category-group
Visibility
Presentation
Type
Two-column element matrix.layout-visibility-header · .layout-visibility-row
Element A Element B
Alpha
Beta
Gamma
Theme surfaces.theme-surface-preview · current / alternate
CardLorem ipsum Current Input aliases card.
CardLorem ipsum Alternate Inset input uses its own surface.

Typography

Typography

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.

Headings--font-display · --weight-*
Regular 400 · Lorem ipsum dolor sit amet. Medium 500 · Lorem ipsum dolor sit amet. Semibold 600 · Lorem ipsum dolor sit amet. Bold 700 · Lorem ipsum dolor sit amet. Heavy 800 · Lorem ipsum dolor sit amet.
Text--font-interface · --weight-*
Regular 400 · Lorem ipsum dolor sit amet. Medium 500 · Lorem ipsum dolor sit amet. Semibold 600 · Lorem ipsum dolor sit amet. Bold 700 · Lorem ipsum dolor sit amet. Heavy 800 · Lorem ipsum dolor sit amet.
Monospace--font-mono · --weight-*
Regular 400 · Lorem ipsum dolor sit amet. Medium 500 · Lorem ipsum dolor sit amet. Semibold 600 · Lorem ipsum dolor sit amet. Bold 700 · Lorem ipsum dolor sit amet. Heavy 800 · Lorem ipsum dolor sit amet.
Eyebrow.eyebrow

ALPHA BETA

Tagline.tagline

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Typography roles--font-interface · --font-display · --font-mono
Text · controls, labels, tables, and copy Headings · headings and tagline Mono · code and technical text

Colors

UI colors and palettes

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
--secondary

Authored / resolved input-surface roles

--input-shared
--input-inset

Global semantic status colors

--info
--warning
--success
--error
--status-neutral

Discrete 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

Colorblindness modes

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

Standard

Assist

Deuteranopia

Assist

Protanopia

Assist

Tritanopia

Guide

Component hierarchy and selection rules

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.

Structure & spacingWhere surfaces live; Density is inside, Rhythm is between.
TypographyHeadings, Text, Monospace, eyebrow, tagline, weights.
ColorsAuthored theme surfaces, semantic roles, palette families.
AccessibilityUser adaptations layered over authored presentation.
OverlaysFocused modal dialogs, anchored popovers, and movable non-modal floating panels.
Actions & statusCommands, passive identity chips, semantic status chips, icon controls.
Choice & stateOne-of-many segmented choice, immediate switches, inclusion checkboxes.
FieldsData entry/adjustment laid out inline, stacked, dense-row, or slider anatomy.
CompositionHow primitives align, group, and wrap as compound rows.
Data displayScalar readout, value list, data table, visualization host.
Material iconsApproved icon vocabulary and semantic icon roles.
Layout tokensDensity, Rhythm, fixed component anatomy, structural layout.
State or action?Passive state uses a Status chip; a command uses a button.
Switch or checkbox?Switch changes current state immediately; checkbox means include/select.
Readout or table?One scalar = Readout; several metadata pairs = Value list; comparable records = Data table.
Which overlay?Focused/blocking workflow = Dialog; anchored contextual detail/action = Popover; persistent movable workspace tool = Floating panel.
Field layout?Choose inline, stacked, or dense-row anatomy by layout; input type does not choose it.
Wrapping?Wrap whole logical control groups by container width; never split control internals.

Overlays

Dialogs, anchored popovers, and floating panels

.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.

Dialog.modal · .modal-heading · .modal-body · .modal-actions
Anchored popover.anchored-popover

Alpha

Popover

Floating panel[data-floating-panel] · floating-panel.js

Actions & status

Buttons, chips, and icon controls

.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.primary-button
Secondary button.secondary-button
Text button.text-button
Chip.chip
Alpha
Status-bar action.secondary-button · .status-bar-action
Primary icon control--icon-size-primary · 24 px
Contextual info control20 px glyph · 24 px control
Compact inline icon--icon-size-compact · 14 px
Secondary note
Status chip.chip · .status-chip · .status-chip--error
System
Action feedback.action-feedback
Alpha completed.
Icon role scalePrimary · Contextual · Compact · Traffic light
Primary24 px · principal controls
Contextual20 px · attached help/info
Compact14 px · secondary indicators
Traffic light8 px · chip/status dot
Contextual placement.text-icon · .field-label-icon · .control-icon-pair · .contextual-icon-run · .inline-icon-run

Contextual 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.

Section title

Hand position

Body text / annotation Independent lane positions
Field label above dropdown
Icons directly beside dropdown
Switch row label
Show labels
Compact quantitative annotation Tolerance 0.25°
Semantic inline icons.inline-icon--info · --warning · --error · --success
InformationReference note
WarningCheck range
ErrorInvalid value
SuccessValidated
NeutralOptional detail
Traffic-light variantsStatus dots
Top-menu grouping.toolbar-icon-cluster · .toolbar-icon-group · .toolbar-icon-run

The 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

Choice and state controls

.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.

Fill, two states.segmented-toggle .segmented-toggle--fill .segmented-toggle--2
Fill, four states.segmented-toggle .segmented-toggle--fill .segmented-toggle--4
Compact.segmented-toggle--compact
Comfortable / less compact.segmented-toggle--comfortable
Switch mechanism.toggle-switch · .toggle-track · .toggle-thumb
Compact switch field.switch-field .switch-field--compact
Switch with supporting text.switch-field .switch-field--supporting
Themed checkbox and radio.choice-field · .choice-control-mark
Checkbox with supporting text.checkbox-field

Fields

Input and adjustment fields

.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.

Inline field.field-inline
Stacked field.field-stack
Search input, stacked.field-stack
Dense field row.field-row
Explicit field control.field-control
Slider row.slider-row
Settings slider.slider-row .settings-slider-row
File drop zone.file-drop-zone
Drop a file hereDrag-and-drop enhancement with an ordinary file-input action.

Composition

Rows, alignment, and compound wrapping

.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.

Aligned control group.control-group · --control-group-label-width
Button row.button-row
Equal actions, two.equal-action-row .equal-action-row--2
Equal actions, three.equal-action-row .equal-action-row--3
Control-aligned item.control-aligned-item
annotation
Layer display.layer-display-row
Seriesprimary trace

Data display

Readouts, values, tables, and visualization hosts

.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.readout-row · .readout-label
Alpha42.7
Emphasized readout.readout-row.emphasized
Beta86.1
Value list.value-list
Factory presets
3
User presets
0
Data schema
v1
Data table.data-table
SampleMass mg
Alpha12.35
Beta9.82
Gamma—
Visualization host.visualization-host

Icons

Material icon vocabulary

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 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 + density

Rhythm

--ui-spacing-x-adjustmentRhythm X
--ui-spacing-y-adjustmentRhythm Y
--panel-card-gaplocal vertical rhythm
--panel-card-gap-inlinelocal inline rhythm
--panel-row-gaprow rhythm

Fixed component anatomy

--slider-value-gaptrack → value
--slider-value-widthnumeric edge
--segmented-paddingsegmented shell
--segmented-gapsegment separation
--contextual-icon-control-size24px contextual target

Structural layout

--panel-stack-gaptop-level panel stack
--release-control-gappersistent identity rhythm
--utility-bar-stack-gapstatus-bar row structure
--space-ypage structural space