Internal reference
Component library.
Every component in assets/css/netvyn.css, on one page, in whichever appearance mode you have selected. Check a change here before it reaches a real page.
01 Tokens
Surfaces, text and state
Every colour in the system is a token. Nothing below is a literal hex value, which is why the same markup renders correctly in light, dark and inside a plate band.
02 Type scale
Display — .h-xl
Section heading — .h-lg
Sub heading — .h-md
Lede paragraph — .lede. Sits under a heading and carries the argument. Capped around 58 characters for readability.
Small lede — .lede-sm, used inside panels and detail views.
Body small — .small-2, for supporting notes.
Label — .label
Accent label — .label .label-a
20,000sessions
.num-xl with nested small
Rules
- Body
- Manrope
- Technical values
- IBM Plex Mono
- Headings
- tight tracking
- Measure
- 54–62ch
- Hierarchy from
- scale, not colour
Monospace is reserved for things a user could type or read off a terminal: labels, values, counters, identifiers. Never for prose.
03 Layout helpers
Splits and grids
Each block below must show two side-by-side columns above 992px. If any of them stacks, a display:grid declaration has gone missing.
.split — equal
.split-7 — wide left
.split-5 — wide right
.nv-grid — hairline grid, .g-3
Panel
Separated by a single border, no shadow.
Panel
Children fade only, never translate.
Panel
Background shifts on hover.
.nv-strip
04 Band system
Section rhythm
Three treatments, alternated so no two adjacent sections read the same. This is what carries hierarchy with motion disabled.
- Base
- .sec
- Recessed
- .sec.band-inset
- Dark technical
- .sec.band-plate
.band-plate re-scopes the full token set locally rather than overriding individual colours, so any component dropped inside it renders correctly with no extra classes. The plate is dark in both light and dark appearance.
05 Controls
Form controls
Helper text sits under the field.
06 Cards
.card-nv — link card
Static card
Not a link, so it never lifts — only interactive things move.
.stat-card and .stat-xl
.stat-xl gives the number the display weight.
Use only where a verified number exists.
.bento — asymmetric tiles
Wide tile carries the argument
Weight follows importance, not the grid. A row takes the height of its tallest tile, so give narrow tiles enough content to sit near their neighbours or the row opens a void.
- Key
- value
- Key
- value
07 Diagrams
.topo — network position
.stepper
Step
Short description.
Step
Short description.
Step
Short description.
.timeline
- Planned
Entry title
Supporting line.
- Planned
Entry title
Supporting line.
.rail-list
- 01
Numbered item
Used beside a diagram in a split.
- 02
Numbered item
Separated by a hairline, not a bullet.
08 Interactive
.exp — capability explorer (horizontal tabs)
Kicker
First panel
Arrow keys move between tabs. The first pane carries data-on in the source, so with JavaScript off one panel still renders.
At a glance
- Key
- value
- Key
- value
Second panel
Panel content.
Third panel
Panel content.
.flow — stage rail (vertical tabs)
Stage 01
First stage
Detail for the selected stage.
Stage 02
Second stage
Detail for the selected stage.
Stage 03
Third stage
Detail for the selected stage.
.nv-tabs and .nv-pills
.accordion-nv
09 Data display
.table-nv
| Row heading | Value |
|---|---|
| Supported | Yes |
| Not applicable | — |
.kv
- Key
- value
- Longer key name
- mono value
.gauge and .meter
.spark
.matrix
| Item | Plane A | Plane B |
|---|---|---|
| Firstcaption | ||
| Secondcaption |
.vs — comparison
| Dimension | Option A | Option B |
|---|---|---|
| Row | Description of the first option. | Description of the highlighted option. |
.mock — console mockup
| id | type | state |
|---|---|---|
| example-0001 | type | up |
| example-0002 | type | cleared |
Mockups always carry a visible illustrative note.
.nv-code and .logs
# comment [Netvyn-BNG] command argument "value" [Netvyn-BNG] commit ; save
10 Motion
Motion supports the UI, it does not carry it
The test: disable every animation and the page should still read as a finished product. If it does not, the fix is the layout, never more motion.
- Pointer feedback 130–180ms, entrance around 420ms, nothing longer
- Displacement never exceeds 8px; no scale bounce, no glow, no gradient
- Lift is reserved for elements that are actually clickable
- Entrance classes are applied by script, so JavaScript off means fully visible
- Everything collapses to static under
prefers-reduced-motionand in print
Tokens
- Fast
- --nv-t-fast · .13s
- Base
- --nv-t · .18s
- Entrance
- --nv-t-slow · .42s
- Easing
- --nv-ease
- Stagger step
- 55ms, capped at 5
Opt an element out of the entrance layer with data-no-anim.