---
version: alpha
name: Terminal Industries
description: "A surveyed white plain, a deep pine night, one acid switch."
colors:
  on-surface-variant: "rgba(5, 36, 36, 0.7)"
  on-surface: "rgba(5, 36, 36, 0.05)"
  outline: "#C2C2C2"
  primary: "#ABFF02"
  surface: "rgba(255, 255, 255, 0.1)"
  pine: "#052424"
  white: "#FFFFFF"
  light-light-gray: "#DDDDDD"
  dirty-white: "#F0F0F0"
  dark-gray: "#7F7F7F"
  rule-gray: "#979797"
  band: "#1D1D1D"
  black: "#000000"
  ink-15: "rgba(5, 36, 36, 0.15)"
  white-60: "rgba(255, 255, 255, 0.6)"
  white-30: "rgba(255, 255, 255, 0.3)"
typography:
  sequence-display:
    fontFamily: SuisseIntl
    fontSize: 109.997px
    fontWeight: 400
    lineHeight: 104.497px
    letterSpacing: -1.46667px
  display:
    fontFamily: SuisseIntl
    fontSize: 90.0096px
    fontWeight: 400
    lineHeight: 90.0096px
    letterSpacing: -3.6px
  heading-2:
    fontFamily: SuisseIntl
    fontSize: 63.9936px
    fontWeight: 400
    lineHeight: 67.1933px
    letterSpacing: -0.853333px
  heading-3:
    fontFamily: SuisseIntl
    fontSize: 46.0032px
    fontWeight: 400
    lineHeight: 55.2038px
    letterSpacing: -0.613333px
  title:
    fontFamily: SuisseIntl
    fontSize: 46px
    fontWeight: 400
    lineHeight: 55.2px
    letterSpacing: -0.46px
  heading-4:
    fontFamily: SuisseIntl
    fontSize: 30px
    fontWeight: 400
    lineHeight: 37.5px
    letterSpacing: -0.3px
  proof-stat:
    fontFamily: SuisseIntl
    fontSize: 36px
    fontWeight: 400
    lineHeight: 1.4
    letterSpacing: 0em
  lead:
    fontFamily: SuisseIntl
    fontSize: 23.0016px
    fontWeight: 400
    lineHeight: 28.982px
    letterSpacing: -0.306667px
  body:
    fontFamily: SuisseIntl
    fontSize: 20px
    fontWeight: 400
    lineHeight: 29.2px
    letterSpacing: -0.2px
  body-small:
    fontFamily: SuisseIntl
    fontSize: 18px
    fontWeight: 400
    lineHeight: 24.3px
    letterSpacing: 0.36px
  caption:
    fontFamily: SuisseIntl
    fontSize: 16px
    fontWeight: 400
    lineHeight: 20.8px
    letterSpacing: -0.16px
  nav:
    fontFamily: SuisseIntl
    fontSize: 14px
    fontWeight: 400
    lineHeight: 14px
    letterSpacing: 0.42px
  mono-label:
    fontFamily: Geist Mono
    fontSize: 11px
    fontWeight: 400
    lineHeight: 13.2px
    letterSpacing: 1.5px
  mono-label-tight:
    fontFamily: Geist Mono
    fontSize: 11px
    fontWeight: 400
    lineHeight: 8.91px
    letterSpacing: 1.98px
  mono-tab:
    fontFamily: Geist Mono
    fontSize: 12.9984px
    fontWeight: 400
    lineHeight: 10.5287px
    letterSpacing: 2.34px
rounded:
  buttons-links-tabs-chat-field-phone-trig: 8px
  image-frame: 10px
  card-media: 12px
  form-panel: 17px
  calculator-cta-block: 18px
  feature-tile-solutions-card-expanded-car: 20px
  feature-image-left-hung: 20px
  feature-image-right-hung: 0px
  product-card: 24px
  slider-track: 100px
  sections-footer-survey-rules-text-inputs: 0px
spacing:
  3xs: 5px
  2xs: 8px
  xs: 10.0032px
  sm: 12px
  md: 15px
  lg: 16px
  xl: 20.0064px
  2xl: 24px
  3xl: 32px
  4xl: 48px
  5xl: 64px
  6xl: 70px
  7xl: 80px
  8xl: 120px
  9xl: 140px
  10xl: 180px
  11xl: 230px
  12xl: 300px
---
# Terminal Industries — Style Reference

> A surveyed white plain, a deep pine night, one acid switch.

**Theme:** light

