# Sentri-Inspired — Style Reference
> An inspired interpretation of Sentri's design language — a developer-tools brand built on a deep purple-violet midnight canvas, electric lime accents, and a slightly subversive illustrated personality. The system pairs a custom display sans (chunky, playful, near-condensed) with the open Rubik family for UI copy and Monaco for code, then leans on dark-on-light pricing surfaces, sticker-style mascots, and a single-color CTA hierarchy where black-violet buttons read as the primary action against either polarity.

**Theme:** light

**Source website:** [https://sentry.io/](https://sentry.io/)  
Use the live official website to compare and validate this extracted snapshot. The current source website remains authoritative.

## Tokens — Colors

| Name | Value | Token | Role |
|---|---|---|---|
| primary | `#150f23` | `--color-primary` | primary role extracted from the source design |
| ink deep | `#1f1633` | `--color-ink-deep` | ink deep role extracted from the source design |
| on primary | `#ffffff` | `--color-on-primary` | on primary role extracted from the source design |
| accent lime | `#c2ef4e` | `--color-accent-lime` | accent lime role extracted from the source design |
| accent pink | `#fa7faa` | `--color-accent-pink` | accent pink role extracted from the source design |
| accent violet | `#6a5fc1` | `--color-accent-violet` | accent violet role extracted from the source design |
| accent violet deep | `#422082` | `--color-accent-violet-deep` | accent violet deep role extracted from the source design |
| accent violet mid | `#79628c` | `--color-accent-violet-mid` | accent violet mid role extracted from the source design |
| surface canvas dark | `#1f1633` | `--color-surface-canvas-dark` | surface canvas dark role extracted from the source design |
| surface canvas light | `#ffffff` | `--color-surface-canvas-light` | surface canvas light role extracted from the source design |
| surface night | `#150f23` | `--color-surface-night` | surface night role extracted from the source design |
| surface press light | `#f0f0f0` | `--color-surface-press-light` | surface press light role extracted from the source design |
| surface press stronger | `#efefef` | `--color-surface-press-stronger` | surface press stronger role extracted from the source design |
| hairline violet | `#362d59` | `--color-hairline-violet` | hairline violet role extracted from the source design |
| hairline cool | `#cfcfdb` | `--color-hairline-cool` | hairline cool role extracted from the source design |
| hairline cloud | `#e5e7eb` | `--color-hairline-cloud` | hairline cloud role extracted from the source design |
| ink | `#1f1633` | `--color-ink` | ink role extracted from the source design |
| ink press | `#1a1a1a` | `--color-ink-press` | ink press role extracted from the source design |
| on dark muted | `#bdb8c0` | `--color-on-dark-muted` | on dark muted role extracted from the source design |
| on dark faint | `#3f3849` | `--color-on-dark-faint` | on dark faint role extracted from the source design |
| ring focus | `#9dc1f5` | `--color-ring-focus` | ring focus role extracted from the source design |

## Tokens — Typography

### Sentri Display, Rubik, system-ui, sans-serif · `--font-primary`
- **Substitute:** Inter, system-ui, sans-serif
- **Weights:** 700, 500
- **Sizes:** 88px, 60px
- **Line height:** 1.2, 1.1
- **Letter spacing:** 0
- **Role:** Brand typography family observed across the documented type scale.

### Rubik, -apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif · `--font-family-2`
- **Substitute:** Inter, system-ui, sans-serif
- **Weights:** 500
- **Sizes:** 30px
- **Line height:** 1.2
- **Letter spacing:** 0
- **Role:** Brand typography family observed across the documented type scale.

### Rubik, -apple-system, system-ui, sans-serif · `--font-family-3`
- **Substitute:** Inter, system-ui, sans-serif
- **Weights:** 500, 600, 400, 700
- **Sizes:** 27px, 24px, 20px, 16px, 15px, 14px, 10px
- **Line height:** 1.25, 2, 1.5, 1.4, 1.14, 1.29, 1.43, 1.8
- **Letter spacing:** 0, 0.2px, 0.25px
- **Role:** Brand typography family observed across the documented type scale.

### Monaco, Menlo, Ubuntu Mono, monospace · `--font-family-4`
- **Substitute:** Inter, system-ui, sans-serif
- **Weights:** 400, 700
- **Sizes:** 16px
- **Line height:** 1.5
- **Letter spacing:** 0
- **Role:** Brand typography family observed across the documented type scale.

### Type Scale

| Role | Size | Line Height | Letter Spacing | Token |
|---|---|---|---|---|
| display-hero | 88px | 1.2 | 0 | `--text-display-hero` |
| display-large | 60px | 1.1 | 0 | `--text-display-large` |
| heading-xl | 30px | 1.2 | 0 | `--text-heading-xl` |
| heading-lg | 27px | 1.25 | 0 | `--text-heading-lg` |
| heading-md | 24px | 1.25 | 0 | `--text-heading-md` |
| heading-sm | 20px | 1.25 | 0 | `--text-heading-sm` |
| body-lg | 16px | 2 | 0 | `--text-body-lg` |
| body-strong | 16px | 1.5 | 0 | `--text-body-strong` |
| body-md | 16px | 1.5 | 0 | `--text-body-md` |
| eyebrow | 15px | 1.4 | 0 | `--text-eyebrow` |
| button-cap | 14px | 1.14 | 0.2px | `--text-button-cap` |
| button-cap-light | 14px | 1.29 | 0.2px | `--text-button-cap-light` |
| caption | 14px | 1.43 | 0 | `--text-caption` |
| micro-cap | 10px | 1.8 | 0.25px | `--text-micro-cap` |
| code | 16px | 1.5 | 0 | `--text-code` |
| code-strong | 16px | 1.5 | 0 | `--text-code-strong` |

## Tokens — Spacing & Shapes

**Density:** comfortable

### Spacing Scale

| Name | Value | Token |
|---|---|---|
| xxs | 2px | `--spacing-xxs` |
| xs | 4px | `--spacing-xs` |
| sm | 8px | `--spacing-sm` |
| md | 12px | `--spacing-md` |
| lg | 16px | `--spacing-lg` |
| xl | 24px | `--spacing-xl` |
| xxl | 32px | `--spacing-xxl` |
| section | 96px | `--spacing-section` |

### Border Radius

| Name | Value | Token |
|---|---|---|
| xs | 4px | `--radius-xs` |
| sm | 6px | `--radius-sm` |
| md | 8px | `--radius-md` |
| lg | 10px | `--radius-lg` |
| xl | 12px | `--radius-xl` |
| xxl | 18px | `--radius-xxl` |
| full | 9999px | `--radius-full` |

### Layout

- **Section gap:** 96px
- **Card padding:** 16px
- **Element gap:** 12px
- **Max content width:** 1200px

## Components

### button primary
**Role:** button primary component

- **backgroundColor:** `{colors.primary}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.md}`
- **padding:** `12px 16px`

### button primary pressed
**Role:** button primary pressed component

- **backgroundColor:** `{colors.surface-press-stronger}`
- **textColor:** `{colors.ink-press}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.md}`
- **padding:** `12px 16px`

### button inverted
**Role:** button inverted component

- **backgroundColor:** `{colors.on-primary}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.md}`
- **padding:** `12px 16px`

### button inverted pressed
**Role:** button inverted pressed component

- **backgroundColor:** `{colors.surface-press-light}`
- **textColor:** `{colors.ink-press}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.md}`
- **padding:** `12px 16px`

### button ghost on dark
**Role:** button ghost on dark component

- **backgroundColor:** `{colors.on-dark-faint}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.xl}`
- **padding:** `8px`

### button violet token
**Role:** button violet token component

- **backgroundColor:** `{colors.accent-violet-mid}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.button-cap-light}`
- **rounded:** `{rounded.xl}`
- **padding:** `8px 16px`

### button disabled
**Role:** button disabled component

- **backgroundColor:** `{colors.hairline-cloud}`
- **textColor:** `{colors.on-dark-muted}`
- **typography:** `{typography.button-cap}`
- **rounded:** `{rounded.md}`
- **padding:** `12px 16px`

### pill neutral dark
**Role:** pill neutral dark component

- **backgroundColor:** `{colors.surface-night}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.caption}`
- **rounded:** `{rounded.xs}`
- **padding:** `4px 8px`

### chip lime keyword
**Role:** chip lime keyword component

- **backgroundColor:** `{colors.accent-lime}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.display-hero}`
- **rounded:** `{rounded.xs}`
- **padding:** `0 12px`

### text input
**Role:** text input component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.sm}`
- **padding:** `8px 12px`

### text input focused
**Role:** text input focused component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.sm}`
- **padding:** `8px 12px`

