Redlines · handoff

Measurements, states and the rules behind them.

Everything on this page is taken from the built interface, not estimated from a mock. Where a number appears twice, the built CSS is the source of truth.

3 breakpoints5 pages 7 result states44 icon references

1 · Frame map

How the deliverable maps into a Figma file. Page names below are also the import order for html.to.design, so a frame keeps its name into the Figma file.

Figma pageFrameSizeSource
01 MarketingHome / Desktop1440 × variableindex.html @1440
01 MarketingHome / Tablet768 × variableindex.html @768
01 MarketingHome / Mobile390 × variableindex.html @390
—Report screen—Not part of this build: the wallet script renders the result after Check wallet
03 CommercePricing / Desktop1440pricing.html
04 DocsAPI stub / Desktop1440api.html
05 SystemComponents / Desktop1440system.html
05 SystemTokens / Desktop1440tokens.html
06 HandoffRedlines / Desktop1440spec.html

Prototype: chain switch, validation, and check-wallet flow run live in the HTML build. Wire the Figma prototype to mirror it (frame links listed in section 8).

2 · Grid and shell

Desktop 12 columns inside a 1240px container; tablet 8 columns; mobile 4 columns. Margins are fixed per breakpoint, gutter grows with the viewport.

100
100
1440 frame·1240 container·12 × 79.3 col·24 gutter
BreakpointContainerMarginHeaderDisplay 1Section padding
1440 desktop1240100 (gutter 32)7264 / 1.02120
1024 compact1120 max287256 / 1.02120
768 tablet704326446 / 1.0480
390 mobile350206038 / 1.0648

3 · Input card anatomy

The card is the centre of gravity: 600px maximum width, 32px radius, 20px padding, gradient hairline. Chain selection precedes the address in both eye order and tab order.

1 2 3 4 5 6
ChainRemembered
EVM address, 42 characters. A DEMO address is loaded.
Reads the connected account only
  1. 1Card: padding 20, radius 32, gradient border 1px (violet → cyan → lime at 70/35/45% alpha), shadow-4.
  2. 2Chain selector: 2 equal columns, 8 gap, 5 inner padding, 44 pill height, 20 logo, 12 horizontal padding. Selected = chain tint + chain border + logo + tick.
  3. 3Address field: 52 height, 13.5 mono, 46 left inset for the chain logo, 44 right inset for paste. Focus = cyan border + 3px 16% ring.
  4. 4Hint line: 18px reserved, 12 text. Channels: neutral, error (severe), ok (low). Text always states the rule, never just "invalid".
  5. 5Secondary action: 36 height, glass fill, 1px border-strong. Kept smaller than the primary on purpose.
  6. 6Primary: 68 height, radius 16, 20 display type, violet → cyan gradient, glow-cta. Full card width. This is the largest, brightest element above the fold at every breakpoint.

4 · Report screen

The report screen is not in this build. Check wallet hands off to the wallet script, which renders the result after connection, so the interface stops at the connect step. What stays in the design system is the vocabulary the report used: the score, the four tiers, the finding rows, the exposure bar and the audit ID, all still specified on this page and in the component library.

5 · Responsive behaviour

Section1440768390
HeaderLogo, 6 nav links, lang, theme, sign in, CTALogo, lang, theme, CTA, menu button; nav hiddenLogo, CTA, menu; lang lives in the sheet
Hero2 columns 1.06/0.94, gap 64; preview on the right1 column; preview moves below the card1 column; floating chips become a row above the panel
Input card600 max, padding 20Full width of 704Full width 350, padding 16, radius 24
Chain strip3 cards equal2 + 1 full-width soon card (horizontal)1 column, stacked
Sample report2 columns, gauge 1902 columns, gauge 1601 column, gauge 190 centered
What we screen4 × 2 grid2 × 4 grid1 column
How it works3 columns with step numbers1 column, stacked full width1 column
Use cases3 + 2 (span 3)2 + 2 + 1 full1 column
Compliance band4 columns2 × 21 column
CTA bandCopy + card side by sideStacked, card full widthStacked, no min-width on the card
FooterBrand + 4 columnsBrand + 3 columnsBrand full + 2 × 2