This is one system alternating two grounds: a white canvas ruled with hairline survey lines carries the argument, and full-bleed bands of black and deep pine drop in for the hero, the product sequence and the close — the same floating header pill and pine footer sit on both, on every page captured. The palette is almost entirely a near-black green on white, with `#ABFF02` rationed to the primary CTA, a list rule and a feature tile: the accent is a switch, not a wash. Type is SuisseIntl everywhere, headlines set at 90.0096px with −3.6px of tracking so the words close into a single mass, weight held at 400 where most systems reach for bold — scale does the shouting. Every button word, eyebrow and column head drops into Geist Mono at 11px tracked to 1.5–1.98px, which is where the whole technical voice lives. Rhythm is generous — 180px of section padding, 230px in the footer — against corners kept tight at 8px for controls and 20–24px for cards. Elevation is nearly absent: a lone pine panel floats on a 40/80 drop shadow, everything else flat.

## Tokens — Colors

| Name | Value | Token | Role |
|------|-------|-------|------|
| Pine | `#052424` | `--color-dark-green` | Ink and dark surface both: body copy, headlines on white, the footer fill, the lifted form panel. Green, not neutral — swap it for `#000000` and the brand collapses. |
| White | `#FFFFFF` | `--color-white` | The canvas, the ink on every dark band, and the secondary CTA's fill — white reads as a button here, not only as ground. |
| Lime | `#ABFF02` | `--color-lime` | The one saturated colour: primary CTA fill, one feature tile, a 3px list rule, the bright stop of the proof gradient. Almost never text — four of its twenty-seven observations. Never a wash. |
| Light Light Gray | `#DDDDDD` | `--color-light-light-gray` | Tertiary CTA fill, and the ink of the large character-reveal type on dark. A greyed-back white, not a border colour. |
| Light Gray | `#C2C2C2` | `--color-light-gray` | The tab's ink and 1px border, the carousel nav button fill, one feature tile. The utility grey. |
| Dirty White | `#F0F0F0` | `--color-dirty-white` | The product card's fill and the calculator submit button — rare enough that a filled tile reads as a card without a shadow. |
| Dark Gray | `#7F7F7F` | `--color-dark-gray` | The numbered eyebrow over product-card headings and the muted intro line. Editorial credit ink, never a CTA. |
| Rule Gray | `#979797` | `--color-rule-gray` | The survey rules on the white canvas — a fill on 1px divs, not a border property. |
| Band | `#1D1D1D` | `--color-band` | The dark gradient section, fading to `rgba(29, 29, 29, 0.75)` at its foot. |
| Black | `#000000` | `--color-black` | The sequence backdrop and the black feature section — full-bleed bands carrying imagery, never type. |
| Ink 70 | `rgba(5, 36, 36, 0.7)` | `--color-ink-70` | Body copy inside light cards and calculator inputs — the default secondary text on white. |
| Ink 05 | `rgba(5, 36, 36, 0.05)` | `--color-ink-05` | Ghost button and active tab fill. The quietest interactive surface in the system. |
| Ink 15 | `rgba(5, 36, 36, 0.15)` | `--color-ink-15` | The 1px hairline around card media — the structural line on light cards. |
| White 60 | `rgba(255, 255, 255, 0.6)` | `--color-white-60` | The 1px border on the Ask Terminal field and the phone trigger. |
| White 30 | `rgba(255, 255, 255, 0.3)` | `--color-white-30` | The underline border on form inputs over dark. |
| White 10 | `rgba(255, 255, 255, 0.1)` | `--color-white-10` | Fill behind the Ask Terminal field and phone trigger — glass, not a panel. |
| Proof Gradient | `linear-gradient(#64A002, #ABFF02)` | `--gradient-proof` | The proof-point number — the one place lime becomes type. Its `#64A002` floor keeps it readable at 36px on white. |

## Tokens — Typography

### SuisseIntl — the whole voice: display, headings, body, labels and nav, at 400 or 450 unless a character-reveal span pushes it · `--font-primary`
- **Substitute:** Suisse Int'l, Neue Haas Grotesk Display, Helvetica Now Display
- **Weights:** 400, 450, 500, 600, 700
- **Sizes:** 14px, 16px, 18px, 20px, 23px, 23.0016px, 30px, 36px, 46px, 46.0032px, 63.9936px, 90.0096px, 109.997px
- **Line height:** 14px at 14px (1.0) through 104.497px at 109.997px (0.95) — display sits at or below 1.0, body runs 1.20–1.46
- **Letter spacing:** negative above 20px, positive below. −3.6px at 90.0096px, −1.46667px at 109.997px, −0.853333px at 63.9936px, −0.613333px at 46.0032px, −0.46px at 46px, −0.3px at 30px, −0.306667px at 23.0016px, −0.2px at 20px, +0.36px at 18px, +0.42px at 14px
- **Role:** display, headings, body, form labels and nav — one family doing every job, separated by scale and tracking rather than by a second face