### select violet
**Role:** select violet component

- **backgroundColor:** `{colors.accent-violet-deep}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.md}`
- **padding:** `8px 16px`

### card pricing
**Role:** card pricing component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.xl}`
- **padding:** `32px`

### card pricing featured
**Role:** card pricing featured component

- **backgroundColor:** `{colors.surface-night}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.xl}`
- **padding:** `32px`

### card feature dark
**Role:** card feature dark component

- **backgroundColor:** `{colors.ink-deep}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.body-lg}`
- **rounded:** `{rounded.xxl}`
- **padding:** `32px`

### card spotlight violet
**Role:** card spotlight violet component

- **backgroundColor:** `{colors.accent-violet-deep}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.body-lg}`
- **rounded:** `{rounded.xxl}`
- **padding:** `32px`

### code block
**Role:** code block component

- **backgroundColor:** `{colors.surface-night}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.code}`
- **rounded:** `{rounded.md}`
- **padding:** `16px`

### link on dark
**Role:** link on dark component

- **backgroundColor:** `{colors.surface-canvas-dark}`
- **textColor:** `{colors.on-primary}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.xs}`
- **padding:** `0px`

### link on light
**Role:** link on light component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.xs}`
- **padding:** `0px`

### nav bar light
**Role:** nav bar light component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.body-md}`
- **rounded:** `{rounded.xs}`
- **padding:** `16px 24px`

### footer light
**Role:** footer light component

- **backgroundColor:** `{colors.surface-canvas-light}`
- **textColor:** `{colors.ink-deep}`
- **typography:** `{typography.caption}`
- **rounded:** `{rounded.xs}`
- **padding:** `32px 24px`

## Do's and Don'ts

### Do

- Use `--color-primary` for the brand's primary interaction treatment.
- Keep page surfaces anchored to `--color-surface-canvas-dark`.
- Preserve every typography style's documented size, line height, and letter spacing.
- Compare major implementation decisions against [the live Sentri-Inspired website](https://sentry.io/).

### Don't

- Do not introduce colors outside the documented color token set.
- Do not replace `--color-ink-deep` with an arbitrary neutral.
- Do not flatten documented component states or spacing relationships.
- Do not treat this extracted snapshot as newer than the live source website.

## Layout

Use the documented spacing scale and component geometry as the implementation baseline. Validate responsive composition and current page rhythm against [the live source](https://sentry.io/).
