The Access Matrix is a branded HTML component for rendering role-based permission grids on the published site. It is styled by
publish.css and currently used by the canonical Eval Labs Roles and Access Matrix.What it is
A reusable, on-brand replacement for a plain Markdown permission table. It renders a card with numbered capability columns, a sticky role column, per-role access meters, and accessible grant / deny marks in the Eval Labs gold/amber palette. It exists because the access model is load-bearing canon and deserves a clearer, more scannable presentation than a raw Markdown grid.Where it lives
Rule
- Edit the live access values only in the canonical matrix (Roles and Access Matrix). It is the single source of truth; other notes link to it rather than copy it.
- Keep the grid data identical to the role definitions on that same page. The visual is not allowed to diverge from the written canon.
- Recolor through the brand variables, not hard-coded hex. The component reads
--eval-gold,--eval-amber,--eval-orange,--eval-deep-orange,--eval-ink, and the callout fill/stroke tokens. - Keep the accessibility markup:
scopeon header/row cells,role="img"+aria-label="Allowed" / "Not allowed"on every mark.
Use when
- A note needs to show who-can-do-what across roles and surfaces.
- The grid is small enough to read as a matrix (a handful of roles × a handful of capabilities).
- The data is canonical and stable enough to be worth styling.
Avoid
- Duplicating the matrix data into a second note. Link to the canonical one instead.
- Using it for large or frequently-changing tables where a plain Markdown table is easier to maintain.
- Inlining a
<style>block or Google-Fonts<link>in the note. Obsidian Publish does not render those reliably — all styling belongs inpublish.css.
Markup skeleton
Wrap everything in.eval-access-matrix. Mark full-access rows with am-tier-full and the no-access row with am-tier-none so the role tint and meter labels render correctly.
Markdown gotchaKeep the HTML block free of blank lines. A blank line inside it makes Obsidian close the HTML and resume Markdown, which breaks the table.
Class reference
| Class | Purpose |
|---|---|
eval-access-matrix | Component root; defines all --am-* brand variables |
am-eyebrow / am-title / am-lede | Header block |
am-card / am-scroll | Card shell + horizontal scroll below ~1000px |
am-corner / am-role / am-tag / am-desc | Sticky role column and its label |
am-meter / am-meter-track / am-meter-fill / am-meter-label | Per-role access meter (set width inline on the fill) |
am-num | Monospace 01–0n capability number |
am-mark am-grant | Gold/amber grant chip (ink check SVG) |
am-deny | Faint dash for not-allowed |
am-tier-full / am-tier-none | Row modifiers for full-access tint and zero-access meter |
am-foot / am-legend / am-stamp | Legend and corner stamp |