### Geist Mono — every button word, eyebrow, tab and footer column head; the technical register · `--font-mono`
- **Substitute:** Geist Mono, JetBrains Mono, IBM Plex Mono
- **Weights:** 400, 600
- **Sizes:** 11px, 12.9984px
- **Line height:** 8.91px and 13.2px at 11px; 10.5287px at 12.9984px — sub-unity leading, because these are single lines
- **Letter spacing:** 1.5px and 1.98px at 11px; 2.34px at 12.9984px — roughly +0.14em to +0.18em, uppercase in practice
- **Role:** button labels, numbered eyebrows, tab labels and footer column heads — the technical layer, never larger than 13px

### Type Scale
| Role | Size | Line Height | Letter Spacing | Token |
|------|------|-------------|----------------|-------|
| Sequence display | 109.997px | 104.497px | -1.46667px | `--text-display-xl` |
| Display | 90.0096px | 90.0096px / 85.5091px | -3.6px | `--text-display` |
| Heading 2 | 63.9936px | 67.1933px | -0.853333px | `--text-h2` |
| Heading 3 | 46.0032px | 55.2038px | -0.613333px | `--text-h3` |
| Title | 46px | 55.2px | -0.46px | `--text-title` |
| Heading 4 | 30px | 37.5px | -0.3px | `--text-h4` |
| Proof stat | 36px | normal | normal | `--text-stat` |
| Lead | 23.0016px | 28.982px | -0.306667px | `--text-lead` |
| Body | 20px | 29.2px | -0.2px | `--text-body` |
| Body small | 18px | 24.3px | 0.36px | `--text-body-sm` |
| Caption | 16px | 20.8px | -0.16px | `--text-caption` |
| Nav | 14px | 14px | 0.42px | `--text-nav` |
| Mono label | 11px | 13.2px | 1.5px | `--text-label` |
| Mono label tight | 11px | 8.91px | 1.98px | `--text-label-tight` |
| Mono tab | 12.9984px | 10.5287px | 2.34px | `--text-tab` |

## Tokens — Spacing & Shapes

**Base unit:** 4px   **Density:** comfortable

### Spacing Scale
| Name | Value | Token |
|------|-------|-------|
| 3xs | 5px | `--spacing-3xs` |
| 2xs | 8px | `--spacing-2xs` |
| xs | 10.0032px | `--spacing-xs` |
| sm | 12px | `--spacing-sm` |
| md | 15px | `--spacing-md` |
| lg | 16px | `--spacing-lg` |
| xl | 20.0064px | `--spacing-xl` |
| 2xl | 24px | `--spacing-2xl` |
| 3xl | 32px | `--spacing-3xl` |
| 4xl | 48px | `--spacing-4xl` |
| 5xl | 64px | `--spacing-5xl` |
| 6xl | 70px | `--spacing-6xl` |
| 7xl | 80px | `--spacing-7xl` |
| 8xl | 120px | `--spacing-8xl` |
| 9xl | 140px | `--spacing-9xl` |
| 10xl | 180px | `--spacing-10xl` |
| 11xl | 230px | `--spacing-11xl` |
| 12xl | 300px | `--spacing-12xl` |

`--spacing: 5.128vw` is declared on `:root` *(declared, not painted)* — no census row resolves it.

### Border Radius
| Element | Value |
|---------|-------|
| Buttons, links, tabs, chat field, phone trigger, overlay chip | 8px |
| Image frame | 10px |
| Card media | 12px |
| Form panel | 17px |
| Calculator CTA block | 18px |
| Feature tile, solutions card, expanded card | 20px |
| Feature image, left-hung | 20px 0px 0px 20px |
| Feature image, right-hung | 0px 20px 20px 0px |
| Product card | 24px |
| Slider track | 100px |
| Sections, footer, survey rules, text inputs | 0px |

### Shadows
| Name | Value | Token |
|------|-------|-------|
| Panel | `rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.25) 0px 40px 80px 0px` | `--shadow-panel` |

### Layout
- **Page max-width:** `not measured` — sections are full-bleed on a 70px horizontal gutter
- **Section gap:** 180px dominant; 300px on the tall content wrapper, 230px in the footer, 140px on dark bands, 120px and 80px on lighter blocks
- **Card padding:** 40px product card, 64px 70px solutions card, 64px form panel
- **Element gap:** 16px default; 8px and 12px inside controls, 24px and 32px between cards, 48px between column groups

## Components

### Primary CTA Button
**Role:** The action the page most wants — carried in lime so it can be found without reading.

Built from `.cta-button.cta-button--primary`: an `<a>` filled `#ABFF02` with `#052424` text, Geist Mono 11px/600, line-height 13.2px, tracking 1.5px, padding 8px 27.9936px, radius 8px, border none, shadow none. Horizontal padding runs more than three times the vertical, turning an 11px label into a wide low plate rather than a pill. Lime is the loudest colour here, so this shape appears once per view — a second lime button in the same frame destroys the signal.

