55 element groups across text, buttons, choice, input, slider, layout, status, overlays, gallery and the wheel picker. Each lands in a registry-driven catalogue that shows every variant in both themes, so an element that fails to register is visibly absent rather than quietly missing. rule_content_is_data iterates the REGISTRY, not a list: a new element is attacked with markup the moment it calls define(), and one without a demo fails the suite. That is announcement-not-enumeration applied to the tests. Fixes found while building: checkbox silently ignored its label (inverted logic left it with aria-label=toggle), the overlay root set z-index 0 and so became a stacking context that trapped every overlay it was built to free, and raising a window left its peers' z stale because z is derived from position -- claim() now notifies a rung when a peer moves. The wheel highlights the actual sector rather than a box around the label: the lit shape is the region that picks the item, which is what makes it aimable.
32 lines
1.5 KiB
CSS
32 lines
1.5 KiB
CSS
.cx-h { font-family: var(--font-display); font-weight: var(--fw-semibold); color: var(--text); }
|
|
.cx-h-display { font-size: var(--fs-d2); line-height: var(--lh-d2); font-weight: var(--fw-bold); letter-spacing: -0.02em; }
|
|
.cx-h-xl { font-size: var(--fs-d3); line-height: var(--lh-d3); font-weight: var(--fw-bold); letter-spacing: -0.015em; }
|
|
.cx-h-lg { font-size: var(--fs-1); line-height: var(--lh-1); }
|
|
.cx-h-md { font-size: var(--fs-2); line-height: var(--lh-2); }
|
|
.cx-h-sm { font-size: var(--fs-3); line-height: var(--lh-3); }
|
|
|
|
.cx-t { color: var(--text); }
|
|
.cx-t-lg { font-size: var(--fs-2); line-height: var(--lh-2); }
|
|
.cx-t-md { font-size: var(--fs-3); line-height: var(--lh-3); }
|
|
.cx-t-sm { font-size: var(--fs-4); line-height: var(--lh-4); }
|
|
.cx-t-xs { font-size: var(--fs-6); line-height: var(--lh-6); }
|
|
|
|
.cx-hint { font-size: var(--fs-6); line-height: var(--lh-6); color: var(--muted); }
|
|
|
|
.cx-label { font-size: var(--fs-5); line-height: var(--lh-5); color: var(--text); }
|
|
|
|
.cx-eyebrow {
|
|
font-size: var(--fs-7); line-height: var(--lh-7);
|
|
letter-spacing: .08em; text-transform: uppercase;
|
|
color: var(--faint);
|
|
}
|
|
|
|
.cx-code { font-family: var(--font-mono); font-size: 0.92em; color: var(--accent-hi); }
|
|
.cx-code-block {
|
|
font-family: var(--font-mono); font-size: var(--fs-6); line-height: var(--lh-snug);
|
|
color: var(--text); background: var(--elev-2);
|
|
border: var(--bw) solid var(--line); border-radius: var(--r-3);
|
|
padding: var(--sp-4) var(--sp-5); margin: 0;
|
|
overflow-x: auto; /* wide code scrolls itself, never the page */
|
|
}
|