Narzędzia
Tokeny designu z dowolnej strony jako zmienne CSS
Wpisz adres strony i pobierz jej tokeny designu jako custom properties CSS: kolory, style tekstu, odstępy, zaokrąglenia, cienie i szerokość treści, zmierzone na stronie tak, jak się renderuje.
Wypróbujstripe.comlinear.appairbnb.com
airbnb.com
Zmierzono 4 dni temu.
/* Design tokens extracted from https://www.airbnb.com/ (2026-10-27) */
:root {
--color-background: #ffffff; /* Page background */
--color-surface: #dddddd; /* Cards, panels, raised or recessed surfaces */
--color-surface-2: #f2f2f2; /* Secondary surface */
--color-foreground: #222222; /* Primary text */
--color-muted-foreground: #6c6c6c; /* Secondary text, captions */
--color-primary: #da1249; /* Candidate accent (semantic role inferred) */
--color-on-primary: #ffffff; /* Text on the accent */
--color-border: #ffffff; /* Hairlines, dividers, input borders */
--font-sans: "Airbnb Cereal VF", "Inter", sans-serif;
--font-display: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
/* observed; source h1 */
--text-headline-display: 700 28px/40.04px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-family-headline-display: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-weight-headline-display: 700;
--font-size-headline-display: 28px;
--line-height-headline-display: 40.04px;
--tracking-headline-display: normal;
/* observed; source h2 */
--text-headline-lg: 600 20px/24px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-family-headline-lg: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-weight-headline-lg: 600;
--font-size-headline-lg: 20px;
--line-height-headline-lg: 24px;
--tracking-headline-lg: -0.18px;
/* fallback; source h3; inferred: fontSize, fontFamily, fontWeight, lineHeight */
--text-headline-md: 600 24px/1.4 "Airbnb Cereal VF", "Inter", sans-serif;
--font-family-headline-md: "Airbnb Cereal VF", "Inter", sans-serif;
--font-weight-headline-md: 600;
--font-size-headline-md: 24px;
--line-height-headline-md: 1.4;
--tracking-headline-md: normal;
/* fallback; source body; inferred: fontSize, fontFamily, fontWeight, lineHeight */
--text-body-md: 400 14px/1.4 "Airbnb Cereal VF", "Inter", sans-serif;
--font-family-body-md: "Airbnb Cereal VF", "Inter", sans-serif;
--font-weight-body-md: 400;
--font-size-body-md: 14px;
--line-height-body-md: 1.4;
--tracking-body-md: normal;
/* observed; source label */
--text-label-md: 400 12px/1.33 "Airbnb Cereal VF", "Inter", sans-serif;
--font-family-label-md: "Airbnb Cereal VF", "Inter", sans-serif;
--font-weight-label-md: 400;
--font-size-label-md: 12px;
--line-height-label-md: 1.33;
--tracking-label-md: normal;
/* observed; source button */
--text-button: 400 14px/18px "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-family-button: "Airbnb Cereal VF", Circular, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
--font-weight-button: 400;
--font-size-button: 14px;
--line-height-button: 18px;
--tracking-button: normal;
--space-unit: 4px;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 44px;
--space-7: 48px;
--radius-none: 0px;
--radius-2xl: 100px;
--radius-xl: 20px;
--radius-md: 8px;
--radius-lg: 14px;
--radius-full: 9999px;
--radius-button: 100px;
--radius-input: 0px;
--radius-card: 0px;
--shadow-1: color(srgb 0 0 0 / 0.02) 0px 0px 0px 1px, color(srgb 0 0 0 / 0.04) 0px 2px 6px 0px, color(srgb 0 0 0 / 0.1) 0px 4px 8px 0px;
--shadow-2: rgba(0, 0, 0, 0.5) 0px -6px 15px 0px, rgba(0, 0, 0, 0.08) 0px 4px 4px 0px, rgba(0, 0, 0, 0.18) 0px 12px 15px 0px;
--shadow-3: rgba(218, 218, 218, 0.6) 0px 0.5px 1px 0px, rgba(0, 0, 0, 0.12) 0px -0.502px 1.004px 0px, rgba(0, 0, 0, 0.04) 0px -1.5px 3.5px 0px, rgba(0, 0, 0, 0.05) 0px 3px 5px 0px, rgba(0, 0, 0, 0.2) 0px 0.75px 1px 0px inset, rgba(34, 34, 34, 0.6) 0px -0.5px 5px 1px inset, rgba(0, 0, 0, 0.16) 0.502px 0.5px 2px 0px inset, rgba(0, 0, 0, 0.12) 0px -3px 7px 0px inset, rgba(0, 0, 0, 0.05) 0.502px 2px 4px 0px inset, rgba(0, 0, 0, 0.04) 1.004px 4px 4px 0px inset, rgba(184, 72, 155, 0.2) 0px -3px 7px 0px inset;
--shadow-4: rgba(0, 0, 0, 0.16) 0px 2px 2px 0px, rgba(255, 255, 255, 0.04) 1px 1.5px 3px 0px inset, rgba(255, 255, 255, 0.04) -1px 1.25px 3px 0px inset, rgba(255, 56, 92, 0.3) 0px -1px 3px 0px inset, rgba(0, 0, 0, 0.16) 0px -1px 2px 0px inset;
}
/* Load fonts.css first. Apply a complete role class, including non-shorthand font settings. */
.sp-type-headline-display {
font: var(--text-headline-display);
letter-spacing: var(--tracking-headline-display);
font-style: normal;
font-stretch: 100%;
font-variation-settings: normal;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}
.sp-type-headline-lg {
font: var(--text-headline-lg);
letter-spacing: var(--tracking-headline-lg);
font-style: normal;
font-stretch: 100%;
font-variation-settings: "DRKM" 0;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}
.sp-type-headline-md {
font: var(--text-headline-md);
letter-spacing: var(--tracking-headline-md);
font-style: normal;
font-stretch: normal;
font-variation-settings: normal;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}
.sp-type-body-md {
font: var(--text-body-md);
letter-spacing: var(--tracking-body-md);
font-style: normal;
font-stretch: normal;
font-variation-settings: normal;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}
.sp-type-label-md {
font: var(--text-label-md);
letter-spacing: var(--tracking-label-md);
font-style: normal;
font-stretch: normal;
font-variation-settings: normal;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}
.sp-type-button {
font: var(--text-button);
letter-spacing: var(--tracking-button);
font-style: normal;
font-stretch: 100%;
font-variation-settings: normal;
font-feature-settings: normal;
font-optical-sizing: auto;
font-synthesis: none;
}Jak to działa
Stylepack otwiera stronę w prawdziwej przeglądarce, mierzy to, co się renderuje (a nie to, co mówi arkusz stylów) w czterech szerokościach i w obu motywach, a wynik zapisuje jako pakiet designu. Strona już zmierzona odpowiada od razu; nowa zajmuje mniej niż minutę. Każda wartość na tej stronie pochodzi z tego pakietu.
Pytania
Czym jest token designu?
Nazwana wartość designu (kolor, rozmiar czcionki, krok odstępu) używana w całym produkcie. Jako zmienne CSS tokeny pozwalają przestylować całą stronę, zmieniając jedną deklarację.
Skąd biorą się nazwy?
Z roli, jaką każda wartość pełni na zmierzonej stronie: --color-primary to akcent, --text-headline-lg styl nagłówka, --space-4 krok odstępu. tokens.json w pakiecie zawiera te same nazwy w formacie W3C.
Czy to cały design system?
To wartości. Pakiet designu dodaje zachowanie (hover, focus, menu, animacje, responsywność, tryb ciemny), przepisy na komponenty i zrzuty ekranu, w formie, z której budują agenty AI do kodowania.