### Secondary and Tertiary CTA Buttons
**Role:** The two supporting actions that sit beside the lime one without competing.

`.cta-button.cta-button--secondary` fills `#FFFFFF` with `#052424` text; `.cta-button.cta-button--tertiary` fills `#DDDDDD` with `#052424` text. Both take the identical Geist Mono 11px/600 label, 13.2px line-height, 1.5px tracking, padding 8px 27.9936px, radius 8px, border none, shadow none. Geometry holds and only luminance changes — the whole hierarchy device is three buttons of one size, ranked by brightness.

### Site Header Bar
**Role:** A floating strip carrying navigation, the assistant field and all three CTAs above whatever ground the page is on.

`.site-header` paints `#FFFFFF` ink and rides over white canvas, black bands and photography alike. Nav triggers such as `.nav-dropdown-trigger` set SuisseIntl 14px/450, line-height 14px, tracking +0.42px in `#FFFFFF`, 8px between a label and its chevron; `.header-actions` spaces the control cluster on 12px. Its own fill, radius and border are `not measured` — the bar renders as a translucent slab that takes the luminance of whatever passes behind it.

### Ask Terminal Field
**Role:** The inline assistant prompt in the header — always available, never modal.

`.ai-input-wrapper` is a `<form>` filled `rgba(255, 255, 255, 0.1)` with a 1px `rgba(255, 255, 255, 0.6)` border, padding 8px 12px, radius 8px, no shadow. Its submit control `.ai-input-submit` inks the arrow at `rgba(255, 255, 255, 0.45)`. The construction is glass — a 10% white fill under a 60% white hairline — so the field takes its colour from what passes behind it. Never give it a solid fill: that translucency is what lets one header sit on a sunset photograph and a black grid alike.

### Tab Control
**Role:** Switches the story between gate, yard and dock without moving the page.

Two measured variants. Resting `.tab`: a `<button>` with no fill, `#C2C2C2` ink, Geist Mono 13px/600, line-height 10.53px, tracking 2.34px, padding 12px 18px, radius 8px, 1px `#C2C2C2` border. Active `.is-active.tab`: fill `rgba(5, 36, 36, 0.05)`, text `#052424`, 13px/600, padding 12px 18px, radius 8px, border none. Selection swaps a grey outline for a 5% ink wash and darkens the label — no lime, no underline. Its 2.34px tracking is the widest measured, and it is what keeps a 13px uppercase label legible.

### Product Card
**Role:** Three parallel entry points — one problem, a few yards, a whole network — each with its own call to action.

`.product-grid__card` is an `<article>` filled `#F0F0F0`, padding 40px, radius 24px, border none, shadow none, spacing its contents on 32px. Its image sits in `.product-grid__card-media`: no fill, radius 12px, 1px `rgba(5, 36, 36, 0.15)` hairline. Description copy runs `rgba(5, 36, 36, 0.7)` via `.product-grid__card-desc.|.body-4`; the footer action `.product-grid__cta-button.button.label-4.product-grid__cta-button` fills `rgba(5, 36, 36, 0.05)` with `#052424` Geist Mono 11px/600 on padding 25px 96px, radius 8px. Note the radii — 24px outer, 12px media, 8px button — corners tightening inward at every level.

### Text Input Field
**Role:** The demo-request inputs, set on the dark panel as underlines rather than boxes.

`.field` is an `<input>` with no fill, `#FFFFFF` ink at SuisseIntl 18px/400, line-height 24.3px, tracking +0.36px, padding 0px 0px, radius 0px, and a 1px `rgba(255, 255, 255, 0.3)` border. Radius 0px is the point: buttons curve at 8px, fields stay straight rules. Labels take the same 18px/400 at +0.36px in `#FFFFFF`, so field and label share one size and separate only by opacity.

### Form Panel
**Role:** The lifted contact block — the one piece that floats off the page.

`.form-section` is a `<div>` filled `#052424`, padding 64px, radius 17px, border none, carrying `rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.25) 0px 40px 80px 0px` — the entire shadow vocabulary of the captured pages, doing two jobs: a 1px inset white top edge faking a lit bevel, and an 80px-blur drop at 25% black offset 40px down. The 17px radius belongs to this panel alone, one notch off the 20px card and firmer for it.

### Solutions Value Card
**Role:** A claim with a proof number attached — throughput, accuracy, speed.

