Expressive
Use the exact selected line and context line, then add ordered Dither density where late momentum gains force.
| Period | Lane index | Basket median |
|---|---|---|
| W1 | 91 | 88 |
| W2 | 94 | 89 |
| W3 | 92 | 88 |
| W4 | Missing | 90 |
| W5 | 98 | 91 |
| W6 | 101 | 92 |
| W7 | 99 | 93 |
| W8 | 104 | 95 |
| W9 | 107 | 97 |
30 destinations available.
The requested section does not exist. Showing the opening exhibit.
Exhibit 01 / DRIFT-derived
Texture gives a strengthening rate signal weight. The line, domain, gaps, and exact values remain the truth.
Illustrative sample · not live
The selected lane strengthens late in the period while the basket median rises steadily.
| Period | Lane index | Basket median |
|---|---|---|
| W1 | 91 | 88 |
| W2 | 94 | 89 |
| W3 | 92 | 88 |
| W4 | Missing | 90 |
| W5 | 98 | 91 |
| W6 | 101 | 92 |
| W7 | 99 | 93 |
| W8 | 104 | 95 |
| W9 | 107 | 97 |
Problem
Show one selected quantitative trend with texture density while preserving exact domains, context lines, and missing-data gaps.
When to use
Use Dither when momentum, density, or force materially strengthens the exact trend. Keep the context line lighter, preserve W4 as a gap, and choose Clean when texture adds no meaning.
Illustrative DRIFT-derived rate-index pattern approved for the public SUDX reference.
Kit / choose by communication job
Use the exact selected line and context line, then add ordered Dither density where late momentum gains force.
| Period | Lane index | Basket median |
|---|---|---|
| W1 | 91 | 88 |
| W2 | 94 | 89 |
| W3 | 92 | 88 |
| W4 | Missing | 90 |
| W5 | 98 | 91 |
| W6 | 101 | 92 |
| W7 | 99 | 93 |
| W8 | 104 | 95 |
| W9 | 107 | 97 |
Keep the exact sparkline primary and add a restrained Dither field only when density helps the small signal read.
| Period | Lane index | Basket median |
|---|---|---|
| W1 | 91 | 88 |
| W2 | 94 | 89 |
| W3 | 92 | 88 |
| W4 | Missing | 90 |
| W5 | 98 | 91 |
| W6 | 101 | 92 |
| W7 | 99 | 93 |
| W8 | 104 | 95 |
| W9 | 107 | 97 |
Use the exact line without texture when Dither adds no meaning. Preserve the domain, gap, context, summary, and table.
| Period | Lane index | Basket median |
|---|---|---|
| W1 | 91 | 88 |
| W2 | 94 | 89 |
| W3 | 92 | 88 |
| W4 | Missing | 90 |
| W5 | 98 | 91 |
| W6 | 101 | 92 |
| W7 | 99 | 93 |
| W8 | 104 | 95 |
| W9 | 107 | 97 |
Use Expressive when force is part of the message. Use Compact when a value leads in a dense operational row. Use Clean when the exact trend already says enough.
Do not use Dither as decoration, behind text, across several competing series, or where density implies confidence that the data does not have.
DRIFT dither chart proven and ratified into SUDX. Illustrative sample · not live.
Technical Reference
Tokens, laws, recipes, compatibility guidance, ownership, and provenance stay searchable without leading the experience.
6.0.0 stable
Copy current files locally and record their manifest digests. SUDX stays framework-neutral, with shadcn as the preferred base for reusable interface components.
foundation.md
Principles, colour, type, spacing, and how the two themes resolve.
brand-law.md
The canonical mark, its construction and clearspace, and what may never be redrawn.
motion-law.md
What motion has to communicate, and when it is not allowed to exist at all.
chart-law.md
The data language: dither fields, gaps, context lines, and the rules a chart follows.
adoption-guide.md
How a product proves the need, takes the system, and reports improvements back.
agent-guide.md
The agent rules and curated visual decision index for copying current assets into a product.
changelog.md
What changed in the design system, and the reason it changed.
shadcn.json
The required foundation, optional behavior families, role mappings, and product-owned boundary.
shadcn.css
Generated SUDX aliases for shadcn semantic roles and Tailwind v4 utilities.
shadcn-evidence.json
Non-copyable attestation for exact consumer commits, verification, and local divergence.
Identity / Technical reference
Provide one exact, recognizable SUDX X for chrome, favicon, motion, and distributed assets.
Ink routeThe route that passes over, in text ink so the mark themes with the page.Clay routeThe route that passes under, broken where the Ink route crosses. The only accent in the mark.100 by 100 viewBoxThe mark's coordinate space. The geometry is fixed and is never redrawn or traced.<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="title">
<title id="title">SUDX mark</title>
<path fill="currentColor" d="M21.3 10.7L89.3 78.7A7.5 7.5 0 0 1 78.7 89.3L10.7 21.3A7.5 7.5 0 0 1 21.3 10.7Z"/>
<path fill="#C56A4A" d="M55.66 33.74L78.7 10.7A7.5 7.5 0 0 1 89.3 21.3L66.26 44.34ZM33.74 55.66L10.7 78.7A7.5 7.5 0 0 0 21.3 89.3L44.34 66.26Z"/>
</svg>Identity / Technical reference
Define compact and formal identity arrangements across navigation, documents, icons, and operational surfaces.
sudx-x.svgThe mark on its own.sudx-lockup.svgThe wordmark and mark locked together at their approved relationship.hairline dividerThe rule that separates the lockup from adjacent content when they must sit together.<svg class="sudx-lockup" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 440 112" role="img" aria-labelledby="title">
<title id="title">SUDX formal lockup</title>
<g transform="translate(8 12) scale(.88)">
<path fill="currentColor" d="M21.3 10.7L89.3 78.7A7.5 7.5 0 0 1 78.7 89.3L10.7 21.3A7.5 7.5 0 0 1 21.3 10.7Z"/>
<path fill="#C56A4A" d="M55.66 33.74L78.7 10.7A7.5 7.5 0 0 1 89.3 21.3L66.26 44.34ZM33.74 55.66L10.7 78.7A7.5 7.5 0 0 0 21.3 89.3L44.34 66.26Z"/>
</g>
<path d="M116 18V94" stroke="currentColor" stroke-opacity=".22"/>
<g transform="translate(140 21)" fill="none" stroke="currentColor" stroke-width="9" stroke-linecap="square" stroke-linejoin="miter">
<path d="M48 4H0V31H48V58H0"/>
<path d="M69 4V58H119V4"/>
<path d="M143 4V58H174C194 58 204 46 204 31S194 4 174 4Z"/>
</g>
<g transform="translate(355 14) scale(.76)">
<path fill="currentColor" d="M21.3 10.7L89.3 78.7A7.5 7.5 0 0 1 78.7 89.3L10.7 21.3A7.5 7.5 0 0 1 21.3 10.7Z"/>
<path fill="#C56A4A" d="M55.66 33.74L78.7 10.7A7.5 7.5 0 0 1 89.3 21.3L66.26 44.34ZM33.74 55.66L10.7 78.7A7.5 7.5 0 0 0 21.3 89.3L44.34 66.26Z"/>
</g>
<path d="M140 96H425" stroke="currentColor" stroke-opacity=".16"/>
</svg>Identity / Technical reference
Lock the mark geometry, 1X clearspace, minimum sizes, and selective technical-document grammar.
1X clearspaceClear space around the mark or lockup equal to the width of one route. Nothing enters it.64pxThe lockup's comfortable minimum width.40pxThe superseded minimum target, still carried by surfaces that predate 3.4.2.24pxThe wordmark's minimum legible height.16pxThe mark's minimum legible size on its own.<figure><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="title">
<title id="title">SUDX mark</title>
<path fill="currentColor" d="M21.3 10.7L89.3 78.7A7.5 7.5 0 0 1 78.7 89.3L10.7 21.3A7.5 7.5 0 0 1 21.3 10.7Z"/>
<path fill="#C56A4A" d="M55.66 33.74L78.7 10.7A7.5 7.5 0 0 1 89.3 21.3L66.26 44.34ZM33.74 55.66L10.7 78.7A7.5 7.5 0 0 0 21.3 89.3L44.34 66.26Z"/>
</svg><figcaption>1X clearspace · 16px minimum</figcaption></figure>Motion / Technical reference
Express continuous route awareness with a clean sweep and a short dithered memory.
1.5px coreThe radar sweep's leading edge. Clean, never dithered.Bayer 4 by 4The ordered dither matrix. The one approved way to render partial coverage.short tailThe sweep's dithered memory. Short enough to read as decay, not as a smear.prefers-reduced-motionThe setting that replaces every animation with its static end state.<canvas data-sudx-radar aria-hidden="true"></canvas>Motion / Technical reference
Expand the shipping-intelligence remit without shifting the hero layout.
shippingA term in the rotating headline's approved remit.tradeA term in the rotating headline's approved remit.freightA term in the rotating headline's approved remit.portsA term in the rotating headline's approved remit.cargoA term in the rotating headline's approved remit.<span data-sudx-rotating-word>shipping</span>Foundation / Technical reference
Provide one warm light theme, one true-black dark theme with white type and the Clay accent, and semantic colors with fixed jobs.
--sudx-backgroundThe page ground. Everything else is drawn on it, and nothing else may claim it.--sudx-surfaceA raised reading surface: cards, panels, popovers. Carries no resting shadow.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-border-strongThe heavier hairline, reserved for a dashed or emphasised edge around unproven or empty work.--sudx-textPrimary reading text.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-accent-wellThe tinted accent ground behind a notice, an arrival ribbon, or an applied filter. Background only.<script src="/assets/theme.js"></script><link rel="stylesheet" href="/assets/sudx-tokens.css">Foundation / Technical reference
Assign a clear font role to identity, interface, data, and editorial narrative.
--sudx-font-wordmarkSpace Grotesk. The SUDX wordmark and rare display headings, nothing else.--sudx-font-sansGeist. All interface text: headings, controls, navigation, body.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-font-serifSource Serif 4. Editorial and analytical prose only, never controls, tables, or data.<h2>Interface heading</h2><data value="1840">USD 1,840</data><p class="editorial">Analysis</p>Foundation / Technical reference
Create dense but legible layouts with a 4px/8px rhythm, flat surfaces, and restrained rounding.
--sudx-space-1 through --sudx-space-8The whole spacing scale: 4, 8, 12, 16, 24, 32, 48, 64px. No value between steps.--sudx-radiusThe surface radius. Cards, panels, and buttons.--sudx-radius-chipThe tighter radius for chips and badges, so a small inline marker does not carry the corner of the card it sits on.--sudx-shadow-activeThe single-pixel lift on a pressable control. Dropped while the control is active.--sudx-shadow-popoverThe only shadow permitted on a floating surface. Resting panels carry none.<section class="sudx-panel"><header>Section</header><div>Content</div></section>Foundation / Technical reference
Make interaction perceivable and predictable for keyboard, touch, motion-sensitive, and screen-reader users.
--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.prefers-reduced-motionThe setting that replaces every animation with its static end state.<button type="button">Action</button><style>button:focus-visible{outline:2px solid var(--sudx-accent);outline-offset:2px}</style>Foundation / Technical reference
Keep interface copy factual, domain-specific, concise, and explicit about units, time, source, and uncertainty.
--sudx-font-sansGeist. All interface text: headings, controls, navigation, body.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-projectedA value that was estimated rather than observed. Always carries its word label too.<p><data value="1840">USD 1,840 / FEU</data> <time datetime="2026-W29">W29</time> <small>Source: carrier sheet</small></p>Foundation / Technical reference
Publish a universal SUDX base that products adopt selectively while keeping framework source and product expression local.
--sudx-backgroundThe page ground. Everything else is drawn on it, and nothing else may claim it.--sudx-textPrimary reading text.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.<link rel="stylesheet" href="./sudx/tokens.css"><link rel="stylesheet" href="./sudx/shadcn.css">0 proof consumers · 0 verified families · 0 local additions · 0 local deviations
sudx-tokens.css · shadcn.json · shadcn.css
shadcn.css 429bbb01bc9ba5cea83069df0ed94010c2923b43578a10d1c32aaa990bd5c1bbshadcn.json eab36c8b93686caa8f10a1c59772352e9cca99514b63da3c2094f765d870815csudx-tokens.css 90dd2735036eaac7d0a76e98dd3cf91457d6bc13aa0b7de1014c8045877c7398The 4.8.0 dark theme changed nine dark neutrals and the dark Clay accent, which changed sudx-tokens.css and therefore its normative hash. The drift-lp and cma-tracker proofs recorded in 4.7.0 were taken against the 4.7.0 token file and prove that release only, so this profile returns to pending rather than carrying them forward: a consumer proof is bound to the exact bytes it was taken against, and re-pointing it at bytes the consumer never rendered would be a false receipt. Those proofs remain addressable and unaltered in the frozen release at design/releases/4.7.0/assets/compatibility/shadcn-evidence.json (drift-lp@d541d324, cma-tracker@c7c7a6bd). Restoring candidate-proved requires re-rendering both consumers against the 4.8.0 foundation, regenerating their consumer-owned evidence files, and recording the new proof commits and hashes here. Until that happens no compatibility family is claimed verified for 4.8.0.
Primitives / Technical reference
Express one clear primary action, quieter secondary actions, links, and unavailable states.
--sudx-textPrimary reading text.--sudx-backgroundThe page ground. Everything else is drawn on it, and nothing else may claim it.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.--sudx-transition-controlThe one control transition. Anything longer reads as latency.<button class="sudx-button sudx-button--primary" type="button"><span>Save changes</span></button>Primitives / Technical reference
Collect an observed value with its unit and period held inside the control, and render a value that was never observed as missing rather than blank.
--sudx-surfaceA raised reading surface: cards, panels, popovers. Carries no resting shadow.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-border-strongThe heavier hairline, reserved for a dashed or emphasised edge around unproven or empty work.--sudx-textPrimary reading text.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-cost-upA rise in buyer cost. Always paired with the arrow and the percentage, never colour alone.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.--sudx-transition-controlThe one control transition. Anything longer reads as latency.<div class="sudx-field"><label for="rate">All-in rate</label><span class="sudx-field__slot"><input id="rate" name="rate" aria-describedby="rate-help"><span class="sudx-field__unit">USD/FEU</span></span><small id="rate-help">Spot, week 31</small></div>Primitives / Technical reference
Resolve one route out of several, or include a series, with the clay diamond and the filled cell carrying which kind of choice is being made.
--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-accent-wellThe tinted accent ground behind a notice, an arrival ribbon, or an applied filter. Background only.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-border-strongThe heavier hairline, reserved for a dashed or emphasised edge around unproven or empty work.--sudx-textPrimary reading text.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-cost-upA rise in buyer cost. Always paired with the arrow and the percentage, never colour alone.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.<fieldset class="sudx-choices"><legend>Scope</legend><label class="sudx-choice"><input type="radio" name="scope" value="overview" checked><span>Overview</span><span class="sudx-choice__key">scope=overview</span></label></fieldset>Primitives / Technical reference
Let a reader take the warm light theme or the true-black dark theme, starting from the one their system already asked for, and show which of the two the next press delivers.
--sudx-surfaceA raised reading surface: cards, panels, popovers. Carries no resting shadow.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-textPrimary reading text.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.--sudx-shadow-activeThe single-pixel lift on a pressable control. Dropped while the control is active.--sudx-transition-controlThe one control transition. Anything longer reads as latency.<script src="/assets/theme.js"></script><button class="sudx-theme-toggle" type="button" data-theme-toggle aria-pressed="false" aria-label="Use dark theme"><span aria-hidden="true">◐</span><span data-theme-label>Use dark theme</span></button><script src="/assets/site.js" defer></script>Primitives / Technical reference
Communicate success, warning, error, freshness, direction, and experimental state without relying on color alone.
--sudx-cost-upA rise in buyer cost. Always paired with the arrow and the percentage, never colour alone.--sudx-cost-downA fall in buyer cost. Green is not "good" here; it is a direction.--sudx-warningA caution marker for freshness and gaps. Measures 5.26:1 on paper, the same step as its cost siblings, so it carries small text as well as badges and borders.--sudx-projectedA value that was estimated rather than observed. Always carries its word label too.<p role="status"><span aria-hidden="true">!</span> Data is stale by 2 hours.</p>Patterns / Technical reference
Orient users with a persistent wordmark, restrained primary links, current location, and reachable theme control.
--sudx-backgroundThe page ground. Everything else is drawn on it, and nothing else may claim it.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-surface-quietThe recessed companion to a surface: readouts, table heads, and inset wells.--sudx-textPrimary reading text.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.--sudx-transition-controlThe one control transition. Anything longer reads as latency.<header class="sudx-header"><a class="sudx-wordmark" href="/" aria-label="SUDX home"><span class="sudx-brand-name" aria-hidden="true">SUD</span><svg class="sudx-mark" viewBox="0 0 100 100" aria-hidden="true"><path class="sudx-mark__ink" d="M21.3 10.7L89.3 78.7A7.5 7.5 0 0 1 78.7 89.3L10.7 21.3A7.5 7.5 0 0 1 21.3 10.7Z"/><path class="sudx-mark__clay" d="M55.66 33.74L78.7 10.7A7.5 7.5 0 0 1 89.3 21.3L66.26 44.34ZM33.74 55.66L10.7 78.7A7.5 7.5 0 0 0 21.3 89.3L44.34 66.26Z"/></svg></a><nav class="sudx-nav" aria-label="Primary"><a data-mobile-essential href="/design/" aria-current="page">design/</a><a data-mobile-essential href="/portal">sign-in/</a></nav></header>Patterns / Technical reference
Group related content with one flat surface, clear heading, optional controls, and internal section separators.
--sudx-surfaceA raised reading surface: cards, panels, popovers. Carries no resting shadow.--sudx-surface-quietThe recessed companion to a surface: readouts, table heads, and inset wells.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-radiusThe surface radius. Cards, panels, and buttons.<section aria-labelledby="panel-title"><header><h2 id="panel-title">Lane context</h2></header><div>Content</div></section>Patterns / Technical reference
Present comparable records with stable columns, tabular values, visible units, and row actions that preserve context.
--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-textPrimary reading text.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-transition-controlThe one control transition. Anything longer reads as latency.<table><caption>Rates · USD/FEU</caption><thead><tr><th scope="col">Lane</th><th scope="col">Rate</th></tr></thead><tbody><tr><th scope="row">HKG → LAX</th><td>1,840</td></tr></tbody></table>Patterns / Technical reference
Keep the view, the analysis range, the comparison period, the applied filters, and the primary view action in one control region that states the scope it holds.
--sudx-surface-quietThe recessed companion to a surface: readouts, table heads, and inset wells.--sudx-activeThe pressed or currently selected state of a control, not a hover.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-accent-wellThe tinted accent ground behind a notice, an arrival ribbon, or an applied filter. Background only.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-border-strongThe heavier hairline, reserved for a dashed or emphasised edge around unproven or empty work.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-target-minThe minimum interactive target. Raised from 40px in 3.4.2.--sudx-transition-controlThe one control transition. Anything longer reads as latency.aria-liveThe region that announces a state change to a screen reader without moving focus.toolbar.htmlThe published analysis toolbar recipe.<div class="sudx-toolbar" role="group" aria-label="Analysis controls"><div class="sudx-toolbar__rail"><div class="sudx-toolbar__controls"><fieldset class="sudx-toolbar__views"><legend class="sudx-visually-hidden">View</legend><label class="sudx-toolbar__view"><input type="radio" name="view" value="overview" checked><span>Overview</span></label></fieldset><span class="sudx-toolbar__group"><label class="sudx-toolbar__key" for="range">Range</label><span class="sudx-field__slot"><span class="sudx-toolbar__picker"><select id="range" name="range"><option selected>W24–W29</option></select></span><span class="sudx-field__unit">6 wk</span></span></span></div><span class="sudx-toolbar__actions"><button class="sudx-button sudx-button--primary" type="button">Export view</button></span></div><p class="sudx-toolbar__scope" aria-live="polite"><span class="sudx-toolbar__key">Scope</span><span><b>2026-06-08 → 2026-07-19</b></span><span>6 weeks</span></p></div>Patterns / Technical reference
Keep layout and recovery clear while data is loading, empty, stale, unavailable, or invalid.
--sudx-warningA caution marker for freshness and gaps. Measures 5.26:1 on paper, the same step as its cost siblings, so it carries small text as well as badges and borders.--sudx-cost-upA rise in buyer cost. Always paired with the arrow and the percentage, never colour alone.--sudx-surface-quietThe recessed companion to a surface: readouts, table heads, and inset wells.aria-liveThe region that announces a state change to a screen reader without moving focus.<section aria-labelledby="state-title"><h2 id="state-title">Rates unavailable</h2><p>Try again.</p><button type="button">Retry</button></section>Patterns / Technical reference
Protect a registered path with one portal password while keeping errors generic and sessions scoped.
password-onlySign-in takes a password and no identifier. There are no accounts to enumerate.same-origin return_toThe post-login destination, resolved on the server and rejected if it leaves the origin.HttpOnly scoped cookieThe session cookie: HttpOnly, SameSite=Lax, scoped to one portal path, 24 hours.POST logoutSign-out is POST-only, so a link or a prefetch can never end a session.<form method="post" action="/api/login"><input type="hidden" name="return_to" value="/portal"><label>Password <input name="password" type="password" autocomplete="current-password"></label><button>Sign in</button></form>Data language / Technical reference
Show a value with its unit, comparison, direction, time range, source, and estimate state in one scan path.
--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.--sudx-cost-upA rise in buyer cost. Always paired with the arrow and the percentage, never colour alone.--sudx-cost-downA fall in buyer cost. Green is not "good" here; it is a direction.--sudx-projectedA value that was estimated rather than observed. Always carries its word label too.<figure><figcaption>Rate · W29</figcaption><data value="1840">USD 1,840 / FEU</data><p>▲ USD 30 · Source: carrier sheet</p></figure>Data language / Curated
Show one selected quantitative trend with texture density while preserving exact domains, context lines, and missing-data gaps.
BAYER_4The matrix itself, shared by every dithered surface so texture stays identical.MAX_COVERAGE = 0.4That ceiling's value: at most 40% of cells filled.OFF_TIER = 0.34The ink an unlit dither cell keeps, as a fraction of a lit one. Above zero, so density reads as weight rather than as holes punched through to the page.FIELD_FLOOR = 0.34The ink a dither field keeps at the value line, as a fraction of its ink at the domain floor. Above zero, so the field stays attached to the line it describes.cellSize = 2The dither cell in device pixels. Larger reads as pattern, smaller as noise.explicit domainThe stated minimum and maximum of a chart axis. A domain is never inferred and never hidden.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.<figure><figcaption>Selected series · explicit domain</figcaption><canvas data-dither-chart="" aria-hidden="true"></canvas><table aria-label="Selected and context series values">…</table></figure>Data language / Technical reference
Add a compact line trend to a dense row without replacing the value, range, or accessible summary.
--sudx-textPrimary reading text.--sudx-text-mutedSecondary text: supporting prose, units, and labels beside a value.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.<svg role="img" aria-label="Six-week utilization rises from 74 to 88 percent" viewBox="0 0 160 40"><polyline points="2,31 32,24 63,27 94,16 126,18 158,8"/></svg>Data language / Technical reference
Compare allocation utilization in a matrix using profile-owned bands, printed values, and adaptive foreground contrast.
CMA shortfall rgba(190,74,84,.75)A quarantined CMA Tracker band colour. Not a SUDX token and not for reuse.CMA warning rgba(181,138,45,.70)A quarantined CMA Tracker band colour. Not a SUDX token and not for reuse.CMA target rgba(63,115,82,.75)A quarantined CMA Tracker band colour. Not a SUDX token and not for reuse.CMA high rgba(94,94,158,.80)A quarantined CMA Tracker band colour. Not a SUDX token and not for reuse.<table aria-label="Allocation utilization"><tr><th>Member A</th><td data-band="target">102%</td></tr></table>Data language / Technical reference
Represent two-dimensional allocation relationships and calendar-shaped activity with explicit axes and square cells.
--sudx-surface-quietThe recessed companion to a surface: readouts, table heads, and inset wells.--sudx-accentClay for borders, fills, strokes, and underlines. Below AA on paper, so never small text.--sudx-borderThe default hairline. One rule or one tonal inset separates two things, never both.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.<figure><div role="img" aria-label="Five of eight weeks active">…</div><figcaption>W22–W29 · 5 active</figcaption></figure>Data language / Technical reference
Attach source, as-of time, confidence, missingness, and projection state to the value or chart they qualify.
--sudx-projectedA value that was estimated rather than observed. Always carries its word label too.--sudx-warningA caution marker for freshness and gaps. Measures 5.26:1 on paper, the same step as its cost siblings, so it carries small text as well as badges and borders.--sudx-font-monoGeist Mono with tabular figures. Every value, date, percentage, unit, and token name.sourceWhere a value came from, named within one line of the value.as-ofThe moment a value was true, printed beside it.<aside aria-label="Data provenance"><dl><dt>Source</dt><dd>Carrier sheet</dd><dt>As of</dt><dd><time datetime="2026-07-20T09:00:00+08:00">20 Jul 09:00 HKT</time></dd></dl></aside>Motion / Retired