Button
ActionsOne primary per view. Labels are verbs in sentence case.
The tokens, type and components this site is built from. Everything below is rendered live fromtokens.json and the same CSS the pages use. Turn on Inspect and hover anything to see which token it uses.
arjunsiv is the design system for arjunsiv.com, the portfolio of Arjun S, a frontend engineer in Bengaluru. The site has two modes. Read mode is a calm, fast page a recruiter can scan in a minute. Inspect mode (toggle in the header, or press I) turns the same page into x-ray: box-model overlays, element labels, spacing redlines, token names and live Web Vitals. The site documents itself, and that is the pitch.
probe is the only brand hue. Everything else is ink on paper. The box-* colours appear only in Inspect mode.radius-0 or radius-2, like a browser’s own panels. Round shapes are reserved for the Inspect toggle.FactCard, the 404 page and palette commands. They never become a section of the main story.paper. Cards, the palette and tooltips use paper-raised. Code and wells use paper-sunken.ink. Secondary text is ink-muted. Both pass 4.5:1 on all three paper tokens in both themes. ink-faint is for placeholders and disabled labels only.line is for decorative hairlines. Anything a person operates (button, input, toggle track) uses line-strong, which meets 3:1.probe covers links, the active toggle, focus rings, selection outlines and redlines. On a probe fill, text is on-probe, never a literal white. probe-wash tints a selected nav item or palette row.box-margin, box-border, box-padding, box-content, drawn at 35% opacity over content. Never put text on them.tip with on-tip text and a tip-accent tag name.vital-good, vital-warn and vital-poor, always with a glyph and a word (✓ Good). Never rely on hue alone.display (home hero only), h1 page titles, h2 sections, h3 sub-sections and card titles, lede under a page title, body running text, body-sm card summaries, caption dates.label for uppercase eyebrows (write sentence case, CSS uppercases), code, metric for big numbers with tabular figures, and inspect for overlay labels only.max-width: 34rem). Headings use text-wrap: balance.space-1 4 through space-24 96. Use gap in flex and grid rather than margins.space-4) and 32px from tablet up (space-8). Running text sits in a 34rem column inside it.space-16 on phones and space-24 on desktop. Cards sit space-8 apart with space-6 inner padding.probe at 15%) appears behind content.radius-0 for overlays, rulers and code. radius-1 for tags, kbd keys and tooltips. radius-2 for buttons, cards, inputs and the palette. radius-pill for the toggle only.probe instead.shadow-float is only for things that float: the palette, tooltips and the inspect panel.dur-quick (120ms) for fades and colour changes; dur-move (220ms) for the toggle knob and panel slides. No scroll-triggered entrance animations.prefers-reduced-motion, all durations become 0 and overlays appear instantly.probe outline offset by 2px.I toggles Inspect (ignored while typing), ⌘K / Ctrl K opens the palette, Esc closes overlays and unpins.pointer-events: none.currentColor as inline SVG. This choice is made for the site; there is no prior icon set.✓ ▲ ✕), so they inherit colour and read in plain text.h3 weight 760, with “siv” in probe.fact (a random sourced fact), now watching, kickoff (a penalty-shootout mini game), credits (the page scrolls like film credits).FactCard.credits.| Token | Light | Dark | Usage |
|---|---|---|---|
--paper | #f5f6f8 | #0e1014 | Page background in Read mode. The default ground for all text tokens. |
--paper-raised | #ffffff | #161920 | Cards, the command palette, tooltips and code blocks that sit above `paper`. |
--paper-sunken | #eceef2 | #090b0e | Wells: code blocks inside cards, the inspect panel body, input fields. |
--ink | #13161b | #e9ebef | Headings and body copy on `paper`, `paper-raised` and `paper-sunken`. |
--ink-muted | #545b67 | #9ba2ae | Secondary copy, dates, captions and metadata on `paper`, `paper-raised` and `paper-sunken`. |
--ink-faint | #6c7380 | #7f8794 | Placeholder text and disabled labels only. Large or non-essential text on `paper`; never body copy. |
--line | #dfe2e8 | #262b33 | Hairline dividers, card borders and table rules (decorative, not a control boundary). |
--line-strong | #878f9b | #5f6875 | Control borders (buttons, inputs, toggle track) and the ruler ticks in Inspect mode. Meets 3:1 on `paper` and `paper-raised`. |
--probe | #c4145c | #ff7bb0 | The one accent. Links, the Inspect toggle when on, focus rings, measurement redlines and the selected-element outline. Text use on `paper` and `paper-raised`. |
--probe-hover | #a10f4b | #ffa3c8 | Hover and pressed state of `probe` fills and links. |
--on-probe | #ffffff | #14060c | Text and icons on a `probe` fill (primary button, active toggle). |
--probe-wash | #c4145c1f | #ff7bb029 | Tinted ground behind the selected nav item and the highlighted command in the palette. Text on it stays `ink`. |
--box-margin | #f6b26b | #f6b26b | Inspect mode only: the margin layer of the box-model overlay (shown at 55% opacity over content). Never a text ground. |
--box-border | #ffe08a | #ffe08a | Inspect mode only: the border layer of the box-model overlay. Never a text ground. |
--box-padding | #93c47d | #93c47d | Inspect mode only: the padding layer of the box-model overlay. Never a text ground. |
--box-content | #6fa8dc | #6fa8dc | Inspect mode only: the content layer of the box-model overlay. Never a text ground. |
--tip | #13161b | #e9ebef | Inspect tooltip ground (the element label, for example `h2.title 640×48`). Inverts with the theme. |
--on-tip | #ffffff | #13161b | Element names and sizes on `tip`. |
--tip-accent | #ff8fbd | #b0104f | The tag name inside an inspect tooltip (`h2` in `h2.title`), on `tip`. |
--vital-good | #0b6e47 | #5bd69a | Web Vitals and checks rated Good. Always shown with the word "Good" or a check glyph, never colour alone. On `paper` and `paper-raised`. |
--vital-warn | #8a5300 | #f0b44c | Web Vitals rated Needs improvement. Always paired with its label. On `paper` and `paper-raised`. |
--vital-poor | #b3261e | #ff8a7a | Web Vitals rated Poor, and form errors. Always paired with its label. On `paper` and `paper-raised`. |
--space-14px · Gap between an icon and its label; tag inner vertical padding.--space-28px · Gap between tags; tooltip padding.--space-312px · Button vertical padding pair (with space-5 horizontal); list item gap.--space-416px · Minimum side gutter on phones; gap inside cards.--space-520px · Button horizontal padding.--space-624px · Card padding.--space-832px · Gap between cards in a grid.--space-1248px · Gap between a section heading and the section above.--space-1664px · Vertical space between page sections on phones.--space-2496px · Vertical space between page sections on desktop.--radius-0Inspect overlays, rulers, code blocks and section rules.--radius-1Tags, kbd keys, inspect tooltips.--radius-2Buttons, cards, inputs and the command palette.--radius-pillThe Inspect toggle track and its knob only.--shadow-floatThe command palette, inspect tooltips and the inspect panel.One primary per view. Labels are verbs in sentence case.
`as-link` in prose; `as-link--quiet` in dense lists.
I maintain an open-source design system and write about frontend performance.
Labels a stack or topic. Not interactive. Up to 5 per card.
Shortcuts: I inspects, ⌘K opens the palette, Esc closes.
Real, measured numbers only. Tabular mono figures.
A glyph and a word carry the rating; colour only reinforces it.
Whole card links to a case study. The title turns probe on hover; no lift.
Square, sunken, scrolls instead of wrapping.
// read the hovered element's box model
const s = getComputedStyle(el);
const pad = parseFloat(s.paddingTop); // 24The signature control. Every visit starts in Read mode.
DevTools box-model colours at 35%, never under text. Turn on Inspect to see it live.
Redlines name the spacing token when the gap matches one.
Wordmark, four links and the Inspect toggle. Links fold into the palette on phones.
Press ⌘K / Ctrl K to try the real one. Fun commands appear only when typed.
The only home for films, football and facts. Every fact has a source.
Octopuses have three hearts, and the one that pumps blood to the body stops beating while they swim.
Source: Smithsonian Ocean