`.solutions-value__card-inner` is an unfilled `<div>` with padding 64px 70px, radius 20px, border none, shadow none. Its title `.solutions-value__card-title.title-h4` runs SuisseIntl 30px/400, line-height 37.5px, tracking −0.3px in `#052424`; the proof value `.solutions-value__card-proof-point-value` is a `<dt>` at 36px/500 painted with the `#64A002` → `#ABFF02` gradient; the label beneath, `.solutions-value__card-proof-point-label`, is a `<dd>` at 16px/400, line-height 20.8px, tracking −0.16px in `#052424`, the pair spaced on 16px.

### Feature Tile
**Role:** A colour-blocked panel in the feature carousel, its meaning carried by fill.

`.features-card__wrapper` is a `<div>` measured three ways, each radius 20px, padding 0px, border none, shadow none: filled `#C2C2C2`, filled `#052424`, and filled `#ABFF02`. Zero padding makes the tile a pure colour field its children inset themselves within. Utility grey, brand pine, accent lime — rotating through them marks carousel position without a counter, and the set is the whole vocabulary.

### Accent Rule List
**Role:** A bulleted list re-cut as a rule-marked block — where lime becomes structure.

`.unordered-list` is a `<ul>` with no fill, padding 0px 24px, radius 0px, and a 3px `#ABFF02` border, spacing its items on 16px. Three pixels is the heaviest stroke measured anywhere — every other census border is 1px — and it is spent on a list, not a container. The 24px inset keeps text clear of the rule: this is the accent's structural role.

### Footer
**Role:** The full pine close on every page — logo, analyst badge, three link columns, reach-us block.

`.footer` is a `<div>` filled `#052424`, padding 230px 70px, radius 0px, border none, shadow none. Column heads set Geist Mono 11px/600, line-height 8.91px, tracking 1.98px in `#FFFFFF`; links run SuisseIntl 20px/400, line-height 29.2px, tracking −0.2px in `#FFFFFF` via `.link.link-active`; "Give us a call today." drops to `#586A6A` through `.contact-text.body-3`; `.copyright` and `.technical-index-link` sit at `rgba(255, 255, 255, 0.4)`. That 230px is second only to the tall content wrapper — a destination, not a legal strip.

## Do's and Don'ts

### Do
- Spend `#ABFF02` on one fill per view: `.cta-button.cta-button--primary`, the lime `.features-card__wrapper`, or the `.unordered-list` rule. The scarcity is the mechanism.
- Set headlines in SuisseIntl 400 at 90.0096px, −3.6px tracking, line-height equal to the size, so the words lock into a block.
- Put every uppercase micro-label in Geist Mono 11px/600 at 1.5px or 1.98px tracking — button words, eyebrows and footer column heads all use it.
- Keep 8px on anything clickable and 20–24px on anything holding content; step radii inward when nesting, as `.product-grid__card` does at 24px → 12px → 8px.
- Separate light surfaces with a 1px `rgba(5, 36, 36, 0.15)` hairline and dark ones with `rgba(255, 255, 255, 0.3)` or `rgba(255, 255, 255, 0.6)`. Borders carry the structure shadows may not.
- Rest sections on 180px of vertical padding before reaching for anything tighter.

### Don't
- Don't add a second box-shadow. The shadow census records one value across all four pages, on `.form-section`; every other card, button and panel measures `shadow none`.
- Don't substitute `#000000` for `#052424` as the ink. Black is painted twice in the capture, both times as a band fill on `.sequence-background-wrapper` and `.feature-section`, never as type.
- Don't bold the display type. The 90.0096px and 109.997px headings paint at 400; weight climbs only inside animated character spans — 500 at 63.9936px on `.--char`, 700 at 46.0032px on `.split-chars`.
- Don't round the form inputs. `.field` measures radius 0px where every control is 8px, and that contrast is the form's whole texture.
- Don't let lime become a background. Of its twenty-seven observations, twenty are fills, and each is a small object — a button plate, a tile, a rule.
- Don't dress the survey grid up. `.vertical` and `.horizontal` are `#979797` divs at radius 0px with no border: drafting rules, not decoration.

## Surfaces

| Level | Name | Value | Purpose |
|-------|------|-------|---------|
| 0 | Canvas | `#FFFFFF` | The default ground, painted by the `.lenis` root and `.background-holder`. |
| 1 | Card | `#F0F0F0` | The product card — the light surface that lifts content without a shadow. |
| 1 | Control | `#F3F4F4` | The wide light CTA link, a notch brighter than the card so a control never reads as a container. |
| 2 | Wash | `rgba(5, 36, 36, 0.05)` | Ghost buttons and the active tab: the quietest interactive surface on white. |
| 3 | Ink Panel | `#052424` | The footer and the lifted form panel — pine as surface, not only as type. |
| 4 | Band | `#1D1D1D` | The dark gradient section, fading to `rgba(29, 29, 29, 0.75)` at its lower edge. |
| 5 | Black Band | `#000000` | The sequence backdrop and the black feature section, always carrying imagery. |

