Skip to content

Now in the official shadcn registry directory.

Start free
Back to gallery
developer tools · saas · fintech

Antimetal

Dark-marketing AWS cost optimization — single gradient hero, big metric-as-typography for savings figures, near-monochrome feature scroll, product screenshot proof over testimonial quotes. Antimetal breaks the beige B2B convention of its category and lets calm clarity carry the page.

antimetal.comAdded 2026-05-11
Antimetal - Desktop

Editorial disclaimer

Editorial note

This entry documents observable design-language patterns for educational transfer and AI-agent briefing. Screenshots and trademarks are property of their respective owners. AI2 Design is not affiliated with or endorsed by the featured brand. Inspiration here is about language and rhythm - do not reproduce brand identity, logo, product copy, or proprietary features.

Fair Use & Gallery Policy
FreePrompt kit

Copy the full design language into your agent

A typed, paste-ready design system brief - philosophy, tokens, rules, techniques, and fitness checks. Drop it into Claude, Cursor, v0 or any coding agent and it builds in Antimetal’s language, not just a screenshot.

Paste into your agent. No signup, no cost.
Dark-marketing cost-optimization system — single gradient hero, big metric typography for savings figures, restrained downstream feature sections, product screenshots as proof. Motion is for state and reveal only. The brand promise is calm clarity in a noisy category.
Main prompt
Use this capture as a design-language brief for B2B cost-optimization or developer-finance marketing. Adopt the dark canvas, single gradient hero, big metric-as-typography for outcome figures, near-monochrome feature scroll, and product-screenshot proof. Avoid pie charts in marketing surfaces — display-scale numerics carry savings better.
Layout
Stacked
Content width
Bounded
Framing
Layered
Grid strength
Strong

Dark-first canvas — primary surface #1b2540 paired with foreground #fafeff doing the bulk of reading-layer work. Accent moments use #000000 + #0c264d sparingly. Near-black backdrop with restrained warm or cool accents.

Mode strategydark-first
  • #1b2540 — primary surface / dominant background
  • #fafeff — primary foreground / reading layer
  • #000000 — first accent — used for CTAs and highlights
  • #0c264d — secondary accent / hover states
  • #ffffff — tertiary surface / panels

Gradients (paste-ready)

// No gradient extracted — use solid surfaces
  • Primary family: abcdFont. Mono fallback: JetBrains Mono for code and tabular numerics.
  • Weight ladder: 400 / 450 / 480. Keep substitutions tight — the captured ladder is the typographic signature.
  • Display tracking uses negative px (not em) for optical correction at large sizes — typically -0.5 to -1.5px at 48-64px hero scale.
  • Heading line-height tightens at display sizes (1.0-1.2); body sits at 1.4-1.6. Captions and small UI labels at 1.3.
  • Tabular numerals mandatory on aligned columns: font-variant-numeric: tabular-nums.
  • Italic reserved for editorial quotes and emphasis where weight cannot carry — never for product UI labels.
  • Paragraph max 45-55ch at body size; dense data tables may extend to 65ch with line-height 1.5.
  • Scale (observed): 2 / 4 / 6 / 8 / 10 / 12 / 14 / 16 px. Stay on the scale — no magic numbers.
  • Container max-width: 976px. Secondary bounded rails for narrow content clusters at ~480-640px.
  • Section vertical rhythm: 64-128px on desktop, 40-80px on mobile, scaled by page depth.
  • Card padding: 16-24px on desktop, 12-16px on mobile.
  • Gutter values draw from the smaller half of the scale (4 / 8 / 12 / 16 / 24).
Surface styleLayered
  • Primary elevation is inset 1px border shadow — `box-shadow: <border-color> 0 0 0 1px inset`. Use this before reaching for drop shadow.
  • Drop shadows stay subtle (opacity 0.05-0.4, blur 1-12px, zero spread). No bloom, no halo.
  • Layering depth comes from border weight + background tone shift, not stacked shadow.
  • Focus state uses inset ring at accent color — never an outer glow on form fields.

Techniques

Inset-1px border as surface delimiter

Cards default to a 1px inset border shadow at the surface-divider color. Hover adds a second inset in the accent color. Never switch to outer drop-shadow for hover.