6 · State matrix

SurfaceStatesBehaviour
Chain selectordefault, hover, selected, focus, disabled, loadingSwitch rewrites the address, placeholder, hint and every chain badge; persists across visits
Address fieldempty, typing, valid, invalid, unsupported shape, disabled, loadingValidation on input and blur; hint text states the rule
Check walletdefault, hover, active, focus, disabled, loadingLoading 480ms before navigation, so the press has feedback
Connect triggersdefault, hover, active, focus, connectedBound by the wallet script; the interface adds no handler, modal or gate
Exportdefault, hover, loading, errorPrototype shows a demo toast instead of a file

7 · Keyboard, focus and semantics

Tab order follows the visual order inside the input card, with no positive tabindex anywhere.

  1. 1Chain option A (Ethereum) — radio, arrow keys move to B
  2. 2Chain option B (BNB Smart Chain)
  3. 3Connect wallet — hands off to the wallet script
  4. 4Check wallet — also hands off to the wallet script
  • AFocus 2px lime ring at 3px offset; inside the input the ring is replaced by a cyan border plus a 3px soft ring.
  • BTargets 44px minimum, 40px for the paste control with a 44px hit padding via the field.
  • CRisk never colour-only: icon shape differs per tier (shield, triangle, triangle, octagon) and the tier word is always present.
  • DScreen reader: gauge is a labelled image, findings are details/summary, alerts carry role status, the state toolbar is labelled as a preview control.
  • EReduced motion: every animation collapses to 0.001ms.
  • FDocument titles never contain an address; the report page title is generic.

8 · Prototype map

FromTriggerToDetail
Results · loadingautomaticResults · resultGauge sweeps once, findings stagger in
HomeCheck wallet (invalid)Inline errorField turns severe, hint states the rule, no navigation
HomeTron-shaped addressResults · unsupportedExplains the two supported chains and offers them
Any chain pillclick / arrow keysSame screenAddress, placeholder, hint and badges update in place

9 · Assets and icons

AssetSourceSizeUse
Ethereum logoOfficial Ethereum brand mark, unmodified file192 pngChain selector, badges, result header, export
BNB Smart Chain logoOfficial BNB Chain brand mark, unmodified file256 pngSame four places
Traceline markCustom SVG, gradient stroke32 viewBoxHeader, footer, PDF header
Icon setCustom 24px stroke, 1.6–1.8 weight30 symbolsSee list below
TypeGolos Text, Inter, JetBrains Mono (OFL)woff2, self-hostedLatin and latin-ext shipped, 60 subset files

Chain logos are embedded at their official colour values and are never redrawn, masked, recoloured or placed on a competing background. On light surfaces they sit on their own tint, not on the brand gradient.

10 · Copy rules

RuleIn practice
Never claim certaintyBanned: "guaranteed clean", "certified", "100% safe", "regulator-approved". A Low tier is described as absence of elevated exposure, not as safety.
No implied endorsementChain names and lists are cited as data sources only. A disclaimer appears in the footer, the compliance band and every report.
Demo data is labelledEvery demo address carries a DEMO badge on screen and in the export. Page titles never contain an address.
Numbers carry unitsScore is "68 / 100", exposure is a share, hops are counted. Percentages use one decimal.

11 · Acceptance checks

CheckEvidence in this build
What is screened in 3sH1 names wallet screening and both chains; the subhead lists sanctions, PEP, mixer, darknet, counterparties
Which chainsTwo chain badges sit above the H1, the selector is inside the card, the chain strip is the next section
Where to click68px gradient primary inside the card, compact primary in the header, third primary in the final band
CTA above the foldVerified at 1440 × 900, 768 × 1024 and 390 × 844
Chain switch updates everythingAddress, placeholder, hint, field logo, result badge, export badge
Greyscale tiersΔL* 9.5 / 18.1 / 12.8, documented with greyscale proof on the tokens page
ContrastAll tier text at 5.5:1 or better on base and cards; body text 9.2:1
44px targetsEvery control; 32px copy buttons are exceptions inside a 44px chip