## Elevation

Depth is a luminance ladder, not a shadow stack. On white, surfaces separate by fill alone — `#F0F0F0` card, `rgba(5, 36, 36, 0.05)` ghost control — reinforced by 1px hairlines: `rgba(5, 36, 36, 0.15)` around card media, `#C2C2C2` around a resting tab, `rgba(255, 255, 255, 0.3)` and `rgba(255, 255, 255, 0.6)` on fields and glass controls over dark. One box-shadow exists in the capture, on `.form-section`: `rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset` for a lit top edge plus `rgba(0, 0, 0, 0.25) 0px 40px 80px 0px` for an 80px drop. Everything else measures `shadow none`. To say *this is the object that matters*, the system lifts one panel and leaves the rest flat.

## Imagery

Photography is aerial and industrial: overhead drone frames of container yards, trailers ranked at docks, spotter trucks in painted bays, a golden-hour profile of a tractor-trailer under a graded sky — logistics as it looks from altitude, unstaged. Against it runs a synthetic second mode: wireframe truck renders in luminous point clouds and edge lines over a black yard, which is how the AI layer is made visible. Frames are notched, not rectangular — `.feature-image` measures `20px 0px 0px 20px` and `0px 20px 20px 0px`, so images hang off a page edge with two rounded corners and two square. Customer logos sit flat black on white in a ruled grid with no cards, and icons stay minimal: a phone glyph, a submit arrow, three social marks.

## Layout

Sections are full-bleed on a 70px horizontal gutter; no measured max-width contains them. The white canvas is ruled by `.vertical` and `.horizontal` divs filled `#979797` — a faint survey grid that turns the page into drafting paper and gives the oversized headlines something to sit against. Card rows run three up on 32px, sections spacing content on 24px and 48px. The header is a floating pill of nav, assistant field and three CTAs, pinned across every scroll position and every ground. Vertical rhythm is the most consistent decision here: 180px standard, 140px on dark bands, 120px and 80px on tighter blocks, 300px on the tall content wrapper, 230px in the footer. The page order repeats — white argument, dark band, white again, pine footer.

## Typography Voice

Two modes, nothing between them. Mode one is SuisseIntl at display scale with aggressive negative tracking: 90.0096px at −3.6px is roughly −0.04em, line-height set to the size or below it at 85.5091px, so three-line headlines stack into a solid rectangle with no visible leading. Mode two is Geist Mono at 11px with +1.98px of tracking, about +0.18em, on leading of 8.91px well under the size. One closes up, the other opens out, and the swing is more than 0.2em. Body copy holds the middle; note the sign flip at 20px, where type stops being display and starts being interface. What makes the display work is holding weight at 400: tracked that tight, a 400 grotesque already carries the mass of a bold, and staying light keeps the counters open.

## Agent Prompt Guide

## Quick Color Reference
- background: `#FFFFFF`
- text: `#052424`
- surface: `#F0F0F0`
- border: `rgba(5, 36, 36, 0.15)`
- accent: `#ABFF02`
- primary action: `#ABFF02`

## Example Component Prompts
1. **Primary CTA Button**: An anchor filled `#ABFF02` with `#052424` text in Geist Mono 11px weight 600, line-height 13.2px, letter-spacing 1.5px, uppercase, padding 8px 27.9936px, border-radius 8px, no border, no shadow.
2. **Product Card**: Build an article filled `#F0F0F0`, padding 40px, border-radius 24px, no border, no shadow, gap 32px. Inside: a Geist Mono 11px/600 eyebrow in `#7F7F7F`; a SuisseIntl 46px/400 heading at −0.46px tracking, 55.2px line-height, in `#052424`; body copy in `rgba(5, 36, 36, 0.7)`; a media block at border-radius 12px with a 1px `rgba(5, 36, 36, 0.15)` border; a full-width footer link filled `rgba(5, 36, 36, 0.05)` with `#052424` Geist Mono 11px/600 at 1.98px tracking, padding 25px 96px, radius 8px.
3. **Form Panel**: Build a div filled `#052424`, padding 64px, border-radius 17px, no border, box-shadow `rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.25) 0px 40px 80px 0px`. Inside, inputs with no fill, `#FFFFFF` text in SuisseIntl 18px/400 at 24.3px line-height, +0.36px tracking, zero padding, radius 0, and a 1px `rgba(255, 255, 255, 0.3)` bottom border.
4. **Tab Control**: A row of buttons at Geist Mono 13px weight 600, line-height 10.53px, letter-spacing 2.34px, uppercase, padding 12px 18px, border-radius 8px. Resting: no fill, `#C2C2C2` text, 1px `#C2C2C2` border. Active: fill `rgba(5, 36, 36, 0.05)`, `#052424` text, no border.
5. **Header Bar**: Build a floating bar with a wordmark, nav links in SuisseIntl 14px weight 450, line-height 14px, letter-spacing +0.42px in `#FFFFFF`; an assistant input filled `rgba(255, 255, 255, 0.1)` with a 1px `rgba(255, 255, 255, 0.6)` border, padding 8px 12px, radius 8px; then three buttons at padding 8px 27.9936px, radius 8px, filled `#ABFF02`, `#FFFFFF` and `#DDDDDD` in that order, the cluster spaced on 12px.