Radii4 / 8 / 12 / 16 / 24Icon treatmentLinearIcon setsLucide, Custom
  • Radius scale: 4 / 8 / 12 / 16 / 24. Buttons default to 12px, cards to 16px, modals to 24px.
  • Icon style is linear — stroke-based at 1.5-2px weight; no filled or duotone variants.
  • Tap targets minimum 44×44 on touch, 40×40 on pointer devices.
  • button-primary
    backgroundColor
    #000000
    textColor
    #1b2540
    radius
    12px
    padding
    10px 16px
    border
    1px solid transparent
    boxShadow
    none
    fontWeight
    480
    fontSize
    14px
    lineHeight
    20px

    Tailwind

    inline-flex items-center gap-1.5 rounded-[12px] bg-[#000000] px-4 py-2.5 text-[14px] font-medium text-[#1b2540] transition-colors duration-200 ease-out hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#000000]
  • button-secondary
    backgroundColor
    transparent
    textColor
    #fafeff
    radius
    12px
    padding
    10px 16px
    border
    1px solid #0c264d
    boxShadow
    none
    fontWeight
    480
    fontSize
    14px

    Tailwind

    inline-flex items-center gap-1.5 rounded-[12px] border border-[#0c264d] bg-transparent px-4 py-2.5 text-[14px] font-medium text-[#fafeff] transition-colors duration-200 ease-out hover:bg-[#ffffff] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#000000]
  • card-surface
    backgroundColor
    #fafeff
    textColor
    #fafeff
    radius
    16px
    padding
    24px
    border
    none
    boxShadow
    #0c264d 0 0 0 1px inset

    Tailwind

    rounded-[16px] bg-[#fafeff] p-6 text-[#fafeff] shadow-[#0c264d_0_0_0_1px_inset]
  • input-field
    backgroundColor
    #fafeff
    textColor
    #fafeff
    radius
    8px
    padding
    8px 12px
    border
    1px solid #0c264d
    boxShadow
    none
    fontSize
    14px
    lineHeight
    20px

    Tailwind

    w-full rounded-[8px] border border-[#0c264d] bg-[#fafeff] px-3 py-2 text-[14px] leading-5 text-[#fafeff] placeholder:text-[#ffffff] focus-visible:outline-none focus-visible:border-[#000000] focus-visible:ring-2 focus-visible:ring-[#000000]/30
LevelexpressiveDurations0.6s / 0.3s / 1s

Easings

cubic-bezier(0.4, 0, 0.2, 1)ease-outease
Hoveropacity + color shift on interactive elements (160-200ms on ease-out), subtle scale (1.0 → 1.02) on cards and tappable surfaces, rarely above 1.05, background tone shift between surface and surface-elevated on hover

Scroll patterns

  • Intersection-triggered opacity + translateY reveals (12-24px) on 0.3-0.5s ease-out
  • Stagger 40-80ms between grouped cards or list items
  • No parallax beyond 2-4% translateY — subtle depth, never theatrical
  • Captured motion level: expressive. Libraries detected: Framer Motion.
  • useReducedMotion mandatory — all animations collapse to opacity-only or disable entirely.
  • Deterministic cubic-bezier or ease-out only; spring animations only where genuinely needed.
  • Loop animations forbidden except explicit loaders.
  • Hover and reveal motion use the same primary easing curve to feel consistent across the page.
  • Segmented controls for binary/ternary choices (pricing toggle, doc version switcher) over toggle switches.
  • Accordion: single-open for FAQ; multi-open only for deeply nested documentation.
  • Tooltips: hover + focus with 300-400ms delay, dismiss instantly on blur.
  • Modals for destructive confirmations; drawers for mobile-only expansions; never nested modals.
  • Form validation: inline below field on blur; submit disabled until pristine.
  • Empty states: small icon + one-line copy + primary action link, no illustrations beyond brand pattern.
  • Loading states: skeleton shimmer for content blocks; inline spinner for button confirm states.
Approachdesktop-first

Desktop-first because the audience is technical teams on wide displays. Mobile adapts the same language without reinventing it — no hamburger-revealed alternate architecture.

  • Breakpoints: sm 640 / md 768 / lg 1024 / xl 1280 / 2xl 1536 — standard Tailwind ladder.
  • Container max-width: 976px. Below 1280, padding compresses but composition holds.
  • Hide-on-mobile is banned — if a control exists on desktop, it must reach mobile via reflow.
  • Tap target minimum 44×44 on touch; 40×40 on pointer devices.
  • Typography scales proportionally: hero 48-64 → 32-40 on tablet → 28-32 on mobile.
  • Color contrast: foreground #fafeff on background #1b2540 should meet WCAG AA at minimum (4.5:1 for body, 3:1 for display). Verify with axe-core or Lighthouse.
  • focus-visible: 2px ring at accent color, never display:none on focus outline. Mandatory on every interactive element.
  • All interactive elements reachable via Tab in logical reading order; never rely on hover to expose actions.
  • ARIA labels on icon-only buttons; aria-expanded on collapsibles; aria-live='polite' on toasts.
  • Motion respects prefers-reduced-motion — animations reduce to opacity-only or disable entirely.
  • Form errors announced via aria-describedby on the associated input; never color-only signaling.
  • Screen reader-only content uses sr-only; never display:none for meaningful context.
Framer MotionNext/Image

Motion library detected: Framer Motion. Image handling uses Next/Image (or equivalent) with lazy-loading default. Icons: Lucide.

  • Motion: motion.div with whileInView and viewport={{ once: true, margin: '-10%' }} for scroll reveals.
  • Transitions use constants only — define ease and duration as named tokens (e.g. ease.standard, duration.fast).
  • useReducedMotion guard wraps every animation primitive — no exceptions.
  • Next/Image with sizes attribute always set; priority only on LCP candidate (hero image).
  • No canvas, no WebGL, no Lottie unless required by product (e.g. waveform demos).
  • Apply focus-visible ring at accent color #000000 on every interactive element.
  • Use tabular-nums on aligned numerics; reach for monospace fallback for code and kbd inline.
  • Stay within the captured spacing scale (2, 4, 6, 8, 10, 12 px) — no magic numbers.
  • Break body text at 45-55ch; dense tables may extend to 65ch at 13-14px.
  • Reach for inset 1px border shadows before any drop shadow.
  • Pass every page through useReducedMotion before shipping.
  • Default to the primary easing curve for interactive transitions; reserve longer durations for atmospheric beats.
  • Never introduce a font weight outside the captured ladder — the discipline is the signature.
  • Never invent durations or easings outside the captured set — pick from the existing scale.
  • Never use drop shadows above 0.4 opacity or 16px blur — heavy elevation breaks the surface language.
  • Never introduce a secondary display font without explicit reason — one family + one mono is the boundary.
  • Never animate height: auto — use measured transforms or scaleY.
  • Never use em for tracking on display sizes — the px-based scale is an optical constant.
  • Never apply hover-only affordances — every interaction must be keyboard + screen reader reachable.
  • Tailwind v4 @theme inline only — no runtime style concatenation, no CSS-in-JS beyond the design system.
  • Spacing scale: 2 / 4 / 6 / 8 / 10 / 12 / 14 / 16 px.
  • Container max-width: 976px — do not exceed.
  • Single font family: abcdFont, plus JetBrains Mono mono fallback.
  • Weight ladder: 400 / 450 / 480 — no substitutions.
  • Motion: durations 0.6s, 0.3s, 1s; easings ease-out + cubic-bezier(0.4, 0, 0.2, 1). No springs unless explicitly motivated.
  • Radius scale: 4 / 8 / 12 / 16 / 24 px.
  • Container width: no page section exceeds 976px wide.
  • Spacing grep: no values outside the 2 / 4 / 6 / 8 / 10 / 12 ladder (+ scale extensions).
  • Font weight grep: only 400, 450, 480 appear in computed styles.
  • Transition timing-function values draw from the captured easing set (ease-out + cubic-bezier(0.4, 0, 0.2, 1)).
  • Transition duration values draw from {0.6s, 0.3s, 1s}s.
  • Shadow audit: every elevation uses an inset 1px shadow first; drop shadows ≤ 0.4 opacity.
  • Image audit: loading='lazy' on every non-LCP image; priority only on hero.
  • Contrast audit: body text on dominant background ≥ 4.5:1 (WCAG AA).
  • Tap target audit: minimum 44×44 on touch surfaces; 40×40 on pointer.

Design tokens

Observed token system

Color, type, spacing, gradients, and stacking order captured from the live page and rendered here as living, paste-ready previews.

Inspector

Observable layers

Structure, breakpoints, motion, fonts, and images captured from the live page and kept paste-ready alongside the tokens.

Depth-first walk of the meaningful sections. 3 nodes across 3 levels, shallow to deep by color.

  • body1
    • Main1
      • Footer

Accessibility

Contrast matrix

122 combinations - 70 pass AA - 58 pass AAA. Each pair is previewed with its real foreground on background; APCA Lc sits alongside the WCAG 2.1 ratio for draft WCAG 3 awareness.

Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FFFFFF
APCA Lc
+106
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#000000
APCA Lc
-108
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#FAFEFF
bg
#000000
APCA Lc
-107
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#FAFEFF
APCA Lc
+105
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#FFFFFF
bg
#090703
APCA Lc
-108
Use
background on accent
Normal text passes AAALarge text passes AAA
fg
#090703
bg
#FFFFFF
APCA Lc
+106
Use
accent on background
Normal text passes AAALarge text passes AAA
fg
#000000
bg
#F8F9FC
APCA Lc
+102
Use
foreground on background
Normal text passes AAALarge text passes AAA
fg
#F8F9FC
bg
#000000
APCA Lc
-104
Use
background on foreground
Normal text passes AAALarge text passes AAA
fg
#FAFEFF
bg
#090703
APCA Lc
-107
Use
background on accent

Images

Image strategy

Observable image posture - total count, lazy-loading ratio, and format mix. The hero image is measured above the fold.

Total images
30
Lazy loaded
100%
Format mix
  • avif68 · 100%

Hero image

https://antimetal.com/assets/footer/background-transition.avif
Format
AVIF
Dimensions
1884x1124
Loading
lazy
srcset
no
Industry
developer-tools
Industry
saas
Industry
fintech
Theme
Light
Added
2026-05-11

FAQ

Questions people ask about Antimetal

3questions

Answers are pulled from the curator verdict and design brief - the same text your AI agent sees when it paste-reads this page.

Compare this with