ghost · desktop
提取置信度
- 组件与网站的匹配度为 95%
- 覆盖了网站 100% 的颜色
- 覆盖了网站 21% 的文字样式
- 76% 的令牌在网站上出现过
PayPal荷兰站首页采用大胆、面向大众消费者的设计风格,核心是鲜明的天蓝色(#60cdff)首屏区域,搭配超粗黑色展示字体(PayPal Pro w900)。导航栏为白底黑字,设有两种截然不同的行动按钮:描边的"Inloggen"和实心黑色的"Rekening openen"。页面顶部是深海军蓝色的公告横幅。整体语言高对比、圆角胶囊造型突出,并以品牌字体为主导,向广泛的大众金融用户传达信任感与易用性。
10px
10px
12px
12px
30px
30px
组件
Buttons5
primary · desktop
primary · desktop
悬停时,它的渲染与网站的相似度为 83%,低于 97% 的标准。
默认匹配度 100%21 项测量全部一致
悬停匹配度 83%18 项测量全部一致
聚焦匹配度 100%18 项测量全部一致
secondary · desktop
secondary · desktop
悬停时,它的渲染与网站的相似度为 88%,低于 97% 的标准。
默认匹配度 100%21 项测量全部一致
悬停匹配度 88%18 项测量全部一致
聚焦匹配度 100%18 项测量全部一致
Extras3
desktop
默认匹配度 100%85 项测量全部一致
desktop
默认匹配度 100%85 项测量全部一致
desktop
PayPal
Overview
PayPal's German consumer site reads as confident, friendly fintech. The canvas is calm and high-contrast: white and a warm off-white carry most pages, black ink carries nearly all text, and brand color appears in deliberate full-bleed blocks. Those blocks are a deep navy business band and a bright sky field behind the hero, not sprinkled accents. Lifestyle photography in large rounded containers adds warmth. The copy is short and reassuring, aimed at everyday shoppers with a parallel business audience.
Hierarchy comes almost entirely from type scale. Display headlines are set in PayPal Pro at weight 900 with tight tracking, on a ladder that runs from title-lg (25.8751px) up to hero-display (180.911px). Below them, body and UI text drops sharply to PayPal Pro Text VF at 14–21px. Little sits in between, so the jump from headline to subcopy is the main signal of importance. Sections stack as centered, single-column hero blocks: an optional toggle or eyebrow, a giant headline, a line of subcopy, a pair of pill CTAs, then a wide image or card.
Density is low. Each block gets generous vertical air, and controls are uniform 48px pills. Elevation is used sparingly and softly. Most separation comes from color-block changes, and diffuse shadows are reserved for floating layers such as the cookie banner, phone-style cards and bottom sheets.
Key Characteristics:
- Ultra-heavy (900) PayPal Pro display type, tracked at roughly −3% of size, scaling from
title-lgtohero-display. - Near-universal black ink Ink (
ink, #000000) on Canvas (canvas, #FFFFFF) and Parchment (surface-warm, #F1EFEA). - Brand color as full-bleed blocks: PayPal Navy (
primary, #002991) with Sky Cyan (accent-on-dark, #60CDFF) as its accent. - Pill everything: buttons are 1000px-radius, 48px-tall capsules, and toggles and tabs are 96px-radius segmented tracks.
- Soft geometry on containers:
rounded.lg(24px) cards and larger radii up torounded.3xlon media. - Translucent and tinted button fills (
button-primary#FFFFFFB3,button-secondary-2#05378214) rather than loud brand-colored buttons. - Light, multi-layer diffuse shadows only on floating layers; no blur effects.
- A visible focus treatment: a white 2px halo plus a 2px blue outline offset by 2px.
Colors
The palette is mostly monochrome, with two brand blues used as fields and a family of interactive blues kept for links and focus. No gradients were observed; every surface is a flat fill.
Brand & Accent
- PayPal Navy (
primary, #002991): the brand anchor. Use it as a full-bleed surface for business and feature bands, with white text (on-primary) on top. Never use it for small text or borders. - Sky Cyan (
accent-on-dark, #60CDFF): the accent on navy fields, for highlighted words and secondary headings. It also appears as a bright color-block surface behind the hero, where black ink sits on it. - Bright Blue (
primary-bright, #0070E0): an interactive blue seen on text. Reserve it for inline interactive emphasis, not for surfaces.
Interactive & Links
- Link Blue (
link, #0066F5): the link text color. It is also the focus outline on the link-style CTAs:button-primary-2(flagged: render matched 83% of original pixels on hover) andbutton-secondary-2(flagged: render matched 88% on hover). - Browser Blue (
link-default, #0000EE): the user-agent default link color. It surfaced in text on four pages, which most likely means unstyled links. Do not design with it intentionally; uselinkinstead.
Surface
- Canvas (
canvas, #FFFFFF): the default page and card background, and the header bar. - Parchment (
surface-warm, #F1EFEA): a warm off-white for alternating sections and soft content panels. It sits on all five captured pages. - On Primary (
on-primary, #FFFFFF): text and icons placed on navy or other dark fields.
Text
- Ink (
ink, #000000): headlines, body and button labels. Pure black is the default; do not soften it to grey for body copy. - Slate (
muted, #686A6D): secondary text and thebutton-ghostlabel (#686A6D). Use it for supporting UI, not paragraphs.
Hairlines & Borders
- Mist (
hairline, #CFD3D8): the 2px outline onbutton-primaryandbutton-secondary, and the thin divider under the header.
Component & State Colors (recipe-only)
These colors were measured on components, not in page sampling.
- Focus Blue (
focus-ring, #097FF5): the 2px focus outline onbutton-primary,button-secondaryandbutton-ghost, paired with a #FFFFFF 2px halo. - Graphite (
surface-dark, #333333): the hover fill of the blackbutton-primary-2(flagged: render matched 83% of original pixels on hover).
Translucent fills also live only in recipes:
| Fill | Used on |
|---|---|
| #FFFFFFB3 | button-primary and button-secondary |
| #F0F2F9 | hover on button-primary and button-secondary |
| #F5F7FB | button-ghost hover |
| #05378214 | tab track and button-secondary-2 |
| #05378227 | button-secondary-2 hover |
| #FFFFFF3D | toggle track |
| #000000A1 | inactive label in toggle (toggle-text-2) and tab (tab-text) |
Typography
Font Family
- PayPal Pro is the proprietary display face, used only at weight 900 for every headline token from
title-lgtohero-display. - PayPal Pro Text VF is the variable text face. It carries body, links, nav, the
button-ghostlabel, and thetabandtogglelabels. It is by far the most-used family on all five pages. - PayPalOpen-Medium is a secondary UI face measured on
button-primaryandbutton-secondarylabels: 14px, weight 500, 18px line height, −0.28px tracking. Its fallback stack is "Helvetica Neue", Arial, sans-serif.
The PayPal Pro Text VF fallback stack is Helvetica, Arial, sans-serif.
Hierarchy
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
hero-display | 180.911px | 900 | 1 | -5.42734px | One-off giant hero words or statements |
display-2xl | 148.089px | 900 | 1 | -4.44266px | Section-opening statement headlines |
display-xl | 99.447px | 900 | 1.1 | -2.98341px | Large feature headlines |
display-lg | 81.5px | 900 | 1.1 | -2.445px | Page h1 / hero headline |
display-md | 67.1072px | 900 | 1.1 | -2.01322px | Major h2 section headlines |
headline-lg | 55.3392px | 900 | 1.1 | -1.66018px | Standard h2/h3 section heads |
headline-md | 45.4643px | 900 | 1.1 | -1.36393px | Sub-section and card-group heads |
title-lg | 25.8751px | 900 | 1.2 | -0.517501px | Card titles, small heads |
Body text has no published token, but it was measured in PayPal Pro Text VF:
| Role | Size | Weight | Line Height | Letter Spacing |
|---|---|---|---|---|
| Paragraph | 17.8572px | 400 | 1.5 | -0.267857px |
| Bold inline and links | 17.8572px | 700 | 1.5 | -0.267857px |
| Lead paragraph | 21.5178px | 400 | 1.5 | -0.322768px |
| CTA label | 16px | 700 | 1.5 | -0.24px |
| Small | 14px | 400 / 700 | 1.5 | -0.21px |
Control label (tab, toggle) | 12px | 700 | 16px | -0.18px |
Principles
- Weights are 400, 700 and 900. 900 is exclusive to PayPal Pro display. 700 marks emphasis, links and CTA labels in the text face. 400 is running text. The only weight-500 text is the PayPalOpen-Medium label on
button-primaryandbutton-secondary; do not spread 500 elsewhere. - Tracking is proportional and always negative. Display tokens track at about −3% of their size,
title-lgat −2%, and body at about −1.5%. Scale letter-spacing with size rather than using a fixed value. - Line height tightens as size grows. The biggest two tokens run at 1, display and headlines at 1.1,
title-lgat 1.2, and body at 1.5. Headlines are meant to stack as tight blocks. - There is no middle tier. The ladder jumps from 25.8751px headlines to roughly 18–21px body. Do not invent a semibold 20–24px subhead; use
title-lgor a 700-weight body line.
Note on Font Substitutes
PayPal Pro and PayPal Pro Text are proprietary.
- Display: use a geometric sans with a true Black cut, such as Figtree 900 or Plus Jakarta Sans 800. Keep the −3% tracking and line height 1–1.1. Check that counters don't clog at 900; if they do, step back to 800 before loosening the tracking.
- Text: Inter or Figtree at 400/700 work well. Keep the −1.5% tracking and line height 1.5.
- PayPalOpen-Medium: Inter 500 at 14px is a close stand-in.
Layout
Spacing System
No base step and no page-level section rhythm were verified. The only measured spacing tokens come from the verified buttons.
| Token | Value | Measured on |
|---|---|---|
button-primary-padding-y | 10px | button-primary, vertical padding of the root |
button-primary-padding-x | 30px | button-primary, horizontal padding of the root |
button-secondary-padding-y | 10px | button-secondary, vertical padding of the root |
button-secondary-padding-x | 30px | button-secondary, horizontal padding of the root |
button-ghost-padding-y | 12px | button-ghost, vertical padding of the root |
button-ghost-padding-x | 12px | button-ghost, horizontal padding of the root |
Pill buttons are wide and short. Horizontal padding (button-primary-padding-x, 30px) is triple the vertical (button-primary-padding-y, 10px), which gives the capsule its stretched look. Ghost buttons are square-padded on all sides (button-ghost-padding-x / button-ghost-padding-y, 12px) around an icon and label.
Grid & Container
No container max width or grid gap was verified as a token.
The screenshots show these patterns:
- Hero blocks: a centered, narrow single column for headline, subcopy and the CTA pair, followed by a wide media card.
- Header: logo and dropdown menus on the left; Hilfe, Einloggen and Neu anmelden on the right.
- Business page: a staggered photo strip that bleeds to the viewport edges, followed by a full-width navy band.
- Color blocks: these run edge to edge while text stays centered inside them.
Whitespace Philosophy
Whitespace is the separator. Sections are divided by generous vertical air and by a change of surface color (canvas → surface-warm → primary), not by rules or boxes.
Within a block, elements sit close together: headline, subcopy and CTAs read as one unit. That unit is then surrounded by a lot of empty space. Keep text columns narrow, even on wide screens, so the oversized headlines wrap into dense, poster-like stacks.
Measured Layout
Every spacing token restates a measurement of a verified component recipe, or the step those measurements share.
button-primary-padding-y: 10px (button-primary, vertical padding of the root)button-primary-padding-x: 30px (button-primary, horizontal padding of the root)button-secondary-padding-y: 10px (button-secondary, vertical padding of the root)button-secondary-padding-x: 30px (button-secondary, horizontal padding of the root)button-ghost-padding-y: 12px (button-ghost, vertical padding of the root)button-ghost-padding-x: 12px (button-ghost, horizontal padding of the root)
Elevation & Depth
| Level | Treatment | Use |
|---|---|---|
| Flat | No shadow; separation by surface color (canvas, surface-warm, primary) | Page sections, hero fields, navy bands |
| Hairline | 2px solid #CFD3D8 border (hairline) | Outline on button-primary and button-secondary; thin header divider |
| Ambient lift | rgba(0, 0, 0, 0.01) 0px 0px 17px 0px, rgba(0, 0, 0, 0.01) 0px 0px 15px 0px, rgba(0, 0, 0, 0.02) 0px 0px 13px 0px, rgba(0, 0, 0, 0.03) 0px -10px 10px 0px, rgba(0, 0, 0, 0.04) 0px 0px 5px 0px | Barely-there halo on floating layers, e.g. the cookie banner and bottom sheet (biased upward by the −10px layer) |
| Floating card | rgba(0, 0, 0, 0.14) 4px 4px 28px 6px | White phone-style cards and overlays that sit over imagery |
| Deep drop | rgba(0, 0, 0, 0.08) 0px 24px 48px 0px | A single large, soft drop under a raised media or card element (one page) |
| Shape mask | rgb(255, 255, 255) 0px -28.5714px 0px 28.5714px and rgb(255, 255, 255) 0px 28.5714px 0px 28.5714px | Solid white spread shadows used as a masking trick to carve inverted corners, not to create depth |
| Focus | box-shadow #FFFFFF 0px 0px 0px 2px plus outline 2px solid #097FF5, offset 2px | Keyboard focus on button-primary, button-secondary and button-ghost |
| Focus (link CTAs) | outline 2px solid #0066F5, offset 2px | button-primary-2 (flagged: render matched 83% of original pixels on hover) and button-secondary-2 (flagged: render matched 88% on hover) |
No backdrop blur was measured anywhere.
Shadow philosophy. Depth exists but is whispered. Shadows have very low alpha (0.01–0.14), large blur radii and almost no offset, so floating layers feel lifted off the page rather than cast onto it. They belong only to things that genuinely float: banners, sheets and cards over imagery. Everything in normal flow relies on color-block contrast and the hairline outline. The one crisp ring in the system is the focus halo; never weaken it.
Shapes
Border Radius Scale
| Token | Value | Use |
|---|---|---|
rounded.xs | 8px | Small chips, thumbnails, minor UI |
rounded.sm | 12px | Compact panels (rare, one page) |
rounded.md | 16px | Banners such as the cookie notice, inner cards |
rounded.lg | 24px | Standard content cards and hero imagery; the workhorse container radius |
rounded.xl | 29.9952px | Large phone-style card corners (one-off) |
rounded.2xl | 68.5714px | Oversized media container (one-off) |
rounded.3xl | 96px | Segmented tracks: toggle and tab (96px) |
rounded.full | 9999px | Pills and circles, the most frequent radius on the site |
The geometry is soft and pill-dominant.
- Pills: every button is a full capsule.
button-primary,button-secondary,button-primary-2(flagged: render matched 83% on hover) andbutton-secondary-2(flagged: render matched 88% on hover) all measure 1000px. Treat that as equivalent torounded.full. - Segmented controls: the Privat/Geschäftlich
toggleand thetabcontrol are 96px-radius pill tracks with 2px inner padding. - Circles: icon-only controls such as close buttons are circular.
- Containers: these step up through
rounded.mdandrounded.lgto dramatic radii on large media. The big radii echo the rounded geometric letterforms and the PayPal P mark. - Square corners appear only on a few full-bleed photo tiles. Treat them as an exception for edge-to-edge imagery, not a container style.
Components
Each component below was distilled from the live page: the recipe is a standalone, placeholder-filled reproduction with literal values, and every frontmatter key named in the anatomy carries the same measurements. A verified component reproduced the original in every check; a flagged one is shipped with the reason it did not; one marked not verifiable could not be compared with the original, which says nothing about the recipe.
Buttons
Button, primary
Verification: verified against the live page at desktop.
Anatomy
button-primary: the component root, a<button>(.c-button-primary), 11-character label
Recipe
HTML · CSS
<div class="c-button-primary-scope">
<button class="c-button-primary" type="button">lorem ipsum</button>
</div>
.c-button-primary-scope {
background-color: #F0F2F9;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-button-primary {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
min-width: 96px;
min-height: 48px;
padding: 10px 30px;
position: relative;
background-color: #FFFFFFB3;
color: #000000;
border: 2px solid #CFD3D8;
border-radius: 1000px;
cursor: pointer;
font-family: PayPalOpen-Medium, "Helvetica Neue", Arial, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 18px;
letter-spacing: -0.28px;
text-transform: none;
text-align: center;
appearance: button;
transition-duration: 0.2s, 0.2s, 0.2s;
transition-timing-function: ease, ease, ease;
transition-property: color, background-color, border-color;
}
.c-button-primary:hover {
background-color: #F0F2F9;
}
.c-button-primary:focus {
box-shadow: #FFFFFF 0px 0px 0px 2px;
outline: 2px solid #097FF5;
outline-offset: 2px;
}
States
- hover (
button-primary-hover): background-color #F0F2F9 - focus: box-shadow #FFFFFF 0px 0px 0px 2px, outline 2px solid #097FF5, outline-offset 2px
Button, secondary
Verification: verified against the live page at desktop.
Anatomy
button-secondary: the component root, a<button>(.c-button-secondary), 8-character label
Recipe
HTML · CSS
<div class="c-button-secondary-scope">
<button class="c-button-secondary" type="button">lorem ip</button>
</div>
.c-button-secondary-scope {
background-color: #F0F2F9;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-button-secondary {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
min-width: 96px;
min-height: 48px;
padding: 10px 30px;
position: relative;
background-color: #FFFFFFB3;
color: #000000;
border: 2px solid #CFD3D8;
border-radius: 1000px;
cursor: pointer;
font-family: PayPalOpen-Medium, "Helvetica Neue", Arial, sans-serif;
font-size: 14px;
font-weight: 500;
line-height: 18px;
letter-spacing: -0.28px;
text-transform: none;
text-align: center;
appearance: button;
transition-duration: 0.2s, 0.2s, 0.2s;
transition-timing-function: ease, ease, ease;
transition-property: color, background-color, border-color;
}
.c-button-secondary:hover {
background-color: #F0F2F9;
}
.c-button-secondary:focus {
box-shadow: #FFFFFF 0px 0px 0px 2px;
outline: 2px solid #097FF5;
outline-offset: 2px;
}
States
- hover (
button-secondary-hover): background-color #F0F2F9 - focus: box-shadow #FFFFFF 0px 0px 0px 2px, outline 2px solid #097FF5, outline-offset 2px
Button, ghost
Verification: verified against the live page at desktop.
Anatomy
button-ghost: the component root, a<button>(.c-button-ghost)button-ghost-group: inner group (.c-button-ghost__group)button-ghost-icon: icon placeholder, 24px (.c-button-ghost__icon)button-ghost-label: label text, 5 characters (.c-button-ghost__label)
Recipe
HTML · CSS
<div class="c-button-ghost-scope">
<button class="c-button-ghost" type="button">
<span class="c-button-ghost__group">
<span class="c-button-ghost__icon" aria-hidden="true"></span>
</span>
<span class="c-button-ghost__label">lorem</span>
</button>
</div>
.c-button-ghost-scope {
background-color: #F0F2F9;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-button-ghost {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
width: 48px;
height: 48px;
padding: 12px;
position: relative;
background-color: transparent;
color: #686A6D;
border: 0;
border-radius: 50%;
cursor: pointer;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
letter-spacing: normal;
text-transform: none;
text-align: center;
appearance: button;
}
.c-button-ghost__group {
display: block;
box-sizing: border-box;
width: 24px;
height: 24px;
aspect-ratio: 1 / 1;
}
.c-button-ghost__icon {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 24px;
height: 24px;
overflow-x: hidden;
overflow-y: hidden;
background-color: currentcolor;
}
.c-button-ghost__label {
display: block;
box-sizing: border-box;
width: 1px;
height: 1px;
position: absolute;
overflow-x: hidden;
overflow-y: hidden;
}
.c-button-ghost:hover {
background-color: #F5F7FB;
}
.c-button-ghost:focus {
box-shadow: #FFFFFF 0px 0px 0px 2px;
outline: 2px solid #097FF5;
outline-offset: 2px;
}
States
- hover (
button-ghost-hover): background-color #F5F7FB - focus: box-shadow #FFFFFF 0px 0px 0px 2px, outline 2px solid #097FF5, outline-offset 2px
Button, primary (2)
Verification: flagged, the render matched 83% of the original pixels, below the 97% required on hover after 2 correction attempts.
Anatomy
button-primary-2: the component root, a<a>(.c-button-primary-2), 12-character label
Recipe
HTML · CSS
<div class="c-button-primary-2-scope">
<a class="c-button-primary-2" href="#">lorem ipsum</a>
</div>
.c-button-primary-2-scope {
background-color: #FFFFFF;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-button-primary-2 {
display: inline-block;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: fit-content;
padding: 12px 20px;
position: relative;
background-color: #000000;
color: #FFFFFF;
border-radius: 1000px;
cursor: pointer;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 700;
line-height: 24px;
letter-spacing: -0.24px;
text-decoration-line: none;
text-align: center;
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.4, 1.2, 0.2, 1);
transition-property: padding, margin, width, height;
}
.c-button-primary-2:hover {
padding: 14px 22px;
margin: -2px;
background-color: #333333;
}
.c-button-primary-2:focus {
outline: 2px solid #0066F5;
outline-offset: 2px;
}
States
- hover (
button-primary-2-hover): padding 14px 22px, margin -2px, background-color #333333 - focus: outline 2px solid #0066F5, outline-offset 2px
Button, secondary (2)
Verification: flagged, the render matched 88% of the original pixels, below the 97% required on hover after 2 correction attempts.
Anatomy
button-secondary-2: the component root, a<a>(.c-button-secondary-2), 17-character label
Recipe
HTML · CSS
<div class="c-button-secondary-2-scope">
<a class="c-button-secondary-2" href="#">lorem ipsum dolor</a>
</div>
.c-button-secondary-2-scope {
background-color: #FFFFFF;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-button-secondary-2 {
display: inline-block;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: fit-content;
padding: 12px 20px;
position: relative;
background-color: #05378214;
color: #000000;
border-radius: 1000px;
box-shadow: transparent 0px 0px 0px 1px inset;
cursor: pointer;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 700;
line-height: 24px;
letter-spacing: -0.24px;
text-decoration-line: none;
text-align: center;
transition-duration: 0.3s;
transition-timing-function: cubic-bezier(0.4, 1.2, 0.2, 1);
transition-property: padding, margin, width, height;
}
.c-button-secondary-2:hover {
padding: 14px 22px;
margin: -2px;
background-color: #05378227;
box-shadow: none;
}
.c-button-secondary-2:focus {
outline: 2px solid #0066F5;
outline-offset: 2px;
}
States
- hover (
button-secondary-2-hover): padding 14px 22px, margin -2px, background-color #05378227, box-shadow none - focus: outline 2px solid #0066F5, outline-offset 2px
Toggle
Verification: verified against the live page at desktop.
Anatomy
toggle: the component root, a<nav>(.c-toggle)toggle-list: inner flex row (.c-toggle__list)toggle-link-active: link (.c-toggle__link-active)toggle-text: label text, 6 characters (.c-toggle__text)toggle-link: link (.c-toggle__link)toggle-text-2: label text, 12 characters (.c-toggle__text-2)
Recipe
HTML · CSS
<div class="c-toggle-scope">
<nav class="c-toggle">
<ul class="c-toggle__list">
<a class="c-toggle__link-active" href="#">
<span class="c-toggle__text">lorem</span>
</a>
<a class="c-toggle__link" href="#">
<span class="c-toggle__text-2">lorem ipsum</span>
</a>
</ul>
</nav>
</div>
.c-toggle-scope {
background-color: #60CDFF;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-toggle {
display: flex;
gap: 8px;
border-spacing: 0px;
box-sizing: border-box;
width: fit-content;
padding: 2px;
background-color: #FFFFFF3D;
color: #000000;
border-radius: 96px;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-toggle__list {
display: flex;
gap: 2px;
box-sizing: border-box;
width: fit-content;
padding: 0px;
margin: 0px;
list-style-type: none;
}
.c-toggle__link-active {
display: flex;
align-self: center;
box-sizing: border-box;
padding: 10px 16px;
position: relative;
z-index: 0;
color: #000000;
cursor: pointer;
line-height: 22.4px;
text-decoration-line: none;
text-align: center;
white-space: nowrap;
}
.c-toggle__link-active::before {
content: "";
display: block;
box-sizing: border-box;
width: 66px;
height: 36px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #FFFFFF;
border-radius: 88px;
transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.c-toggle__text {
display: block;
box-sizing: border-box;
max-width: 623.7px;
font-size: 12px;
font-weight: 700;
line-height: 16px;
letter-spacing: -0.18px;
}
.c-toggle__link {
display: flex;
align-self: center;
box-sizing: border-box;
padding: 10px 16px;
position: relative;
z-index: 0;
color: #000000;
cursor: pointer;
line-height: 22.4px;
text-decoration-line: none;
text-align: center;
white-space: nowrap;
}
.c-toggle__link::before {
content: "";
display: block;
box-sizing: border-box;
width: 97px;
height: 28px;
position: absolute;
top: 4px;
right: 4px;
bottom: 4px;
left: 4px;
z-index: -1;
border-radius: 88px;
transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.c-toggle__text-2 {
display: block;
box-sizing: border-box;
max-width: 623.7px;
color: #000000A1;
font-size: 12px;
font-weight: 700;
line-height: 16px;
letter-spacing: -0.18px;
}
States
- No hover or focus change was observed.
Tabs
Verification: verified against the live page at desktop.
Anatomy
tab: the component root, a<nav>(.c-tab)tab-list: inner flex row (.c-tab__list)tab-link: link (.c-tab__link)tab-text: label text, 6 characters (.c-tab__text)tab-link-active: link (.c-tab__link-active)tab-text-2: label text, 12 characters (.c-tab__text-2)
Recipe
HTML · CSS
<div class="c-tab-scope">
<nav class="c-tab">
<ul class="c-tab__list">
<a class="c-tab__link" href="#">
<span class="c-tab__text">lorem</span>
</a>
<a class="c-tab__link-active" href="#">
<span class="c-tab__text-2">lorem ipsum</span>
</a>
</ul>
</nav>
</div>
.c-tab-scope {
background-color: #FFFFFF;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-tab {
display: inline-flex;
gap: 8px;
border-spacing: 0px;
box-sizing: border-box;
width: fit-content;
padding: 2px;
background-color: #05378214;
color: #000000;
border-radius: 96px;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
}
.c-tab__list {
display: flex;
gap: 2px;
box-sizing: border-box;
width: fit-content;
padding: 0px;
margin: 0px;
list-style-type: none;
}
.c-tab__link {
display: flex;
align-self: center;
box-sizing: border-box;
padding: 10px 16px;
position: relative;
z-index: 0;
color: #000000;
cursor: pointer;
line-height: 22.4px;
text-decoration-line: none;
text-align: center;
white-space: nowrap;
}
.c-tab__link::before {
content: "";
display: block;
box-sizing: border-box;
width: 58px;
height: 28px;
position: absolute;
top: 4px;
right: 4px;
bottom: 4px;
left: 4px;
z-index: -1;
border-radius: 88px;
transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.c-tab__text {
display: block;
box-sizing: border-box;
max-width: 623.7px;
color: #000000A1;
font-size: 12px;
font-weight: 700;
line-height: 16px;
letter-spacing: -0.18px;
}
.c-tab__link-active {
display: flex;
align-self: center;
box-sizing: border-box;
padding: 10px 16px;
position: relative;
z-index: 0;
color: #000000;
cursor: pointer;
line-height: 22.4px;
text-decoration-line: none;
text-align: center;
white-space: nowrap;
}
.c-tab__link-active::before {
content: "";
display: block;
box-sizing: border-box;
width: 105px;
height: 36px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #FFFFFF;
border-radius: 88px;
transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.c-tab__text-2 {
display: block;
box-sizing: border-box;
max-width: 623.7px;
font-size: 12px;
font-weight: 700;
line-height: 16px;
letter-spacing: -0.18px;
}
States
- No hover or focus change was observed.
Video control
Verification: flagged, the render matched 88% of the original pixels, below the 96% required after 2 correction attempts.
Anatomy
video-control: the component root, a<button>(.c-video-control)video-control-group: inner flex row (.c-video-control__group)video-control-group-2: inner group (.c-video-control__group-2)video-control-icon: icon placeholder, 24px (.c-video-control__icon)
Recipe
HTML · CSS
<div class="c-video-control-scope">
<button class="c-video-control" type="button">
<span class="c-video-control__group">
<span class="c-video-control__group-2">
<span class="c-video-control__icon" aria-hidden="true"></span>
</span>
</span>
</button>
</div>
.c-video-control-scope {
background-color: #FFFFFF;
color: #000000;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 8px;
}
.c-video-control {
display: block;
border-spacing: 0px;
box-sizing: border-box;
width: 40px;
height: 40px;
padding: 0px;
position: absolute;
right: 100%;
bottom: 100%;
background-color: transparent;
color: #000000;
border: 0;
cursor: pointer;
font-family: "PayPal Pro Text VF", Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 18.4px;
letter-spacing: normal;
text-transform: none;
text-align: center;
appearance: button;
transition: opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.c-video-control__group {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
width: 40px;
height: 40px;
border: 2px solid #FFFFFF;
border-radius: 50%;
}
.c-video-control__group-2 {
display: block;
box-sizing: border-box;
width: 24px;
height: 24px;
aspect-ratio: 1 / 1;
}
.c-video-control__icon {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 24px;
height: 24px;
overflow-x: hidden;
overflow-y: hidden;
background-color: currentcolor;
}
.c-video-control:focus {
outline: none;
}
States
- focus: outline none
Do's and Don'ts
Do
- Do set every headline in PayPal Pro at weight 900 using the ladder tokens (
hero-displaythroughtitle-lg), with their negative tracking intact. - Do limit weights to 400, 700 and 900. PayPalOpen-Medium 500 stays confined to the
button-primary/button-secondarylabels. - Do build buttons as pills at the 48px control height shared by
button-primary,button-secondaryandbutton-ghost. Use 1000px radius (equivalent torounded.full) withbutton-primary-padding-x30px andbutton-primary-padding-y10px. - Do reuse the translucent white fill:
button-primaryandbutton-secondaryshare #FFFFFFB3 with ahairline2px outline and #F0F2F9 on hover. The fill is a shared outline-pill style, not a primary-only signal. - Do use the black pill (
button-primary-2, #000000 fill, white label, #333333 hover) for the strongest CTA, knowing its hover state is flagged: render matched 83% of original pixels. - Do separate sections with full-bleed surface changes between
canvas,surface-warmandprimary, puttingon-primarytext andaccent-on-darkhighlights on navy. - Do reserve shadows for floating layers, using the observed tiers
rgba(0, 0, 0, 0.14) 4px 4px 28px 6pxor the five-layer ambient stack. - Do keep the focus treatment visible: #FFFFFF 2px halo plus 2px
focus-ringoutline, offset 2px.
Don't
- Don't use
primary(#002991) as a button fill or small text color. It is a field color. - Don't introduce weight 500 or 600 in PayPal Pro Text VF, or any weight below 900 in PayPal Pro display.
- Don't set display type with normal or positive letter-spacing. Tracking scales at about −3% of size.
- Don't style links with
link-default(#0000EE). Uselink(#0066F5). - Don't add heavy, dark or offset shadows beyond the measured tiers, and don't add backdrop blur; none was measured.
- Don't use square corners on cards. Use
rounded.lg(24px) as the default container radius and keep squares only for full-bleed photo tiles. - Don't grey out body copy with
muted. Paragraphs stay inink;mutedis for ghost actions and supporting UI. - Don't add mid-sized semibold subheads between
title-lgand body. The hierarchy depends on the jump.
Responsive Behavior
Scope
This analysis is two-viewport only: one desktop and one mobile capture. No breakpoint values were observed, so none are given.
What changes on mobile
- Navigation: the horizontal desktop header (logo and dropdowns left; Hilfe, Einloggen and Neu anmelden right) collapses to a hamburger menu next to two pill buttons.
- Headlines: display headlines keep their heavy, tight styling but wrap to about three lines. The type scale steps down rather than the layout changing.
- Cards and media: these go full-width with small side margins, keeping their rounded corners.
- Sticky bar: a black, sticky "App downloaden" bar appears at the bottom of the mobile viewport.
- Cookie banner: on desktop it is fixed over the lower viewport.
- Hero stacks: these are already single-column on desktop, so on mobile they simply narrow. The headline → subcopy → CTA pair → media order is preserved.
Touch targets
- All verified buttons (
button-primary,button-secondary,button-ghost) are 48px tall, which meets comfortable touch sizing. - The segmented
toggleandtabcontrols are 40px tall. Keep them at least that size on mobile and don't compress the 2px inner track padding further.
Iteration Guide
- Reference tokens, never raw hex. Use
ink,canvas,surface-warm,primary,accent-on-dark,link,hairlineandfocus-ring. Translucent button fills such as #FFFFFFB3 and #05378214 belong to their component recipes (button-primary,tab,button-secondary-2); don't promote them into the page palette. - Headlines must come from the eight typography tokens. If a new size seems needed, pick the nearest token rather than interpolating. All display text is PayPal Pro 900 with proportional negative tracking.
- Buttons are 48px pills. Edit variants inside the existing keys (
button-primary,button-secondary,button-ghost,button-primary-2,button-secondary-2) rather than creating new shapes. Padding comes from thebutton-*-padding-xandbutton-*-padding-ytokens. - Treat flagged recipes as approximations.
button-primary-2(flagged: render matched 83% on hover),button-secondary-2(flagged: render matched 88% on hover) andvideo-control(flagged: render matched 88%) need visual checking before reuse. - Elevation is a closed set. Use only the measured shadow tiers listed in the elevation section, on floating layers only. Never add backdrop blur or new shadow recipes.
- Brand blue is a field, not a decoration.
primaryappears as full-bleed bands withon-primarytext;accent-on-darklives on those bands or as the bright hero field. Never putprimaryon buttons or body text. - Never remove or restyle the focus treatment. It is a #FFFFFF 2px halo plus a 2px
focus-ring(orlinkon link-CTAs) outline, offset 2px.
Known Gaps
- Body text tokens were dropped.
body,body-lg,body-strong,title-sm,button,button-lg,nav-link,captionandcaption-strongwere named for "PayPal Pro Text", but the site serves "PayPal Pro Text VF". Body sizes appear only as measured evidence in the typography section, not as published tokens. - No layout measurements beyond button padding. No container max width, grid gap, base spacing unit or section padding was verified. Section rhythm sampling returned nothing.
- No header or footer landmarks were captured. Header height, sticky behavior, link counts and footer column structure are undocumented.
- Several hover states did not reproduce.
button-primary-2,button-secondary-2andvideo-controlare flagged at 83–88% pixel match, so their exact hover visuals are unconfirmed. - The ghost button radius is unmeasured.
button-ghostcarries no rounded value in its recipe; its circular or pill shape is inferred from screenshots. - Pages not reached. Only five public marketing pages were captured. Logged-in wallet, checkout flows, forms, inputs, error states and the mobile hamburger menu's open state were not reached.
- Motion is undocumented. Video autoplay behavior and animations (including the
video-controlplay/pause) could not be captured. - Interactive blues are only partly mapped.
primary-brightandlinkboth appear as text; which elements use which beyond links was not resolved. - Desktop-only recipes, two viewports. All recipes were measured on desktop, and responsive behavior is inferred from two viewports with no breakpoint values.
- Shadow use is partly inferred. The white spread shadows (
rgb(255, 255, 255) 0px ±28.5714px 0px 28.5714px) are interpreted as corner masks, and which floating layer uses which tier is inferred from screenshots.
这份 DESIGN.md 文件使用英文,因为 AI 编程智能体以英文读取它。
提取自 PayPal 的公开网站,并非官方品牌规范。查看其他网站的字体
相似示例
浏览全部
Stripe
Stripe 的营销首页采用一套严谨统一的设计系统(HDS,Stripe Design System),以可变字体 "sohne-var" 的细体至常规字重(300–400)为核心,配合从深海军蓝过渡到靛紫色的品牌色板,并以 #533afd(Stripe Indigo)为主色调;首屏采用标志性的满幅光谱渐变背景。组件圆角较小(4–6px),阴影平缓或极简,整体布局基于 8px 的基础间距网格。整体语调既权威又亲和:通过自信的字体排版和克制的色彩运用,传达金融基础设施的专业感。

Klarna
Klarna的设计系统以深邃的午夜藏青色作为主色(#0b051d),搭配明亮的点缀色,其中包括标志性的粉色(#ffa8cd)。系统同时使用Klarna自定义字体与系统字体,突出圆角设计,其中32px的圆角最为常见,并保持高对比度以满足无障碍需求。整体设计在专业感与亲和力之间取得平衡,通过宽裕的留白和清晰的字体层级来实现这一效果。

Airbnb
Airbnb 的设计系统以一款专有的可变字体(Airbnb Cereal VF)为核心,配色接近单色的中性色调,以深炭色(#222222)和浅灰色为基调。品牌标志性的珊瑚粉色"Rausch"(#ff385c)仅用于主要行动按钮和标志。布局采用响应式图片卡片网格,图片与文字的比例宽松,卡片带有 20px 的柔和圆角,并通过多层环境阴影营造细微的层次感,避免强烈的明暗对比。搜索栏是一个醒目的胶囊形容器,统一了用户的核心操作。
IKEA
IKEA的全球首页采用大胆、扁平的设计系统,以标志性的IKEA黄色(#ffdb00)作为主要操作区域,并以IKEA蓝色(#0058a3)作为品牌标识的点缀色。整个字体体系基于一款定制字体Noto IKEA构建,使用400和700两种字重,字号等级划分严谨,从14px的正文到51px的展示标题。层级主要通过色彩对比和版面结构来体现,而非依靠阴影。版面采用最大宽度为90rem的容器,桌面端网格间距为1.5rem,交互元素统一应用8px的圆角。米白色背景(#fffefb)与纯粹的#111111文字形成温和对比,营造出高对比度、易于阅读的无障碍浏览体验。

Notion
Notion 营销首页以深海军蓝(#02093a)的首屏区块搭配浅色(#f6f5f4)的主体背景,所有文字层级统一使用定制字体 NotionInter。设计采用 12 栏网格,栏间距为 28px,圆角体系兼顾两种规格:卡片使用 8px,药丸形按钮使用 9999px。浮层元素则采用多层递进式阴影系统。品牌蓝(#2537b1)用于行动按钮与重点强调,从 gray-200 到 gray-900 的语义化灰阶则负责所有文字与背景面的层级划分。

Railway
Railway 的设计系统是一套以深色为主的开发者平台界面,底色是近乎黑色的深海军蓝(#13111c、#0b0b0f),文字采用高对比度的米白色(#f7f7f8),品牌强调色为独特的紫色(#853bce / #553f83)。首屏使用 IBM Plex Serif 呈现编辑式的厚重感,界面文案统一使用 Inter,代码场景则使用 JetBrains Mono 与 SF Mono。层级关系主要依靠内嵌的白色发光描边(rgba(255,255,255,0.2) 1.5px inset)来实现,而非投影,使界面呈现玻璃面板般的质感。间距系统以 4px 为基础,节奏紧凑而明确,常用 8/12/16/24/32。圆角普遍较小,以 4px 为主,卡片与首屏容器则有选择地使用 8px 和 16px。