## Similar Brands
- **rejouice** — the studio credited in the footer; the same oversized negative-tracked grotesque and full-bleed band rhythm.
- **Anduril** — technical hardware documented in mono micro-labels over dark imagery, with the same refusal of decorative colour.
- **Vercel** — Geist Mono used exactly this way, a small uppercase technical layer against a near-monochrome canvas.
- **Waymo** — a light canvas, very large light-weight grotesque headlines, aerial vehicle photography carrying the warmth.
- **Nothing** — a mono-labelled, grid-ruled system where one saturated accent does all the signalling.

## Quick Start

### CSS Custom Properties
```css
:root {
  /* Colors */
  --color-dark-green: #052424;
  --color-white: #FFFFFF;
  --color-lime: #ABFF02;
  --color-lime-deep: #64A002;
  --color-light-light-gray: #DDDDDD;
  --color-light-gray: #C2C2C2;
  --color-dirty-white: #F0F0F0;
  --color-off-white: #F3F4F4;
  --color-pale: #EEEEEE;
  --color-dark-gray: #7F7F7F;
  --color-gray: #454742;
  --color-contact-gray: #586A6A;
  --color-rule-gray: #979797;
  --color-band: #1D1D1D;
  --color-black: #000000;
  --color-ink-70: rgba(5, 36, 36, 0.7);
  --color-ink-50: rgba(5, 36, 36, 0.5);
  --color-ink-20: rgba(5, 36, 36, 0.2);
  --color-ink-15: rgba(5, 36, 36, 0.15);
  --color-ink-05: rgba(5, 36, 36, 0.05);
  --color-white-60: rgba(255, 255, 255, 0.6);
  --color-white-45: rgba(255, 255, 255, 0.45);
  --color-white-40: rgba(255, 255, 255, 0.4);
  --color-white-30: rgba(255, 255, 255, 0.3);
  --color-white-20: rgba(255, 255, 255, 0.2);
  --color-white-15: rgba(255, 255, 255, 0.15);
  --color-white-10: rgba(255, 255, 255, 0.1);
  --color-black-40: rgba(0, 0, 0, 0.4);
  --color-black-30: rgba(0, 0, 0, 0.3);
  --color-band-75: rgba(29, 29, 29, 0.75);
  --gradient-proof: linear-gradient(#64A002, #ABFF02);
  --gradient-band: linear-gradient(#1D1D1D, rgba(29, 29, 29, 0.75));

  /* Typography — Families */
  --font-primary: 'SuisseIntl', ui-sans-serif, system-ui, sans-serif;
  --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, monospace;

  /* Typography — Scale */
  --text-display-xl: 109.997px;  --leading-display-xl: 104.497px;
  --text-display: 90.0096px;     --leading-display: 90.0096px;
  --text-h2: 63.9936px;          --leading-h2: 67.1933px;
  --text-h3: 46.0032px;          --leading-h3: 55.2038px;
  --text-title: 46px;            --leading-title: 55.2px;
  --text-stat: 36px;             --leading-stat: normal;
  --text-h4: 30px;               --leading-h4: 37.5px;
  --text-lead: 23.0016px;        --leading-lead: 28.982px;
  --text-body: 20px;             --leading-body: 29.2px;
  --text-body-sm: 18px;          --leading-body-sm: 24.3px;
  --text-caption: 16px;          --leading-caption: 20.8px;
  --text-nav: 14px;              --leading-nav: 14px;
  --text-tab: 12.9984px;         --leading-tab: 10.5287px;
  --text-label: 11px;            --leading-label: 13.2px;
  --leading-label-tight: 8.91px;

  /* Spacing */
  --spacing-3xs: 5px;
  --spacing-2xs: 8px;
  --spacing-xs: 10.0032px;
  --spacing-sm: 12px;
  --spacing-md: 15px;
  --spacing-lg: 16px;
  --spacing-xl: 20.0064px;
  --spacing-2xl: 24px;
  --spacing-3xl: 32px;
  --spacing-4xl: 48px;
  --spacing-5xl: 64px;
  --spacing-6xl: 70px;
  --spacing-7xl: 80px;
  --spacing-8xl: 120px;
  --spacing-9xl: 140px;
  --spacing-10xl: 180px;
  --spacing-11xl: 230px;
  --spacing-12xl: 300px;

  /* Border Radius */
  --radius-none: 0px;
  --radius-control: 8px;
  --radius-frame: 10px;
  --radius-media: 12px;
  --radius-panel: 17px;
  --radius-cta-block: 18px;
  --radius-card: 20px;
  --radius-card-lg: 24px;
  --radius-pill: 100px;
  --radius-image-left: 20px 0px 0px 20px;
  --radius-image-right: 0px 20px 20px 0px;

  /* Shadow */
  --shadow-panel: rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.25) 0px 40px 80px 0px;
}
```

### Tailwind v4
```css
@theme {
  --color-dark-green: #052424;
  --color-white: #FFFFFF;
  --color-lime: #ABFF02;
  --color-lime-deep: #64A002;
  --color-light-light-gray: #DDDDDD;
  --color-light-gray: #C2C2C2;
  --color-dirty-white: #F0F0F0;
  --color-off-white: #F3F4F4;
  --color-pale: #EEEEEE;
  --color-dark-gray: #7F7F7F;
  --color-gray: #454742;
  --color-contact-gray: #586A6A;
  --color-rule-gray: #979797;
  --color-band: #1D1D1D;
  --color-black: #000000;
  --color-ink-70: rgba(5, 36, 36, 0.7);
  --color-ink-50: rgba(5, 36, 36, 0.5);
  --color-ink-20: rgba(5, 36, 36, 0.2);
  --color-ink-15: rgba(5, 36, 36, 0.15);
  --color-ink-05: rgba(5, 36, 36, 0.05);
  --color-white-60: rgba(255, 255, 255, 0.6);
  --color-white-45: rgba(255, 255, 255, 0.45);
  --color-white-40: rgba(255, 255, 255, 0.4);
  --color-white-30: rgba(255, 255, 255, 0.3);
  --color-white-20: rgba(255, 255, 255, 0.2);
  --color-white-15: rgba(255, 255, 255, 0.15);
  --color-white-10: rgba(255, 255, 255, 0.1);
  --color-black-40: rgba(0, 0, 0, 0.4);
  --color-black-30: rgba(0, 0, 0, 0.3);
  --color-band-75: rgba(29, 29, 29, 0.75);

  --font-primary: 'SuisseIntl', ui-sans-serif, system-ui, sans-serif;
  --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, monospace;

  --text-display-xl: 109.997px;
  --text-display-xl--line-height: 104.497px;
  --text-display: 90.0096px;
  --text-display--line-height: 90.0096px;
  --text-h2: 63.9936px;
  --text-h2--line-height: 67.1933px;
  --text-h3: 46.0032px;
  --text-h3--line-height: 55.2038px;
  --text-title: 46px;
  --text-title--line-height: 55.2px;
  --text-stat: 36px;
  --text-h4: 30px;
  --text-h4--line-height: 37.5px;
  --text-lead: 23.0016px;
  --text-lead--line-height: 28.982px;
  --text-body: 20px;
  --text-body--line-height: 29.2px;
  --text-body-sm: 18px;
  --text-body-sm--line-height: 24.3px;
  --text-caption: 16px;
  --text-caption--line-height: 20.8px;
  --text-nav: 14px;
  --text-nav--line-height: 14px;
  --text-tab: 12.9984px;
  --text-tab--line-height: 10.5287px;
  --text-label: 11px;
  --text-label--line-height: 13.2px;

  --spacing-3xs: 5px;
  --spacing-2xs: 8px;
  --spacing-xs: 10.0032px;
  --spacing-sm: 12px;
  --spacing-md: 15px;
  --spacing-lg: 16px;
  --spacing-xl: 20.0064px;
  --spacing-2xl: 24px;
  --spacing-3xl: 32px;
  --spacing-4xl: 48px;
  --spacing-5xl: 64px;
  --spacing-6xl: 70px;
  --spacing-7xl: 80px;
  --spacing-8xl: 120px;
  --spacing-9xl: 140px;
  --spacing-10xl: 180px;
  --spacing-11xl: 230px;
  --spacing-12xl: 300px;

  --radius-none: 0px;
  --radius-control: 8px;
  --radius-frame: 10px;
  --radius-media: 12px;
  --radius-panel: 17px;
  --radius-cta-block: 18px;
  --radius-card: 20px;
  --radius-card-lg: 24px;
  --radius-pill: 100px;

  --shadow-panel: rgba(255, 255, 255, 0.06) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.25) 0px 40px 80px 0px;
}
```
