ghost · desktop
Label y là 16px, trang web có 14px; Label height là 17px, trang web có 21px.
Bình thườngKhớp 100%2 trên 27 số đo khác nhau
FocusKhớp 100%22 số đo khớp
Độ tin cậy của lượt trích xuất
Các token thiết kế được trích xuất từ phân tích tần suất CSSOM, không qua diễn giải bằng LLM.
ghost · desktop
Label y là 16px, trang web có 14px; Label height là 17px, trang web có 21px.
Bình thườngKhớp 100%2 trên 27 số đo khác nhau
FocusKhớp 100%22 số đo khớp
ghost · desktop
Bình thườngKhớp 100%40 số đo khớp
FocusKhớp 100%18 số đo khớp
ghost · desktop
Bình thườngKhớp 100%28 số đo khớp
FocusKhớp 100%22 số đo khớp
secondary · desktop
Bản render giống trang web ở mức 98%, dưới ngưỡng 97%.
Bình thườngKhớp 98%22 số đo khớp
FocusKhớp 98%19 số đo khớp
desktop
Group 2 y là 259px, trang web có 273px; Group 2 height là 92px, trang web có 68px và thêm 4 khác.
Bình thườngKhớp 100%6 trên 153 số đo khác nhau
HoverKhớp 100%18 số đo khớp
FocusKhớp 100%18 số đo khớp
Bình thường, lần xuất hiện 2Khớp 100%6 trên 153 số đo khác nhau
Bình thường, lần xuất hiện 3Khớp 100%6 trên 153 số đo khác nhau
Bình thường, lần xuất hiện 4Khớp 100%6 trên 153 số đo khác nhau
desktop
Group y là 139px, trang web có 0px; Link y là 139px, trang web có 0px và thêm 1 khác.
Bình thườngKhớp 100%3 trên 97 số đo khác nhau
HoverKhớp 100%18 số đo khớp
FocusKhớp 100%2 trên 18 số đo khác nhau
Bình thường, lần xuất hiện 2Khớp 100%3 trên 97 số đo khác nhau
Bình thường, lần xuất hiện 3Khớp 100%3 trên 97 số đo khác nhau
Bình thường, lần xuất hiện 4Khớp 100%3 trên 97 số đo khác nhau
Bình thường, lần xuất hiện 5Khớp 100%3 trên 97 số đo khác nhau
desktop
Bình thườngKhớp 100%104 số đo khớp
FocusKhớp 100%22 số đo khớp
Bình thường, lần xuất hiện 2Khớp 100%104 số đo khớp
Bình thường, lần xuất hiện 3Khớp 100%104 số đo khớp
Bình thường, lần xuất hiện 4Khớp 100%104 số đo khớp
Bình thường, lần xuất hiện 5Khớp 100%104 số đo khớp
Bình thường, lần xuất hiện 6Khớp 100%104 số đo khớp
desktop
Không thể xác minh: ảnh, nội dung đa phương tiện hoặc quảng cáo mà trang đặt vào phủ gần hết phần tử và không có gì khác biệt, nên phép so sánh không nói lên điều gì về công thức.
Bình thườngKhớp 99%121 số đo khớp
HoverKhớp 100%18 số đo khớp
FocusKhớp 99%18 số đo khớp
Bình thường, lần xuất hiện 2Khớp 100%121 số đo khớp
Bình thường, lần xuất hiện 3Khớp 99%121 số đo khớp
Bình thường, lần xuất hiện 4Khớp 100%121 số đo khớp
desktop
Group 2 height là 80px, trang web có 105px; Text 3 height là 50px, trang web có 75px.
Bình thườngKhớp 100%2 trên 164 số đo khác nhau
Bình thường, lần xuất hiện 2Khớp 100%2 trên 164 số đo khác nhau
Bình thường, lần xuất hiện 3Khớp 100%2 trên 164 số đo khác nhau
desktop
Bình thườngKhớp 100%94 số đo khớp
desktop
Icon x là -9px, trang web có 16px.
Bình thườngKhớp 100%1 trên 102 số đo khác nhau
FocusKhớp 100%22 số đo khớp
desktop
Bình thườngKhớp 100%182 số đo khớp
desktop
Không tạo được công thức: không tìm thấy phần tử trên trang.
Không có gì được so sánh cho component này.
desktop
Bình thườngKhớp 100%40 số đo khớp
FocusKhớp 100%18 số đo khớp
desktop
Group width là 1016px, trang web có 1002px; List width là 1016px, trang web có 1002px.
Bình thườngKhớp 100%2 trên 496 số đo khác nhau
desktop
Bản render giống trang web ở mức 100%, dưới ngưỡng 96%.
Bình thườngKhớp 100%24 số đo khớp
HoverKhớp 100%18 số đo khớp
FocusKhớp 100%18 số đo khớp
Bình thường, lần xuất hiện 2Khớp 100%24 số đo khớp
Bình thường, lần xuất hiện 3Khớp 100%24 số đo khớp
Bình thường, lần xuất hiện 4Khớp 100%24 số đo khớp
desktop
Bình thườngKhớp 99%156 số đo khớp
Focuschưa kiểm tra
Focus trên link 2Khớp 99%18 số đo khớp
Focus trên linkKhớp 99%18 số đo khớp
Focus trên logoKhớp 99%18 số đo khớp
desktop
Gốc height là 128px, trang web có 70px; Inner y là 18px, trang web có 0px và thêm 12 khác.
Bình thườngKhớp 89%14 trên 216 số đo khác nhau
Focuschưa kiểm tra
Focus trên cta 2Khớp 89%19 số đo khớp
Focus trên cta 3Khớp 89%19 số đo khớp
Focus trên ctaKhớp 89%18 số đo khớp
Focus trên logoKhớp 89%18 số đo khớp
desktop
Bình thườngKhớp 100%114 số đo khớp
Focuschưa kiểm tra
Focus trên buttonKhớp 100%18 số đo khớp
Focus trên logoKhớp 100%18 số đo khớp
desktop
Bản render giống trang web ở mức 86%, dưới ngưỡng 96%.
Bình thườngKhớp 86%119 số đo khớp
Focuschưa kiểm tra
Focus trên logoKhớp 86%18 số đo khớp
desktop
Text y là 25px, trang web có 23px; Text height là 17px, trang web có 21px.
Bình thườngKhớp 95%2 trên 99 số đo khác nhau
Hoverchưa kiểm tra
Focuschưa kiểm tra
Focus trên ctaKhớp 95%18 số đo khớp
Hover trên ctaKhớp 94%18 số đo khớp
Focus trên logoKhớp 95%18 số đo khớp
mobile
Gốc height là 128px, trang web có 70px; Inner y là 18px, trang web có 0px và thêm 9 khác.
Bình thườngKhớp 93%11 trên 145 số đo khác nhau
Focuschưa kiểm tra
Focus trên logoKhớp 93%18 số đo khớp
mobile
Bình thườngKhớp 100%57 số đo khớp
Focuschưa kiểm tra
Focus trên logoKhớp 100%18 số đo khớp
mobile
Bản render giống trang web ở mức 95%, dưới ngưỡng 96%.
Bình thườngKhớp 95%101 số đo khớp
Focuschưa kiểm tra
Focus trên logoKhớp 95%18 số đo khớp
mobile
Bình thườngKhớp 100%113 số đo khớp
Focuschưa kiểm tra
Focus trên logoKhớp 100%18 số đo khớp
Focus trên menu toggleKhớp 100%18 số đo khớp
mobile
Bình thườngKhớp 100%57 số đo khớp
Focuschưa kiểm tra
Focus trên logoKhớp 100%18 số đo khớp
desktop
Bình thườngKhớp 100%223 số đo khớp
Hoverchưa kiểm tra
Focuschưa kiểm tra
Focus trên nav linkKhớp 100%18 số đo khớp
Hover trên nav linkKhớp 100%18 số đo khớp
desktop
Gốc height là 118px, trang web có 79px; Nav height là 78px, trang web có 39px và thêm 1 khác.
Bình thườngKhớp 100%3 trên 201 số đo khác nhau
Hoverchưa kiểm tra
Focuschưa kiểm tra
Focus trên nav linkKhớp 100%18 số đo khớp
Hover trên nav linkKhớp 100%18 số đo khớp
desktop
Gốc height là 78px, trang web có 39px; Link y là 51px, trang web có 12px.
Bình thườngKhớp 100%2 trên 182 số đo khác nhau
Focuschưa kiểm tra
Focus trên linkKhớp 100%18 số đo khớp
desktop
Group height là 431px, trang web có 381px; Group height là 431px, trang web có 285px và thêm 29 khác.
Bình thườngKhớp 99%31 trên 2279 số đo khác nhau
Focuschưa kiểm tra
Focus trên link 2Khớp 99%18 số đo khớp
Focus trên linkKhớp 99%18 số đo khớp
mobile
Bình thườngKhớp 100%201 số đo khớp
Hoverchưa kiểm tra
Focuschưa kiểm tra
Focus trên nav linkKhớp 100%18 số đo khớp
Hover trên nav linkKhớp 100%18 số đo khớp
mobile
Bình thườngKhớp 100%182 số đo khớp
Focuschưa kiểm tra
Focus trên linkKhớp 100%18 số đo khớp
mobile
Gốc height là 155px, trang web có 116px; Inner height là 117px, trang web có 78px và thêm 4 khác.
Bình thườngKhớp 100%6 trên 223 số đo khác nhau
Hoverchưa kiểm tra
Focuschưa kiểm tra
Focus trên nav linkKhớp 100%18 số đo khớp
Hover trên nav linkKhớp 100%18 số đo khớp
mobile
Inner height là 274px, trang web có 378px; List 2 height là 148px, trang web có 252px và thêm 7 khác.
Bình thườngKhớp 100%9 trên 2279 số đo khác nhau
Focuschưa kiểm tra
Focus trên link 2Khớp 100%18 số đo khớp
Focus trên linkKhớp 100%18 số đo khớp
desktop
Bản render giống trang web ở mức 94%, dưới ngưỡng 97%.
Bình thườngKhớp 94%22 số đo khớp
FocusKhớp 94%18 số đo khớp
Duolingo
Duolingo's marketing site reads as a children's picture book built by a disciplined product team. A pure white canvas carries warm charcoal type. The signature Feather Green (primary, #58CC02) shows up as the brand voice: hero headlines, step numbers, the solid CTA fill and the full-bleed footer. Sky Blue (secondary, #1CB0F6) is the second voice, used for links, ghost buttons and the solid course-page header bar. Flat-vector mascots and isometric illustrations carry most of the emotion, so the UI chrome stays simple and lets them play.
Density is low. Sections breathe on a section-padding-y rhythm, and feature rows pair one short green headline with a few lines of gray body copy and a large illustration. Hierarchy comes from typeface switching rather than size alone. The heavy, rounded Feather display face is reserved for hero and section headlines with tight negative tracking. Everything else is Duolingo Sans at only two weights (500 and 700). Interactive labels are 700 with wide 0.8px tracking, which makes them feel stamped and chunky.
The tactile, toy-like quality comes from borders, not shadows. Cards and buttons carry a thicker bottom border than their other edges, for example card-3 at 2px sides and a 4px bottom in Cloud Gray (hairline, #E5E5E5). The result is a pressable 'lip' rather than a floating lift. Corners are generously rounded (rounded.lg 16px dominates), and nothing on the page is sharp.
Key Characteristics:
surface canvas; green (primary) is the brand anchor and floods the footer (footer-landing background #58CC02).ink #3C3C3C for base copy and ink-strong #4B4B4B for titles. Gray muted #777777 is used for supporting copy.The palette is a small set of saturated, cheerful brand hues on white, with a disciplined ladder of warm grays for text and borders. No gradients are used anywhere; every fill is a flat solid.
primary, #58CC02): the brand voice. It colors hero and section headlines (card-title), step numbers (step-list-item-text), the solid green header variant (header-inner-4 background) and the full footer field (footer-landing, footer-landing-mobile background). Use it for the primary CTA fill and celebratory headings, never for body copy.secondary, #1CB0F6): the secondary accent. It is the ghost-button label (button-ghost), inline links in cards (card-link), the active course link (header-inner-link) and the solid course-page header bar (header-inner-2 background).tertiary, #00CD9C): a page-specific accent, measured on one page. It colors the label of button-ghost-3 and the CTA in card-4, and tints the page's only spread shadow.accent-orange, #FF9600): a rare highlight, seen once. Treat it as a spot color only.navy, #0B3E71): the label color of button-secondary when it sits on the sky-blue header. Reserve it for text on secondary fields.surface, #FFFFFF): the page background and the fill of card-3. It is also the 4px ring around card-3-media.on-primary, #FFFFFF): text on green or blue fields, such as header-landing-text, header-inner-2-cta-3 and footer-inner-3-link.ink, #3C3C3C): the inherited base text color on almost every component root (card, header-landing, footer-inner). It is the most-used color on the site.ink-strong, #4B4B4B): titles and emphasized labels, for example card-2-text, card-3-text, accordion-title, card-4-title and app-store-badge.muted, #777777): supporting body copy and descriptions, for example card-body, card-3-text-2, card-4-body and step-list-item-text-2.muted-light, #AFAFAF): tertiary UI text such as utility nav (footer-navigation-link, header-inner-link-2), the language selector (language-selector-2) and eyebrow labels (card-4-text).ink-black, #101010): input text only (input).black, #000000): the mobile menu toggle icon (header-inner-mobile-menu-toggle).link, #0000EE): the browser-default anchor color. It was measured on logo links and on the card-3 root, where it is never actually visible as text. Do not use it as a design color; links that show text use secondary.hairline, #E5E5E5): every visible border on the site. Examples are the card-3 outline and lip, the card-5 2px outline and the footer-inner 2px top rule. It is also the input fill (input background) and the accordion divider fill (accordion-group-2).These two greens were measured only inside the footer recipes, never in the page sampling. They exist to sit on the green field.
primary-light, #A5ED6E): footer link text (footer-landing-link, footer-landing-link-2) and the 2px top rule above the legal row (footer-landing-group-2).primary-tint, #D7FFB8): footer column headings (footer-landing-text, footer-landing-text-2).duolingo-sans, sans-serif): the workhorse face, a rounded geometric sans. It sets body, titles, buttons, nav, cards and the footer, and accounts for nearly all measured text on all five pages.feather, sans-serif): the heavy, round-terminal display face. It appears only at hero and section-headline scale (hero-display, display-lg, display-md, and the 48px card-title in card). It always uses weight 700 with negative tracking.| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
hero-display | 80px | 700 | 1.1 | -2.4px | Home hero headline (Feather) |
display-lg | 64px | 700 | 1.5 | -1.28px | Secondary-page hero h1 (Feather) |
display-md | 62px | 700 | 1.1 | -1.86px | Section h2 headlines (Feather) |
headline-lg | 40px | 700 | 1.1 | normal | Sans h1/h2 on inner pages |
headline-md | 32px | 700 | 1.5 | normal | Inner-page h1 |
headline-sm | 28px | 700 | 1.15 | normal | Feature-block titles (card-4-title) |
title-lg | 25px | 700 | 1.35 | normal | Stat and step numerals (card-5-text, step-list-item-text) |
title-md | 24px | 700 | 1.65 | normal | Compact page h1 |
title-sm | 20px | 700 | 1.2 | normal | h3 and accordion titles (accordion-title) |
body-lg | 20px | 500 | 1.4 | normal | Lead paragraphs (card-4-body) |
body-lg-strong | 20px | 700 | 1.4 | normal | Emphasized lead text, card captions (card-2-text) |
body | 17px | 500 | 1.2 | normal | Default body and inherited root text |
button-lg | 16px | 700 | 1 | 0.64px | Large buttons and eyebrows (button-ghost-3, card-4-text) |
button | 15px | 700 | 1.15 | 0.8px | Standard button labels (button-ghost, language-selector-2) |
label-caps | 15px | 700 | 1.35 | 0.8px | Uppercase labels and tags |
nav-link | 15px | 700 | 1.5 | 0.8px | Header and utility nav links |
input (flagged: the render matched 94% of the original pixels, below the 97% required after 2 correction attempts), is a form-control default, not a pattern to copy.button-lg; header-inner-link measured 1px). Body and title text stays at normal tracking.card-group-2 and card-link at 24px on 17px; step-list-item-text-2 at 25px).body at 17px/500 is the inherited root on nearly every component. Keep that baseline when adding content.button and nav-link with uppercase transform.Duolingo Sans and Feather are both proprietary. For Duolingo Sans, use Nunito (open source, rounded terminals). Map 500 to Nunito 600 and 700 to Nunito 800 so the strokes match Duolingo's heavier color, and keep the 0.8px label tracking. For Feather, use Fredoka at 700, or Baloo 2 at 800. Tighten tracking a touch less than the tokens specify (Fredoka is already compact), and check that the hero still reads as one chunky lockup at 80px.
Three spacing measurements were verified:
section-padding-y: 96px. This is the vertical padding between the page's major sections, measured on the page itself rather than on a component. It is the macro rhythm: every new feature block or band starts and ends with this breathing room.button-ghost-3-padding-x: 11px. This is the horizontal padding of the root of button-ghost-3, the teal text button. It is a tight inset; the button's width comes from its label, not from wide padding.footer-inner-inner-max-width: 1048px. This is the max width of the inner footer container on footer-inner.Outside these three values, no internal component spacing was verified. Rebuild padding and gaps visually, and keep them generous.
footer-inner-inner-max-width (1048px). Use the same cap for page content so headers, features and footers align on one column edge.card-3) with consistent gutters. Each card carries a flag, a name and a learner count.Whitespace is the primary separator. Sections are divided by section-padding-y and a change of content rather than by rules or background bands. The exceptions are the solid green footer and the occasional hairline between testimonial rows. Each viewport-height block holds one idea: one headline, one or two short lines of gray copy, one illustration. When adding content, add a new section at the same rhythm rather than packing more into an existing one.
Every spacing token restates a measurement of a verified component recipe, or the step those measurements share. section-padding-y is measured directly on the page sections and feeds no step.
section-padding-y: 96px (vertical padding repeated on the page sections: 2 section edges on 1 page)footer-inner-inner-max-width: 1048px (footer-inner, max width of footer-inner-inner)button-ghost-3-padding-x: 11px (button-ghost-3, horizontal padding of the root)The card-3 grid lays out in 4 columns at desktop. The footer lays out in 2 columns at mobile.
| Level | Treatment | Use |
|---|---|---|
| Base | surface #FFFFFF, no border, no shadow | Page canvas, feature rows, headers on white (header-landing, header-inner) |
| Hairline | 2px solid hairline #E5E5E5 | card-5 outline (2px all sides); footer-inner top rule (2px top). On green, footer-landing-group-2 uses a 2px primary-light #A5ED6E top rule |
| Chunky lip | Thicker bottom border than the sides | card-3: 2px sides and top, 4px bottom, solid #E5E5E5. button-ghost and app-store-badge: 2px sides, 4px bottom, transparent. button-ghost-3 and card-4-cta: 1px sides, 5px bottom, transparent. button-secondary and header-landing-cta: 4px bottom, transparent |
| Tint wash | rgba(0, 205, 156, 0.1) 0px 0px 0px 1440px (spread-only shadow, no blur) | Measured once at page level: a 10% tertiary teal wash that tints the area around a highlighted element |
| Blur | None measured | No backdrop-filter anywhere; headers are static and opaque |
Shadow philosophy. Duolingo builds depth with borders, not with light. The defining move is the 'chunky lip': a bottom border 2–3px heavier than the other edges. It makes cards and buttons look like physical, pressable keys. On card-3 the lip is visible Cloud Gray. On buttons the measured border color is transparent, so the visible lip there comes from a fill the recipes did not capture; the screenshots show the green CTA with a darker green lower edge. The only box-shadow on the site is a spread-only teal tint (rgba(0, 205, 156, 0.1) 0px 0px 0px 1440px). It works as a color wash, not as a lift. Never add soft drop shadows or blur. If something needs to feel raised, give it the thicker bottom border.
| Token | Value | Use |
|---|---|---|
rounded.sm | 8px | Form fields (input) |
rounded.md | 12px | Standard buttons and badges: button-ghost, app-store-badge, header-landing-cta, and the image link in card-2-link |
rounded.lg | 16px | The dominant radius for cards and large buttons: card-3, card-3-media, card-5, button-secondary, button-ghost-3, header-inner-2-cta-3, header-inner-4-cta |
The geometry is soft and rounded throughout. rounded.lg is by far the most frequent value; it gives cards and course tiles their toy-like, rounded-square look. Even the flag thumbnails inside card-3 are rounded squares (card-3-media at 16px, framed by a 4px white border). Buttons split between 12px and 16px with no strong rule. Use rounded.lg for anything card-sized or primary, and rounded.md for compact buttons and badges.
There is no pill or full-circle radius token. The small round check-mark badges and illustration elements visible in the screenshots are artwork, not UI chrome. Do not invent a 999px pill for buttons; Duolingo buttons are rounded rectangles. Square corners appear nowhere in the interactive UI.
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.
Button, ghost
Verification: flagged, the button-ghost-label y did not reproduce the measured 14px after 2 correction attempts.
Anatomy
button-ghost: the component root, a <button> (.c-button-ghost)button-ghost-label: label text, 25 characters (.c-button-ghost__label)Recipe
<div class="c-button-ghost-scope">
<button class="c-button-ghost" type="button">
<span class="c-button-ghost__label">lorem ipsum dolor sit ame</span>
</button>
</div>
.c-button-ghost-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-button-ghost {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 50px;
padding: 0px 16px;
position: relative;
background-color: transparent;
color: #1CB0F6;
border-radius: 12px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: normal;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
border-top: 2px solid transparent;
border-right: 2px solid transparent;
border-bottom: 4px solid transparent;
border-left: 2px solid transparent;
}
.c-button-ghost::before {
content: "";
display: block;
box-sizing: border-box;
width: 330px;
height: 48px;
position: absolute;
top: -2px;
right: -2px;
bottom: -2px;
left: -2px;
z-index: -1;
background-color: #FFFFFF;
color: #E5E5E5;
border: 2px solid #E5E5E5;
border-radius: 12px;
box-shadow: #E5E5E5 0px 2px 0px 0px;
}
.c-button-ghost__label {
display: block;
box-sizing: border-box;
overflow-x: hidden;
overflow-y: hidden;
text-overflow: ellipsis;
}
.c-button-ghost:focus {
outline: none;
}
States
Button, secondary
Verification: flagged, the render came out 2 px wider than the original after 2 correction attempts.
Anatomy
button-secondary: the component root, a <button> (.c-button-secondary), 5-character labelRecipe
<div class="c-button-secondary-scope">
<button class="c-button-secondary" type="button">lorem</button>
</div>
.c-button-secondary-scope {
background-color: #1CB0F6;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-button-secondary {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 44px;
padding: 0px 20px;
position: relative;
background-color: transparent;
color: #0B3E71;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 18px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
border-top: 0;
border-right: 0;
border-bottom: 4px solid transparent;
border-left: 0;
}
.c-button-secondary::before {
content: "";
display: block;
box-sizing: border-box;
width: 83px;
height: 40px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #FFFFFF;
color: #FFFFFF80;
border-radius: 16px;
box-shadow: #FFFFFF80 0px 4px 0px 0px;
}
.c-button-secondary:focus {
outline: none;
}
States
Button, ghost (2)
Verification: verified against the live page at desktop.
Anatomy
button-ghost-2: the component root, a <button> (.c-button-ghost-2)button-ghost-2-label: label text, 0 characters (.c-button-ghost-2__label)button-ghost-2-label-2: label text, 14 characters (.c-button-ghost-2__label-2)button-ghost-2-label-3: label text, 7 characters (.c-button-ghost-2__label-3)button-ghost-2-image: image placeholder, 14px (.c-button-ghost-2__image)Recipe
<div class="c-button-ghost-2-scope">
<button class="c-button-ghost-2" type="button">
<span class="c-button-ghost-2__label">
<span class="c-button-ghost-2__label-2">lorem ipsum do</span>
<span class="c-button-ghost-2__label-3">lorem i</span>
</span>
<span class="c-button-ghost-2__image" aria-hidden="true"></span>
</button>
</div>
.c-button-ghost-2-scope {
background-color: #1CB0F6;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-button-ghost-2 {
display: flex;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
padding: 0px;
position: relative;
background-color: transparent;
color: #FFFFFF;
border: 0;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 17.25px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
transition: filter 0.2s ease;
}
.c-button-ghost-2__label {
display: block;
box-sizing: border-box;
}
.c-button-ghost-2__image {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 14px;
height: 14px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-left: 8px;
}
.c-button-ghost-2:focus {
outline: none;
}
States
Button, ghost (3)
Verification: verified against the live page at desktop.
Anatomy
button-ghost-3: the component root, a <button> (.c-button-ghost-3)button-ghost-3-label: label text, 25 characters (.c-button-ghost-3__label)Recipe
<div class="c-button-ghost-3-scope">
<button class="c-button-ghost-3" type="button">
<span class="c-button-ghost-3__label">lorem ipsum dolor sit ame</span>
</button>
</div>
.c-button-ghost-3-scope {
background-color: #00CD9C1A;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-button-ghost-3 {
display: inline-flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 48px;
max-width: 300px;
padding: 0px 11px;
position: relative;
background-color: transparent;
color: #00CD9C;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 16px;
font-weight: 700;
line-height: 42px;
letter-spacing: 0.64px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
border-top: 1px solid transparent;
border-right: 1px solid transparent;
border-bottom: 5px solid transparent;
border-left: 1px solid transparent;
}
.c-button-ghost-3::before {
content: "";
display: block;
box-sizing: border-box;
width: 300px;
height: 44px;
position: absolute;
top: -1px;
right: -1px;
bottom: -1px;
left: -1px;
z-index: -1;
background-color: color(srgb 0.9 0.980392 0.961176);
color: color(srgb 0.75 0.95098 0.902941);
border: 1px solid color(srgb 0.75 0.95098 0.902941);
border-radius: 16px;
box-shadow: color(srgb 0.75 0.95098 0.902941) 0px 3px 0px 1px;
outline: 1px solid color(srgb 0.75 0.95098 0.902941);
}
.c-button-ghost-3__label {
display: block;
box-sizing: border-box;
}
.c-button-ghost-3:focus {
outline: none;
}
States
Card
Verification: flagged, the card-group-2 y did not reproduce the measured 273px after 2 correction attempts.
Anatomy
card: the component root, a <section> (.c-card)card-group: inner flex column (.c-card__group)card-title: heading, 21 characters (.c-card__title)card-body: inner group (.c-card__body)card-group-2: inner group (.c-card__group-2)card-text: label text, 34 characters (.c-card__text, 2 instances)card-link: link, 28-character label (.c-card__link)card-group-3: inner block (.c-card__group-3)card-media: image placeholder, 530px (.c-card__media)Recipe
<div class="c-card-scope">
<section class="c-card">
<div class="c-card__group">
<h2 class="c-card__title">lorem ipsum dolor sit</h2>
<p class="c-card__body">
<span class="c-card__group-2">
<span class="c-card__text">lorem ipsum dolor sit amet consect</span>
<a class="c-card__link" href="#">lorem ipsum dolor sit amet c</a>
<span class="c-card__text">lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor lorem ipsum dolor sit amet consectetur adipi</span>
</span>
</p>
</div>
<div class="c-card__group-3">
<span class="c-card__media" aria-hidden="true"></span>
</div>
</section>
</div>
.c-card-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card {
display: inline-flex;
align-items: center;
gap: 101px;
border-spacing: 0px;
box-sizing: border-box;
width: 988px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card__group {
display: flex;
flex-direction: column;
align-items: start;
flex-shrink: 0;
gap: 24px;
box-sizing: border-box;
max-width: 100%;
}
.c-card__title {
display: block;
box-sizing: border-box;
max-width: 503px;
margin: 0px;
color: #58CC02;
font-family: feather, sans-serif;
font-size: 48px;
font-weight: 700;
line-height: normal;
}
.c-card__body {
display: block;
box-sizing: border-box;
max-width: 473px;
margin: 0px;
color: #777777;
line-height: 24px;
}
.c-card__group-2 {
display: inline;
box-sizing: border-box;
}
.c-card__link {
display: inline;
box-sizing: border-box;
color: #1CB0F6;
cursor: pointer;
font-weight: 700;
text-decoration-line: none;
}
.c-card__group-3 {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 530px;
aspect-ratio: 1 / 1;
position: relative;
line-height: 0px;
}
.c-card__media {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 530px;
height: 530px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-card:hover {
flex-direction: row;
}
.c-card:focus {
flex-direction: row;
}
States
Card (2)
Verification: flagged, the card-2-group y did not reproduce the measured 0px after 2 correction attempts.
Anatomy
card-2: the component root, a <div> (.c-card-2)card-2-group: inner block (.c-card-2__group)card-2-link: link (.c-card-2__link)card-2-media: image placeholder, 500x277px (.c-card-2__media)card-2-media-2: image placeholder, 64px (.c-card-2__media-2)card-2-group-2: inner flex row (.c-card-2__group-2)card-2-text: label text, 70 characters (.c-card-2__text)Recipe
<div class="c-card-2-scope">
<div class="c-card-2">
<div class="c-card-2__group">
<a class="c-card-2__link" href="#">
<span class="c-card-2__media" aria-hidden="true"></span>
<span class="c-card-2__media-2" aria-hidden="true"></span>
</a>
</div>
<div class="c-card-2__group-2">
<span class="c-card-2__text">lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod</span>
</div>
</div>
</div>
.c-card-2-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card-2 {
display: flex;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card-2__group {
display: block;
box-sizing: border-box;
aspect-ratio: 375 / 208;
position: relative;
}
.c-card-2__link {
display: block;
box-sizing: border-box;
width: 100%;
height: 100%;
position: absolute;
top: 0px;
left: 0px;
overflow-x: hidden;
overflow-y: hidden;
color: #0000EE;
border-radius: 12px;
cursor: pointer;
text-decoration-line: none;
}
.c-card-2__media {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 500px;
height: 277px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-card-2__media-2 {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 64px;
height: 64px;
position: absolute;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
transform: matrix(1, 0, 0, 1, -32, -32);
}
.c-card-2__group-2 {
display: flex;
flex-grow: 1;
flex-basis: 0%;
gap: 16px;
box-sizing: border-box;
}
.c-card-2__text {
display: block;
box-sizing: border-box;
color: #4B4B4B;
font-size: 20px;
font-weight: 700;
line-height: 28px;
}
.c-card-2:hover {
gap: 40px;
}
.c-card-2:focus {
gap: 40px;
}
States
Card (3)
Verification: verified against the live page at desktop.
Anatomy
card-3: the component root, a <a> (.c-card-3)card-3-group: inner block (.c-card-3__group)card-3-group-2: inner flex row (.c-card-3__group-2)card-3-group-3: inner block (.c-card-3__group-3)card-3-media: image placeholder, 88x68px (.c-card-3__media)card-3-text: label text, 7 characters (.c-card-3__text)card-3-text-2: label text, 12 characters (.c-card-3__text-2)Recipe
<div class="c-card-3-scope">
<a class="c-card-3" href="#">
<div class="c-card-3__group">
<div class="c-card-3__group-2"></div>
<div class="c-card-3__group-3">
<span class="c-card-3__media" aria-hidden="true"></span>
</div>
<div class="c-card-3__text">lorem i</div>
<div class="c-card-3__text-2">lorem ipsum</div>
</div>
</a>
</div>
.c-card-3-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card-3 {
display: inline-block;
flex-grow: 1;
border-spacing: 0px;
box-sizing: border-box;
min-width: 200px;
max-width: 240px;
min-height: 217px;
padding: 12px 12px 24px;
position: relative;
background-color: #FFFFFF;
color: #0000EE;
border-radius: 16px;
cursor: pointer;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
text-decoration-line: none;
text-align: center;
border-top: 2px solid #E5E5E5;
border-right: 2px solid #E5E5E5;
border-bottom: 4px solid #E5E5E5;
border-left: 2px solid #E5E5E5;
}
.c-card-3__group {
display: block;
box-sizing: border-box;
position: relative;
}
.c-card-3__group-2 {
display: flex;
flex-direction: row-reverse;
box-sizing: border-box;
min-height: 26px;
margin-bottom: 6px;
}
.c-card-3__group-3 {
display: block;
box-sizing: border-box;
height: 80px;
margin-right: auto;
margin-left: auto;
}
.c-card-3__media {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 88px;
height: 68px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
border: 4px solid #FFFFFF;
border-radius: 16px;
}
.c-card-3__text {
display: block;
box-sizing: border-box;
color: #4B4B4B;
font-weight: 700;
line-height: 20.4px;
margin-top: 10px;
}
.c-card-3__text-2 {
display: block;
box-sizing: border-box;
color: #777777;
margin-top: 6px;
}
.c-card-3:focus {
outline: none;
}
States
Card (4)
Verification: not verifiable, what the page placed in it (photos, media, ads) covers most of it and nothing else differs, so the comparison could not be judged.
Anatomy
card-4: the component root, a <section> (.c-card-4)card-4-group: inner flex column (.c-card-4__group)card-4-text: label text, 19 characters (.c-card-4__text)card-4-title: heading, 24 characters (.c-card-4__title)card-4-body: label text, 59 characters (.c-card-4__body)card-4-cta: link (.c-card-4__cta)card-4-text-2: label text, 13 characters (.c-card-4__text-2)card-4-group-2: inner flex row (.c-card-4__group-2)card-4-media: image placeholder, 295x611px (.c-card-4__media)Recipe
<div class="c-card-4-scope">
<section class="c-card-4">
<div class="c-card-4__group">
<span class="c-card-4__text">lorem ipsum dolor s</span>
<h2 class="c-card-4__title">lorem ipsum dolor sit am</h2>
<p class="c-card-4__body">lorem ipsum dolor sit amet consectetur adipiscing elit sed</p>
<a class="c-card-4__cta" href="#">
<span class="c-card-4__text-2">lorem ipsum d</span>
</a>
</div>
<div class="c-card-4__group-2">
<span class="c-card-4__media" aria-hidden="true"></span>
</div>
</section>
</div>
.c-card-4-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card-4 {
display: inline-flex;
justify-content: space-between;
align-items: center;
align-self: center;
border-spacing: 0px;
box-sizing: border-box;
width: 910px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-card-4__group {
display: flex;
flex-direction: column;
align-items: center;
box-sizing: border-box;
text-align: center;
}
.c-card-4__text {
display: block;
box-sizing: border-box;
color: #AFAFAF;
font-size: 16px;
font-weight: 700;
line-height: 16px;
letter-spacing: 0.64px;
text-transform: uppercase;
margin-bottom: 12px;
}
.c-card-4__title {
display: block;
box-sizing: border-box;
margin: 0px 0px 16px;
color: #4B4B4B;
font-size: 28px;
font-weight: 700;
line-height: 32px;
}
.c-card-4__body {
display: block;
box-sizing: border-box;
max-width: 442px;
margin: 0px auto 36px;
color: #777777;
font-size: 20px;
line-height: 28px;
}
.c-card-4__cta {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
width: 100%;
height: 48px;
max-width: 300px;
position: relative;
color: #00CD9C;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-size: 16px;
font-weight: 700;
line-height: 42px;
letter-spacing: 0.64px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 11px;
padding-left: 11px;
border-top: 1px solid transparent;
border-right: 1px solid transparent;
border-bottom: 5px solid transparent;
border-left: 1px solid transparent;
}
.c-card-4__cta::before {
content: "";
display: block;
box-sizing: border-box;
width: 300px;
height: 44px;
position: absolute;
top: -1px;
right: -1px;
bottom: -1px;
left: -1px;
z-index: -1;
background-color: #FFFFFF;
color: #E5E5E5;
border: 1px solid #E5E5E5;
border-radius: 16px;
box-shadow: #E5E5E5 0px 3px 0px 1px;
outline: 1px solid #E5E5E5;
}
.c-card-4__text-2 {
display: block;
box-sizing: border-box;
}
.c-card-4__group-2 {
display: flex;
justify-content: center;
flex-shrink: 0;
box-sizing: border-box;
}
.c-card-4__media {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 295px;
height: 611px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-card-4:hover {
flex-direction: row-reverse;
}
.c-card-4:focus {
flex-direction: row-reverse;
}
States
Card (5)
Verification: flagged, the card-5-group-2 height did not reproduce the measured 105px after 2 correction attempts.
Anatomy
card-5: the component root, a <div> (.c-card-5)card-5-media: image placeholder, 170px (.c-card-5__media)card-5-text: label text, 9 characters (.c-card-5__text)card-5-group: inner block (.c-card-5__group)card-5-group-2: inner block (.c-card-5__group-2, 2 instances)card-5-group-3: inner flex row (.c-card-5__group-3, 2 instances)card-5-media-2: image placeholder, 13x9px (.c-card-5__media-2, 2 instances)card-5-text-2: label text, 21 characters (.c-card-5__text-2, 2 instances)card-5-text-3: label text, 57 characters (.c-card-5__text-3, 2 instances)Recipe
<div class="c-card-5-scope">
<div class="c-card-5">
<span class="c-card-5__media" aria-hidden="true"></span>
<div class="c-card-5__text">lorem ips</div>
<div class="c-card-5__group">
<div class="c-card-5__group-2">
<div class="c-card-5__group-3">
<span class="c-card-5__media-2" aria-hidden="true"></span>
<span class="c-card-5__text-2">lorem ipsum dolor sit</span>
</div>
<div class="c-card-5__text-3">lorem ipsum dolor sit amet consectetur adipiscing elit se</div>
</div>
<div class="c-card-5__group-2">
<div class="c-card-5__group-3">
<span class="c-card-5__media-2" aria-hidden="true"></span>
<span class="c-card-5__text-2">lorem ipsum do</span>
</div>
<div class="c-card-5__text-3">lorem ipsum dolor sit amet consectetur adipiscing el</div>
</div>
</div>
</div>
</div>
.c-card-5-scope {
background-color: #FFFFFF;
color: #4B4B4B;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 25px;
}
.c-card-5 {
display: inline-block;
border-spacing: 0px;
box-sizing: border-box;
max-width: 330px;
padding: 24px;
color: #4B4B4B;
border: 2px solid #E5E5E5;
border-radius: 16px;
cursor: default;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 25px;
text-align: center;
}
.c-card-5__media {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 170px;
height: 170px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-top: -75px;
margin-bottom: 18px;
}
.c-card-5__text {
display: block;
box-sizing: border-box;
font-size: 25px;
font-weight: 700;
line-height: 34px;
margin-bottom: 24px;
}
.c-card-5__group {
display: block;
box-sizing: border-box;
text-align: left;
}
.c-card-5__group-2 {
display: block;
box-sizing: border-box;
}
.c-card-5__group-3 {
display: flex;
align-items: flex-start;
box-sizing: border-box;
font-weight: 700;
margin-top: 24px;
margin-bottom: 5px;
}
.c-card-5__media-2 {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 13px;
height: 9px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-top: 8px;
margin-right: 15px;
}
.c-card-5__text-3 {
display: block;
box-sizing: border-box;
margin-left: 28px;
}
States
Verification: flagged, the language-tab-group width did not reproduce the measured 1002px after 2 correction attempts.
Anatomy
language-tab: the component root, a <nav> (.c-language-tab), content not capturedlanguage-tab-icon: icon placeholder, 14px (.c-language-tab__icon)language-tab-group: inner block (.c-language-tab__group)language-tab-list: inner flex row (.c-language-tab__list), content not capturedlanguage-tab-link: link (.c-language-tab__link, 18 instances), content not capturedlanguage-tab-item: inner group (.c-language-tab__item)Recipe
<div class="c-language-tab-scope">
<nav class="c-language-tab">
<span class="c-language-tab__icon" aria-hidden="true"></span>
<div class="c-language-tab__group">
<ul class="c-language-tab__list">
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<a class="c-language-tab__link" href="#"></a>
<li class="c-language-tab__item">
<a class="c-language-tab__link" href="#"></a>
</li>
</ul>
</div>
</nav>
</div>
.c-language-tab-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-language-tab {
display: inline-grid;
align-items: center;
gap: 30px;
grid-template-columns: min-content 1fr min-content;
border-spacing: 0px;
box-sizing: border-box;
height: 74px;
max-width: 1090px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-language-tab__icon {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 14px;
height: 14px;
overflow-x: hidden;
overflow-y: hidden;
background-color: currentcolor;
cursor: pointer;
}
.c-language-tab__group {
display: block;
box-sizing: border-box;
overflow-x: hidden;
overflow-y: hidden;
}
.c-language-tab__list {
display: flex;
gap: 23px;
box-sizing: border-box;
padding: 0px;
margin: 0px;
transform: matrix(1, 0, 0, 1, 0, 0);
list-style-type: none;
transition: transform 0.5s ease-in-out;
}
.c-language-tab__link {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
color: #777777;
cursor: pointer;
text-decoration-line: none;
}
.c-language-tab__item {
display: list-item;
box-sizing: border-box;
}
States
Verification: flagged, the app-store-badge-icon x did not reproduce the measured 16px after 2 correction attempts.
Anatomy
app-store-badge: the component root, a <a> (.c-app-store-badge)app-store-badge-group: inner group (.c-app-store-badge__group)app-store-badge-icon: icon placeholder, 34px (.c-app-store-badge__icon)app-store-badge-group-2: inner group (.c-app-store-badge__group-2)app-store-badge-group-3: inner grid (.c-app-store-badge__group-3)app-store-badge-text: label text, 15 characters (.c-app-store-badge__text)app-store-badge-text-2: label text, 9 characters (.c-app-store-badge__text-2)Recipe
<div class="c-app-store-badge-scope">
<a class="c-app-store-badge" href="#">
<span class="c-app-store-badge__group">
<span class="c-app-store-badge__icon" aria-hidden="true"></span>
</span>
<span class="c-app-store-badge__group-2">
<span class="c-app-store-badge__group-3">
<span class="c-app-store-badge__text">lorem ipsum dol</span>
<span class="c-app-store-badge__text-2">lorem ips</span>
</span>
</span>
</a>
</div>
.c-app-store-badge-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-app-store-badge {
display: inline-flex;
justify-content: center;
align-items: center;
gap: 10px;
border-spacing: 0px;
box-sizing: border-box;
padding: 9.5px 14px;
position: relative;
color: #4B4B4B;
border-radius: 12px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: normal;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
border-top: 2px solid transparent;
border-right: 2px solid transparent;
border-bottom: 4px solid transparent;
border-left: 2px solid transparent;
}
.c-app-store-badge::before {
content: "";
display: block;
box-sizing: border-box;
width: 177px;
height: 61px;
position: absolute;
top: -2px;
right: -2px;
bottom: -2px;
left: -2px;
z-index: -1;
background-color: #FFFFFF;
color: #E5E5E5;
border: 2px solid #E5E5E5;
border-radius: 12px;
box-shadow: #E5E5E5 0px 2px 0px 0px;
}
.c-app-store-badge__group {
display: block;
align-self: start;
box-sizing: border-box;
width: 34px;
height: 34px;
}
.c-app-store-badge__icon {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 34px;
height: 34px;
overflow-x: hidden;
overflow-y: hidden;
background-color: currentcolor;
}
.c-app-store-badge__group-2 {
display: block;
box-sizing: border-box;
font-size: 17px;
line-height: 20px;
}
.c-app-store-badge__group-3 {
display: grid;
box-sizing: border-box;
}
.c-app-store-badge__text {
display: block;
box-sizing: border-box;
font-size: 14px;
line-height: 17px;
margin-bottom: 1px;
}
.c-app-store-badge:focus {
outline: none;
}
States
Header (landing)
Verification: desktop flagged, the header-landing-text y did not reproduce the measured 23px after 2 correction attempts; mobile verified against the live page at mobile.
Variant observed on https://www.duolingo.com/.
Anatomy
header-landing: the component root, a <nav> (.c-header-landing)header-landing-logo: link (.c-header-landing__logo)header-landing-logo-image: image placeholder, 179x42px (.c-header-landing__logo-image)header-landing-group: inner flex row (.c-header-landing__group)header-landing-cta: link (.c-header-landing__cta)header-landing-text: label text, 11 characters (.c-header-landing__text)Desktop recipe
<div class="c-header-landing-scope">
<nav class="c-header-landing">
<a class="c-header-landing__logo" href="#">
<span class="c-header-landing__logo-image" aria-hidden="true"></span>
</a>
<div class="c-header-landing__group">
<a class="c-header-landing__cta" href="#">
<span class="c-header-landing__text">lorem ipsum</span>
</a>
</div>
</nav>
</div>
.c-header-landing-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-landing {
display: flex;
justify-content: space-between;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 70px;
max-width: 988px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-landing__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-landing__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 179px;
height: 42px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-landing__group {
display: flex;
gap: 8px;
box-sizing: border-box;
}
.c-header-landing__cta {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
height: 44px;
position: relative;
color: #FFFFFF;
border-radius: 12px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-size: 15px;
font-weight: 700;
line-height: normal;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 20px;
padding-left: 20px;
border-bottom-width: 4px;
border-bottom-style: solid;
border-bottom-color: transparent;
}
.c-header-landing__cta::before {
content: "";
display: block;
box-sizing: border-box;
width: 133px;
height: 40px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #58CC02;
color: #58A700;
border-radius: 12px;
box-shadow: #58A700 0px 4px 0px 0px;
}
.c-header-landing__text {
display: block;
box-sizing: border-box;
overflow-x: hidden;
overflow-y: hidden;
text-overflow: ellipsis;
}
.c-header-landing__logo:focus {
outline: none;
}
.c-header-landing__cta:hover {
justify-content: normal;
padding: 0px;
color: #AFAFAF;
border: 0;
border-radius: 0px;
line-height: 17.25px;
text-align: center;
appearance: button;
}
.c-header-landing__cta:focus {
justify-content: normal;
padding: 0px;
color: #AFAFAF;
border: 0;
border-radius: 0px;
outline: none;
line-height: 17.25px;
text-align: center;
appearance: button;
}
Mobile anatomy
header-landing-mobile: the component root, a <nav> (.c-header-landing-mobile)header-landing-mobile-logo: link (.c-header-landing-mobile__logo)header-landing-mobile-logo-image: image placeholder, 161x38px (.c-header-landing-mobile__logo-image)Mobile recipe
<div class="c-header-landing-mobile-scope">
<nav class="c-header-landing-mobile">
<a class="c-header-landing-mobile__logo" href="#">
<span class="c-header-landing-mobile__logo-image" aria-hidden="true"></span>
</a>
</nav>
</div>
.c-header-landing-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-landing-mobile {
display: flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 70px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
padding-right: 15px;
padding-left: 15px;
}
.c-header-landing-mobile__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-landing-mobile__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 161px;
height: 38px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-landing-mobile__logo:focus {
outline: none;
}
States
header-landing-logo focus: outline noneheader-landing-cta hover (header-landing-cta-hover): justify-content normal, padding 0px, color #AFAFAF, border 0, border-radius 0px, line-height 17.25px, text-align center, appearance buttonheader-landing-cta focus (header-landing-cta-focus): justify-content normal, padding 0px, color #AFAFAF, border 0, border-radius 0px, outline none, line-height 17.25px, text-align center, appearance buttonheader-landing-mobile-logo focus: outline noneHeader (inner)
Verification: desktop verified against the live page at desktop; mobile verified against the live page at mobile.
Variant observed on https://www.duolingo.com/efficacy.
Anatomy
header-inner: the component root, a <nav> (.c-header-inner)header-inner-logo: link (.c-header-inner__logo)header-inner-logo-image: image placeholder, 182x42px (.c-header-inner__logo-image)header-inner-link: link, 8-character label (.c-header-inner__link)header-inner-link-2: link, 6-character label (.c-header-inner__link-2, 4 instances)Desktop recipe
<div class="c-header-inner-scope">
<nav class="c-header-inner">
<a class="c-header-inner__logo" href="#">
<span class="c-header-inner__logo-image" aria-hidden="true"></span>
</a>
<a class="c-header-inner__link" href="#">lorem ip</a>
<a class="c-header-inner__link-2" href="#">lorem</a>
<a class="c-header-inner__link-2" href="#">lorem i</a>
<a class="c-header-inner__link-2" href="#">lorem ips</a>
<a class="c-header-inner__link-2" href="#">lorem ip</a>
</nav>
</div>
.c-header-inner-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner {
display: inline-flex;
border-spacing: 0px;
box-sizing: border-box;
max-width: 1048px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
padding-right: 30px;
padding-left: 30px;
}
.c-header-inner__logo {
display: block;
align-self: center;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
line-height: 0px;
text-decoration-line: none;
margin-right: auto;
}
.c-header-inner__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 182px;
height: 42px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner__link {
display: flex;
align-items: center;
box-sizing: border-box;
position: relative;
color: #1CB0F6;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: normal;
letter-spacing: 1px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 10px;
padding-left: 10px;
margin-left: 20px;
}
.c-header-inner__link::after {
content: "";
display: block;
box-sizing: border-box;
width: 76px;
height: 4px;
position: absolute;
top: 68px;
right: -32.1719px;
bottom: -2px;
left: 44.1719px;
background-color: #1CB0F6;
transform: matrix(1, 0, 0, 1, -38.1797, 0);
}
.c-header-inner__link-2 {
display: flex;
align-items: center;
box-sizing: border-box;
position: relative;
color: #AFAFAF;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: normal;
letter-spacing: 1px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 10px;
padding-left: 10px;
margin-left: 20px;
}
.c-header-inner__link-2::after {
content: "";
display: block;
box-sizing: border-box;
width: 69px;
height: 4px;
position: absolute;
top: 68px;
right: -28.4375px;
bottom: -2px;
left: 40.4375px;
transform: matrix(1, 0, 0, 1, -34.4453, 0);
}
.c-header-inner__logo:focus {
outline: none;
}
.c-header-inner__link:focus {
outline: none;
}
.c-header-inner__link-2:focus {
outline: none;
}
Mobile anatomy
header-inner-mobile: the component root, a <nav> (.c-header-inner-mobile)header-inner-mobile-logo: link (.c-header-inner-mobile__logo)header-inner-mobile-logo-image: image placeholder, 139x32px (.c-header-inner-mobile__logo-image)header-inner-mobile-menu-toggle: button (.c-header-inner-mobile__menu-toggle)header-inner-mobile-group: inner group (.c-header-inner-mobile__group)header-inner-mobile-icon: icon placeholder, 32x33px (.c-header-inner-mobile__icon)Mobile recipe
<div class="c-header-inner-mobile-scope">
<nav class="c-header-inner-mobile">
<a class="c-header-inner-mobile__logo" href="#">
<span class="c-header-inner-mobile__logo-image" aria-hidden="true"></span>
</a>
<button class="c-header-inner-mobile__menu-toggle" type="button">
<span class="c-header-inner-mobile__group">
<span class="c-header-inner-mobile__icon" aria-hidden="true"></span>
</span>
</button>
</nav>
</div>
.c-header-inner-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-mobile {
display: inline-flex;
border-spacing: 0px;
box-sizing: border-box;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
padding-right: 16px;
padding-left: 16px;
}
.c-header-inner-mobile__logo {
display: block;
align-self: center;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
line-height: 0px;
text-decoration-line: none;
margin-right: auto;
}
.c-header-inner-mobile__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 139px;
height: 32px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-mobile__menu-toggle {
display: flex;
align-self: center;
box-sizing: border-box;
padding: 0px;
position: relative;
background-color: transparent;
color: #000000;
border: 0;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 400;
line-height: 19.55px;
letter-spacing: normal;
text-transform: none;
text-align: center;
appearance: button;
transition: filter 0.2s ease;
}
.c-header-inner-mobile__group {
display: block;
box-sizing: border-box;
width: 32px;
height: 32px;
color: #58CC02;
}
.c-header-inner-mobile__icon {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 32px;
height: 33px;
overflow-x: hidden;
overflow-y: hidden;
background-color: currentcolor;
}
.c-header-inner-mobile__logo:focus {
outline: none;
}
.c-header-inner-mobile__menu-toggle:focus {
outline: none;
}
States
header-inner-logo focus: outline noneheader-inner-link focus: outline noneheader-inner-link-2 focus: outline noneheader-inner-mobile-logo focus: outline noneheader-inner-mobile-menu-toggle focus: outline noneHeader (inner, 2)
Verification: desktop flagged, the header-inner-2 height did not reproduce the measured 70px after 2 correction attempts; mobile flagged, the header-inner-2-mobile height did not reproduce the measured 70px after 2 correction attempts.
Variant observed on https://www.duolingo.com/courses.
Anatomy
header-inner-2: the component root, a <header> (.c-header-inner-2)header-inner-2-inner: inner block (.c-header-inner-2__inner)header-inner-2-logo: link (.c-header-inner-2__logo)header-inner-2-logo-image: image placeholder, 153x36px (.c-header-inner-2__logo-image)header-inner-2-group: inner flex row (.c-header-inner-2__group)header-inner-2-group-2: inner block (.c-header-inner-2__group-2)header-inner-2-cta: the button-ghost-2 button (.c-header-inner-2__cta)header-inner-2-text: label text, 0 characters (.c-header-inner-2__text)header-inner-2-text-2: label text, 14 characters (.c-header-inner-2__text-2, 2 instances)header-inner-2-cta-image: image placeholder, 14px (.c-header-inner-2__cta-image)header-inner-2-group-3: inner block (.c-header-inner-2__group-3)header-inner-2-cta-2: the button-secondary button, 5-character label (.c-header-inner-2__cta-2)header-inner-2-cta-3: link, 11-character label (.c-header-inner-2__cta-3)Desktop recipe
<div class="c-header-inner-2-scope">
<header class="c-header-inner-2">
<div class="c-header-inner-2__inner">
<a class="c-header-inner-2__logo" href="#">
<span class="c-header-inner-2__logo-image" aria-hidden="true"></span>
</a>
<div class="c-header-inner-2__group">
<div class="c-header-inner-2__group-2">
<button class="c-header-inner-2__cta" type="button">
<span class="c-header-inner-2__text">
<span class="c-header-inner-2__text-2">lorem ipsum do</span>
<span class="c-header-inner-2__text-2">lorem i</span>
</span>
<span class="c-header-inner-2__cta-image" aria-hidden="true"></span>
</button>
</div>
<div class="c-header-inner-2__group-3">
<button class="c-header-inner-2__cta-2" type="button">lorem</button>
</div>
<a class="c-header-inner-2__cta-3" href="#">lorem ipsum</a>
</div>
</div>
</header>
</div>
.c-header-inner-2-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-2 {
display: block;
border-spacing: 0px;
box-sizing: border-box;
position: fixed;
top: 0px;
z-index: 2;
background-color: #1CB0F6;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-2__inner {
display: block;
box-sizing: border-box;
max-width: 1065px;
min-height: 70px;
padding-right: 24px;
padding-left: 24px;
margin-right: auto;
margin-left: auto;
}
.c-header-inner-2__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
margin-top: 18px;
}
.c-header-inner-2__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 153px;
height: 36px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-2__group {
display: flex;
align-items: center;
box-sizing: border-box;
height: 70px;
}
.c-header-inner-2__group-2 {
display: block;
box-sizing: border-box;
position: relative;
cursor: pointer;
margin-right: 24px;
}
.c-header-inner-2__cta {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 0px;
position: relative;
background-color: transparent;
color: #FFFFFF;
border: 0;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 17.25px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
transition: filter 0.2s ease;
}
.c-header-inner-2__text {
display: block;
box-sizing: border-box;
}
.c-header-inner-2__cta-image {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 14px;
height: 14px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-left: 8px;
}
.c-header-inner-2__group-3 {
display: block;
box-sizing: border-box;
position: relative;
text-align: center;
}
.c-header-inner-2__cta-2 {
display: inline-flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
height: 44px;
padding: 0px 20px;
position: relative;
background-color: transparent;
color: #0B3E71;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 18px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
border-top: 0;
border-right: 0;
border-bottom: 4px solid transparent;
border-left: 0;
}
.c-header-inner-2__cta-2::before {
content: "";
display: block;
box-sizing: border-box;
width: 83px;
height: 40px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #FFFFFF;
color: #FFFFFF80;
border-radius: 16px;
box-shadow: #FFFFFF80 0px 4px 0px 0px;
}
.c-header-inner-2__cta-3 {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
height: 44px;
position: relative;
color: #FFFFFF;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-size: 15px;
font-weight: 700;
line-height: 18px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 20px;
padding-left: 20px;
margin-right: 10px;
margin-left: 10px;
border-bottom-width: 4px;
border-bottom-style: solid;
border-bottom-color: transparent;
}
.c-header-inner-2__cta-3::before {
content: "";
display: block;
box-sizing: border-box;
width: 133px;
height: 40px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #58CC02;
color: #58A700;
border-radius: 16px;
box-shadow: #58A700 0px 4px 0px 0px;
}
.c-header-inner-2__logo:focus {
outline: none;
}
.c-header-inner-2__cta:focus {
outline: none;
}
.c-header-inner-2__cta-2:focus {
outline: none;
}
.c-header-inner-2__cta-3:focus {
outline: none;
}
Mobile anatomy
header-inner-2-mobile: the component root, a <header> (.c-header-inner-2-mobile)header-inner-2-mobile-inner: inner block (.c-header-inner-2-mobile__inner)header-inner-2-mobile-logo: link (.c-header-inner-2-mobile__logo)header-inner-2-mobile-logo-image: image placeholder, 153x36px (.c-header-inner-2-mobile__logo-image)header-inner-2-mobile-group: inner flex row (.c-header-inner-2-mobile__group)header-inner-2-mobile-group-2: inner block (.c-header-inner-2-mobile__group-2)header-inner-2-mobile-group-3: inner block (.c-header-inner-2-mobile__group-3)Mobile recipe
<div class="c-header-inner-2-mobile-scope">
<header class="c-header-inner-2-mobile">
<div class="c-header-inner-2-mobile__inner">
<a class="c-header-inner-2-mobile__logo" href="#">
<span class="c-header-inner-2-mobile__logo-image" aria-hidden="true"></span>
</a>
<div class="c-header-inner-2-mobile__group">
<div class="c-header-inner-2-mobile__group-2">
<div class="c-header-inner-2-mobile__group-3"></div>
</div>
</div>
</div>
</header>
</div>
.c-header-inner-2-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-2-mobile {
display: block;
border-spacing: 0px;
box-sizing: border-box;
position: fixed;
top: 0px;
z-index: 2;
background-color: #1CB0F6;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-2-mobile__inner {
display: block;
box-sizing: border-box;
max-width: 1065px;
min-height: 70px;
padding-right: 24px;
padding-left: 24px;
margin-right: auto;
margin-left: auto;
}
.c-header-inner-2-mobile__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
margin-top: 18px;
}
.c-header-inner-2-mobile__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 153px;
height: 36px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-2-mobile__group {
display: flex;
align-items: center;
box-sizing: border-box;
height: 70px;
}
.c-header-inner-2-mobile__group-2 {
display: block;
box-sizing: border-box;
position: relative;
}
.c-header-inner-2-mobile__group-3 {
display: inline-block;
box-sizing: border-box;
width: 40px;
height: 40px;
cursor: pointer;
margin-top: 5px;
}
.c-header-inner-2-mobile__logo:focus {
outline: none;
}
States
header-inner-2-logo focus: outline noneheader-inner-2-cta focus: outline noneheader-inner-2-cta-2 focus: outline noneheader-inner-2-cta-3 focus: outline noneheader-inner-2-mobile-logo focus: outline noneHeader (inner, 3)
Verification: desktop verified against the live page at desktop; mobile verified against the live page at mobile.
Variant observed on https://www.duolingo.com/chess.
Anatomy
header-inner-3: the component root, a <nav> (.c-header-inner-3)header-inner-3-logo: link (.c-header-inner-3__logo)header-inner-3-logo-image: image placeholder, 144x42px (.c-header-inner-3__logo-image)header-inner-3-group: inner block (.c-header-inner-3__group)header-inner-3-button: button (.c-header-inner-3__button)header-inner-3-text: label text, 0 characters (.c-header-inner-3__text)header-inner-3-text-2: label text, 14 characters (.c-header-inner-3__text-2, 2 instances)header-inner-3-button-image: image placeholder, 14px (.c-header-inner-3__button-image)Desktop recipe
<div class="c-header-inner-3-scope">
<nav class="c-header-inner-3">
<a class="c-header-inner-3__logo" href="#">
<span class="c-header-inner-3__logo-image" aria-hidden="true"></span>
</a>
<div class="c-header-inner-3__group">
<button class="c-header-inner-3__button" type="button">
<span class="c-header-inner-3__text">
<span class="c-header-inner-3__text-2">lorem ipsum do</span>
<span class="c-header-inner-3__text-2">lorem i</span>
</span>
<span class="c-header-inner-3__button-image" aria-hidden="true"></span>
</button>
</div>
</nav>
</div>
.c-header-inner-3-scope {
background-color: #00CD9C1A;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-3 {
display: flex;
justify-content: space-between;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
width: 1065px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
padding-top: 20px;
padding-bottom: 20px;
}
.c-header-inner-3__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-inner-3__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 144px;
height: 42px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-3__group {
display: block;
box-sizing: border-box;
position: relative;
cursor: pointer;
}
.c-header-inner-3__button {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 0px;
position: relative;
background-color: transparent;
color: #AFAFAF;
border: 0;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 17.25px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
transition: filter 0.2s ease;
}
.c-header-inner-3__text {
display: block;
box-sizing: border-box;
}
.c-header-inner-3__button-image {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 14px;
height: 14px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-left: 8px;
}
.c-header-inner-3__logo:focus {
outline: none;
}
.c-header-inner-3__button:focus {
outline: none;
}
Mobile anatomy
header-inner-3-mobile: the component root, a <nav> (.c-header-inner-3-mobile)header-inner-3-mobile-logo: link (.c-header-inner-3-mobile__logo)header-inner-3-mobile-logo-image: image placeholder, 144x42px (.c-header-inner-3-mobile__logo-image)Mobile recipe
<div class="c-header-inner-3-mobile-scope">
<nav class="c-header-inner-3-mobile">
<a class="c-header-inner-3-mobile__logo" href="#">
<span class="c-header-inner-3-mobile__logo-image" aria-hidden="true"></span>
</a>
</nav>
</div>
.c-header-inner-3-mobile-scope {
background-color: #00CD9C1A;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-3-mobile {
display: flex;
justify-content: space-between;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
padding: 20px 24px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-3-mobile__logo {
display: block;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-inner-3-mobile__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 144px;
height: 42px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-3-mobile__logo:focus {
outline: none;
}
States
header-inner-3-logo focus: outline noneheader-inner-3-button focus: outline noneheader-inner-3-mobile-logo focus: outline noneHeader (inner, 4)
Verification: desktop flagged, the render matched 86% of the original pixels, below the 96% required after 2 correction attempts; mobile flagged, the render matched 95% of the original pixels, below the 96% required after 2 correction attempts.
Variant observed on https://www.duolingo.com/business.
Anatomy
header-inner-4: the component root, a <header> (.c-header-inner-4)header-inner-4-inner: inner flex row (.c-header-inner-4__inner)header-inner-4-group: inner block (.c-header-inner-4__group)header-inner-4-logo: link (.c-header-inner-4__logo)header-inner-4-logo-image: image placeholder, 250x35px (.c-header-inner-4__logo-image)header-inner-4-cta: link, 11-character label (.c-header-inner-4__cta)Desktop recipe
<div class="c-header-inner-4-scope">
<header class="c-header-inner-4">
<div class="c-header-inner-4__inner">
<div class="c-header-inner-4__group">
<a class="c-header-inner-4__logo" href="#">
<span class="c-header-inner-4__logo-image" aria-hidden="true"></span>
</a>
</div>
<a class="c-header-inner-4__cta" href="#">lorem ipsum</a>
</div>
</header>
</div>
.c-header-inner-4-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-4 {
display: flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 80px;
position: sticky;
top: 0px;
z-index: 210;
background-color: #58CC02;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-4__inner {
display: flex;
flex-wrap: wrap;
align-items: center;
box-sizing: border-box;
width: 100%;
max-width: 1500px;
padding-right: 32px;
padding-left: 32px;
}
.c-header-inner-4__group {
display: block;
flex-grow: 1;
flex-basis: 0%;
box-sizing: border-box;
}
.c-header-inner-4__logo {
display: inline;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-inner-4__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 250px;
height: 35px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-4__cta {
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
height: 50px;
min-width: 275px;
position: relative;
color: #58CC02;
border-radius: 16px;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-size: 15px;
font-weight: 700;
line-height: 18px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
white-space: nowrap;
padding-right: 16px;
padding-left: 16px;
border-bottom-width: 4px;
border-bottom-style: solid;
border-bottom-color: transparent;
}
.c-header-inner-4__cta::before {
content: "";
display: block;
box-sizing: border-box;
width: 275px;
height: 46px;
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
z-index: -1;
background-color: #FFFFFF;
color: #FFFFFFCC;
border-radius: 16px;
box-shadow: #FFFFFFCC 0px 4px 0px 0px;
}
.c-header-inner-4__logo:focus {
outline: none;
}
Mobile anatomy
header-inner-4-mobile: the component root, a <header> (.c-header-inner-4-mobile)header-inner-4-mobile-inner: inner flex column (.c-header-inner-4-mobile__inner)header-inner-4-mobile-group: inner block (.c-header-inner-4-mobile__group)header-inner-4-mobile-logo: link (.c-header-inner-4-mobile__logo)header-inner-4-mobile-logo-image: image placeholder, 250x35px (.c-header-inner-4-mobile__logo-image)Mobile recipe
<div class="c-header-inner-4-mobile-scope">
<header class="c-header-inner-4-mobile">
<div class="c-header-inner-4-mobile__inner">
<div class="c-header-inner-4-mobile__group">
<a class="c-header-inner-4-mobile__logo" href="#">
<span class="c-header-inner-4-mobile__logo-image" aria-hidden="true"></span>
</a>
</div>
</div>
</header>
</div>
.c-header-inner-4-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-4-mobile {
display: flex;
justify-content: center;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
height: 80px;
position: sticky;
top: 0px;
z-index: 210;
background-color: #58CC02;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-header-inner-4-mobile__inner {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: center;
box-sizing: border-box;
width: 100%;
max-width: 1500px;
padding-right: 16px;
padding-left: 16px;
}
.c-header-inner-4-mobile__group {
display: block;
flex-grow: 1;
flex-basis: 0%;
box-sizing: border-box;
}
.c-header-inner-4-mobile__logo {
display: inline;
box-sizing: border-box;
color: #0000EE;
cursor: pointer;
text-decoration-line: none;
}
.c-header-inner-4-mobile__logo-image {
display: inline-block;
flex-shrink: 0;
box-sizing: border-box;
width: 250px;
height: 35px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-header-inner-4-mobile__logo:focus {
outline: none;
}
States
header-inner-4-logo focus: outline noneheader-inner-4-mobile-logo focus: outline noneFooter (landing)
Verification: desktop flagged, the footer-landing-group height did not reproduce the measured 381px after 2 correction attempts; mobile flagged, the footer-landing-mobile-inner height did not reproduce the measured 378px after 2 correction attempts.
Variant observed on https://www.duolingo.com/.
Anatomy
footer-landing: the component root, a <footer> (.c-footer-landing)footer-landing-columns: inner grid (.c-footer-landing__columns)footer-landing-column: inner grid (.c-footer-landing__column, 5 instances)footer-landing-group: inner block (.c-footer-landing__group, 6 instances)footer-landing-text: label text, 8 characters (.c-footer-landing__text, 6 instances)footer-landing-list: inner flex column (.c-footer-landing__list, 6 instances)footer-landing-item: inner group (.c-footer-landing__item, 35 instances)footer-landing-link: link, 7-character label (.c-footer-landing__link, 35 instances)footer-landing-group-2: inner group (.c-footer-landing__group-2)footer-landing-inner: inner block (.c-footer-landing__inner)footer-landing-text-2: label text, 14 characters (.c-footer-landing__text-2)footer-landing-list-2: inner group (.c-footer-landing__list-2), content not capturedfooter-landing-item-2: inner group (.c-footer-landing__item-2, 11 instances), content not capturedfooter-landing-link-2: link, 7-character label (.c-footer-landing__link-2, 10 instances)Desktop recipe
<div class="c-footer-landing-scope">
<footer class="c-footer-landing">
<div class="c-footer-landing__columns">
<div class="c-footer-landing__column">
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lorem ip</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ips</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsu</a>
</li>
</ul>
</div>
</div>
<div class="c-footer-landing__column">
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lorem ip</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor sit</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor sit</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum do</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor s</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum</a>
</li>
</ul>
</div>
</div>
<div class="c-footer-landing__column">
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lore</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolo</a>
</li>
</ul>
</div>
</div>
<div class="c-footer-landing__column">
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lorem ipsum dolo</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum d</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor sit amet</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem</a>
</li>
</ul>
</div>
</div>
<div class="c-footer-landing__column">
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lorem ipsum dolor</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ipsum dolor sit amet consectetur adipi</a>
</li>
</ul>
</div>
<div class="c-footer-landing__group">
<div class="c-footer-landing__text">lorem</div>
<ul class="c-footer-landing__list">
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lore</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ips</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item">
<a class="c-footer-landing__link" href="#">lorem ip</a>
</li>
</ul>
</div>
</div>
</div>
<div class="c-footer-landing__group-2"></div>
<div class="c-footer-landing__inner">
<div class="c-footer-landing__text-2">lorem ipsum do</div>
<ul class="c-footer-landing__list-2">
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem ip</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing__item-2">
<a class="c-footer-landing__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing__item-2"></li>
</ul>
</div>
</footer>
</div>
.c-footer-landing-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-landing {
display: block;
border-spacing: 0px;
box-sizing: border-box;
background-color: #58CC02;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-landing__columns {
display: grid;
gap: 24px;
grid-template-columns: repeat(5, 178px);
box-sizing: border-box;
max-width: 988px;
padding-top: 96px;
padding-bottom: 64px;
margin-right: auto;
margin-left: auto;
}
.c-footer-landing__column {
display: grid;
gap: 32px;
box-sizing: border-box;
}
.c-footer-landing__group {
display: block;
box-sizing: border-box;
}
.c-footer-landing__text {
display: block;
box-sizing: border-box;
color: #D7FFB8;
font-size: 19px;
font-weight: 700;
line-height: 26.6px;
margin-bottom: 12px;
}
.c-footer-landing__list {
display: flex;
flex-direction: column;
gap: 10px;
box-sizing: border-box;
padding: 0px;
margin: 0px;
list-style-type: none;
}
.c-footer-landing__item {
display: list-item;
box-sizing: border-box;
}
.c-footer-landing__link {
display: inline;
box-sizing: border-box;
color: #A5ED6E;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 22px;
text-decoration-line: none;
}
.c-footer-landing__group-2 {
display: block;
height: 0px;
color: #808080;
border-top-width: 2px;
border-top-style: solid;
border-top-color: #A5ED6E;
}
.c-footer-landing__inner {
display: block;
box-sizing: border-box;
max-width: 988px;
padding-top: 40px;
padding-bottom: 64px;
margin-right: auto;
margin-left: auto;
}
.c-footer-landing__text-2 {
display: block;
box-sizing: border-box;
color: #D7FFB8;
font-size: 15px;
font-weight: 700;
line-height: 22px;
margin-bottom: 16px;
}
.c-footer-landing__list-2 {
display: block;
box-sizing: border-box;
padding: 0px;
margin: -8px -12px;
list-style-type: none;
}
.c-footer-landing__item-2 {
display: inline-block;
box-sizing: border-box;
margin: 8px 12px;
}
.c-footer-landing__link-2 {
display: inline;
box-sizing: border-box;
color: #A5ED6E;
cursor: pointer;
font-size: 13px;
font-weight: 700;
line-height: 16px;
text-decoration-line: none;
}
.c-footer-landing__link:focus {
outline: none;
}
.c-footer-landing__link-2:focus {
outline: none;
}
Mobile anatomy
footer-landing-mobile: the component root, a <footer> (.c-footer-landing-mobile)footer-landing-mobile-columns: inner grid (.c-footer-landing-mobile__columns)footer-landing-mobile-column: inner grid (.c-footer-landing-mobile__column)footer-landing-mobile-group: inner block (.c-footer-landing-mobile__group, 6 instances)footer-landing-mobile-text: label text, 8 characters (.c-footer-landing-mobile__text, 6 instances)footer-landing-mobile-list: inner flex column (.c-footer-landing-mobile__list, 6 instances)footer-landing-mobile-item: inner group (.c-footer-landing-mobile__item, 35 instances)footer-landing-mobile-link: link, 7-character label (.c-footer-landing-mobile__link, 35 instances)footer-landing-mobile-group-2: inner group (.c-footer-landing-mobile__group-2)footer-landing-mobile-inner: inner block (.c-footer-landing-mobile__inner)footer-landing-mobile-text-2: label text, 14 characters (.c-footer-landing-mobile__text-2)footer-landing-mobile-list-2: inner group (.c-footer-landing-mobile__list-2), content not capturedfooter-landing-mobile-item-2: inner group (.c-footer-landing-mobile__item-2, 13 instances), content not capturedfooter-landing-mobile-link-2: link, 7-character label (.c-footer-landing-mobile__link-2, 12 instances)Mobile recipe
<div class="c-footer-landing-mobile-scope">
<footer class="c-footer-landing-mobile">
<div class="c-footer-landing-mobile__columns">
<div class="c-footer-landing-mobile__column">
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lorem ip</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ips</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsu</a>
</li>
</ul>
</div>
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lorem ip</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor sit</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor sit</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum do</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor s</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum</a>
</li>
</ul>
</div>
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lore</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolo</a>
</li>
</ul>
</div>
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lorem ipsum dolo</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum d</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor sit amet</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem</a>
</li>
</ul>
</div>
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lorem ipsum dolor</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor si</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ipsum dolor sit amet consectetur adipi</a>
</li>
</ul>
</div>
<div class="c-footer-landing-mobile__group">
<div class="c-footer-landing-mobile__text">lorem</div>
<ul class="c-footer-landing-mobile__list">
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lore</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ips</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item">
<a class="c-footer-landing-mobile__link" href="#">lorem ip</a>
</li>
</ul>
</div>
</div>
</div>
<div class="c-footer-landing-mobile__group-2"></div>
<div class="c-footer-landing-mobile__inner">
<div class="c-footer-landing-mobile__text-2">lorem ipsum do</div>
<ul class="c-footer-landing-mobile__list-2">
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem i</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem ipsum dolo</a>
</li>
<li class="c-footer-landing-mobile__item-2">
<a class="c-footer-landing-mobile__link-2" href="#">lorem ip</a>
</li>
<li class="c-footer-landing-mobile__item-2"></li>
</ul>
</div>
</footer>
</div>
.c-footer-landing-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-landing-mobile {
display: block;
border-spacing: 0px;
box-sizing: border-box;
background-color: #58CC02;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-landing-mobile__columns {
display: grid;
gap: 20px;
grid-template-columns: minmax(0px, 216px);
box-sizing: border-box;
max-width: 375px;
padding: 96px 32px 64px;
margin-right: auto;
margin-left: auto;
}
.c-footer-landing-mobile__column {
display: grid;
gap: 32px;
box-sizing: border-box;
}
.c-footer-landing-mobile__group {
display: block;
box-sizing: border-box;
}
.c-footer-landing-mobile__text {
display: block;
box-sizing: border-box;
color: #D7FFB8;
font-size: 19px;
font-weight: 700;
line-height: 26.6px;
margin-bottom: 12px;
}
.c-footer-landing-mobile__list {
display: flex;
flex-direction: column;
gap: 10px;
box-sizing: border-box;
padding: 0px;
margin: 0px;
list-style-type: none;
}
.c-footer-landing-mobile__item {
display: list-item;
box-sizing: border-box;
}
.c-footer-landing-mobile__link {
display: inline;
box-sizing: border-box;
color: #A5ED6E;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 22px;
text-decoration-line: none;
}
.c-footer-landing-mobile__group-2 {
display: block;
height: 0px;
color: #808080;
border-top-width: 2px;
border-top-style: solid;
border-top-color: #A5ED6E;
}
.c-footer-landing-mobile__inner {
display: block;
box-sizing: border-box;
max-width: 375px;
padding: 40px 32px 64px;
margin-right: auto;
margin-left: auto;
}
.c-footer-landing-mobile__text-2 {
display: block;
box-sizing: border-box;
color: #D7FFB8;
font-size: 15px;
font-weight: 700;
line-height: 22px;
margin-bottom: 16px;
}
.c-footer-landing-mobile__list-2 {
display: block;
box-sizing: border-box;
padding: 0px;
margin: -8px -12px;
list-style-type: none;
}
.c-footer-landing-mobile__item-2 {
display: inline-block;
box-sizing: border-box;
margin: 8px 12px;
}
.c-footer-landing-mobile__link-2 {
display: inline;
box-sizing: border-box;
color: #A5ED6E;
cursor: pointer;
font-size: 13px;
font-weight: 700;
line-height: 16px;
text-decoration-line: none;
}
.c-footer-landing-mobile__link:focus {
outline: none;
}
.c-footer-landing-mobile__link-2:focus {
outline: none;
}
States
footer-landing-link focus: outline nonefooter-landing-link-2 focus: outline nonefooter-landing-mobile-link focus: outline nonefooter-landing-mobile-link-2 focus: outline noneFooter (inner)
Verification: desktop verified against the live page at desktop; mobile flagged, the footer-inner-mobile height did not reproduce the measured 116px after 2 correction attempts.
Variant observed on https://www.duolingo.com/efficacy.
Anatomy
footer-inner: the component root, a <footer> (.c-footer-inner)footer-inner-inner: inner block (.c-footer-inner__inner)footer-inner-nav: inner flex row (.c-footer-inner__nav)footer-inner-nav-link: link, 8-character label (.c-footer-inner__nav-link, 8 instances)Desktop recipe
<div class="c-footer-inner-scope">
<footer class="c-footer-inner">
<div class="c-footer-inner__inner">
<nav class="c-footer-inner__nav">
<a class="c-footer-inner__nav-link" href="#">lorem ip</a>
<a class="c-footer-inner__nav-link" href="#">lorem</a>
<a class="c-footer-inner__nav-link" href="#">lorem i</a>
<a class="c-footer-inner__nav-link" href="#">lore</a>
<a class="c-footer-inner__nav-link" href="#">lorem ips</a>
<a class="c-footer-inner__nav-link" href="#">lore</a>
<a class="c-footer-inner__nav-link" href="#">lorem</a>
<a class="c-footer-inner__nav-link" href="#">lorem i</a>
</nav>
</div>
</footer>
</div>
.c-footer-inner-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner {
display: block;
border-spacing: 0px;
box-sizing: border-box;
padding: 30px 25px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
border-top-width: 2px;
border-top-style: solid;
border-top-color: #E5E5E5;
}
.c-footer-inner__inner {
display: block;
box-sizing: border-box;
max-width: 1048px;
margin-right: auto;
margin-left: auto;
}
.c-footer-inner__nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
box-sizing: border-box;
margin: -12px;
color: #AFAFAF;
}
.c-footer-inner__nav-link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #AFAFAF;
opacity: 0.8;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner__nav-link:hover {
opacity: 1;
}
.c-footer-inner__nav-link:focus {
outline: none;
}
Mobile anatomy
footer-inner-mobile: the component root, a <footer> (.c-footer-inner-mobile)footer-inner-mobile-inner: inner block (.c-footer-inner-mobile__inner)footer-inner-mobile-nav: inner flex row (.c-footer-inner-mobile__nav)footer-inner-mobile-nav-link: link, 8-character label (.c-footer-inner-mobile__nav-link, 8 instances)Mobile recipe
<div class="c-footer-inner-mobile-scope">
<footer class="c-footer-inner-mobile">
<div class="c-footer-inner-mobile__inner">
<nav class="c-footer-inner-mobile__nav">
<a class="c-footer-inner-mobile__nav-link" href="#">lorem ip</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lorem</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lorem i</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lore</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lorem ips</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lore</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lorem</a>
<a class="c-footer-inner-mobile__nav-link" href="#">lorem i</a>
</nav>
</div>
</footer>
</div>
.c-footer-inner-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-mobile {
display: block;
border-spacing: 0px;
box-sizing: border-box;
padding: 30px 25px;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
border-top-width: 2px;
border-top-style: solid;
border-top-color: #E5E5E5;
}
.c-footer-inner-mobile__inner {
display: block;
box-sizing: border-box;
max-width: 1048px;
margin-right: auto;
margin-left: auto;
}
.c-footer-inner-mobile__nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
box-sizing: border-box;
margin: -12px;
color: #AFAFAF;
}
.c-footer-inner-mobile__nav-link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #AFAFAF;
opacity: 0.8;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner-mobile__nav-link:hover {
opacity: 1;
}
.c-footer-inner-mobile__nav-link:focus {
outline: none;
}
States
footer-inner-nav-link hover: opacity 1footer-inner-nav-link focus: outline nonefooter-inner-mobile-nav-link hover: opacity 1footer-inner-mobile-nav-link focus: outline noneFooter (inner, 2)
Verification: desktop flagged, the footer-inner-2 height did not reproduce the measured 79px after 2 correction attempts; mobile verified against the live page at mobile.
Variant observed on https://www.duolingo.com/chess.
Anatomy
footer-inner-2: the component root, a <footer> (.c-footer-inner-2)footer-inner-2-nav: inner flex row (.c-footer-inner-2__nav)footer-inner-2-nav-link: link, 8-character label (.c-footer-inner-2__nav-link, 8 instances)Desktop recipe
<div class="c-footer-inner-2-scope">
<footer class="c-footer-inner-2">
<nav class="c-footer-inner-2__nav">
<a class="c-footer-inner-2__nav-link" href="#">lorem ip</a>
<a class="c-footer-inner-2__nav-link" href="#">lorem</a>
<a class="c-footer-inner-2__nav-link" href="#">lorem i</a>
<a class="c-footer-inner-2__nav-link" href="#">lore</a>
<a class="c-footer-inner-2__nav-link" href="#">lorem ips</a>
<a class="c-footer-inner-2__nav-link" href="#">lore</a>
<a class="c-footer-inner-2__nav-link" href="#">lorem</a>
<a class="c-footer-inner-2__nav-link" href="#">lorem i</a>
</nav>
</footer>
</div>
.c-footer-inner-2-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-2 {
display: inline-flex;
justify-content: center;
border-spacing: 0px;
box-sizing: border-box;
padding: 32px 16px;
color: #AFAFAF;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-2__nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
box-sizing: border-box;
margin: -12px;
}
.c-footer-inner-2__nav-link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #AFAFAF;
opacity: 0.8;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner-2__nav-link:hover {
opacity: 1;
}
.c-footer-inner-2__nav-link:focus {
outline: none;
}
Mobile anatomy
footer-inner-2-mobile: the component root, a <footer> (.c-footer-inner-2-mobile)footer-inner-2-mobile-nav: inner flex row (.c-footer-inner-2-mobile__nav)footer-inner-2-mobile-nav-link: link, 8-character label (.c-footer-inner-2-mobile__nav-link, 8 instances)Mobile recipe
<div class="c-footer-inner-2-mobile-scope">
<footer class="c-footer-inner-2-mobile">
<nav class="c-footer-inner-2-mobile__nav">
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem ip</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem i</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lore</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem ips</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lore</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem</a>
<a class="c-footer-inner-2-mobile__nav-link" href="#">lorem i</a>
</nav>
</footer>
</div>
.c-footer-inner-2-mobile-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-2-mobile {
display: inline-flex;
justify-content: center;
border-spacing: 0px;
box-sizing: border-box;
padding: 32px 16px;
color: #AFAFAF;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-2-mobile__nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
box-sizing: border-box;
margin: -12px;
}
.c-footer-inner-2-mobile__nav-link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #AFAFAF;
opacity: 0.8;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner-2-mobile__nav-link:hover {
opacity: 1;
}
.c-footer-inner-2-mobile__nav-link:focus {
outline: none;
}
States
footer-inner-2-nav-link hover: opacity 1footer-inner-2-nav-link focus: outline nonefooter-inner-2-mobile-nav-link hover: opacity 1footer-inner-2-mobile-nav-link focus: outline noneFooter (inner, 3)
Verification: desktop flagged, the footer-inner-3 height did not reproduce the measured 39px after 2 correction attempts; mobile verified against the live page at mobile.
Variant observed on https://www.duolingo.com/business.
Anatomy
footer-inner-3: the component root, a <nav> (.c-footer-inner-3)footer-inner-3-link: link, 8-character label (.c-footer-inner-3__link, 8 instances)Desktop recipe
<div class="c-footer-inner-3-scope">
<nav class="c-footer-inner-3">
<a class="c-footer-inner-3__link" href="#">lorem ip</a>
<a class="c-footer-inner-3__link" href="#">lorem</a>
<a class="c-footer-inner-3__link" href="#">lorem i</a>
<a class="c-footer-inner-3__link" href="#">lore</a>
<a class="c-footer-inner-3__link" href="#">lorem ips</a>
<a class="c-footer-inner-3__link" href="#">lore</a>
<a class="c-footer-inner-3__link" href="#">lorem</a>
<a class="c-footer-inner-3__link" href="#">lorem i</a>
</nav>
</div>
.c-footer-inner-3-scope {
background-color: #58CC02;
color: #FFFFFF;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-3 {
display: flex;
flex-wrap: wrap;
border-spacing: 0px;
box-sizing: border-box;
color: #FFFFFF;
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 500;
line-height: 20px;
text-align: left;
}
.c-footer-inner-3__link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #FFFFFF;
cursor: pointer;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner-3__link:focus {
outline: none;
}
Mobile anatomy
footer-inner-3-mobile: the component root, a <nav> (.c-footer-inner-3-mobile)footer-inner-3-mobile-link: link, 8-character label (.c-footer-inner-3-mobile__link, 8 instances)Mobile recipe
<div class="c-footer-inner-3-mobile-scope">
<nav class="c-footer-inner-3-mobile">
<a class="c-footer-inner-3-mobile__link" href="#">lorem ip</a>
<a class="c-footer-inner-3-mobile__link" href="#">lorem</a>
<a class="c-footer-inner-3-mobile__link" href="#">lorem i</a>
<a class="c-footer-inner-3-mobile__link" href="#">lore</a>
<a class="c-footer-inner-3-mobile__link" href="#">lorem ips</a>
<a class="c-footer-inner-3-mobile__link" href="#">lore</a>
<a class="c-footer-inner-3-mobile__link" href="#">lorem</a>
<a class="c-footer-inner-3-mobile__link" href="#">lorem i</a>
</nav>
</div>
.c-footer-inner-3-mobile-scope {
background-color: #58CC02;
color: #FFFFFF;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-inner-3-mobile {
display: grid;
flex-wrap: wrap;
grid-template-columns: 1fr 1fr;
border-spacing: 0px;
box-sizing: border-box;
color: #FFFFFF;
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 500;
line-height: 20px;
text-align: left;
}
.c-footer-inner-3-mobile__link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #FFFFFF;
cursor: pointer;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
.c-footer-inner-3-mobile__link:focus {
outline: none;
}
States
footer-inner-3-link focus: outline nonefooter-inner-3-mobile-link focus: outline noneVerification: verified against the live page at desktop.
Anatomy
footer-navigation: the component root, a <nav> (.c-footer-navigation)footer-navigation-link: link, 8-character label (.c-footer-navigation__link, 8 instances)Recipe
<div class="c-footer-navigation-scope">
<nav class="c-footer-navigation">
<a class="c-footer-navigation__link" href="#">lorem ip</a>
<a class="c-footer-navigation__link" href="#">lorem</a>
<a class="c-footer-navigation__link" href="#">lorem i</a>
<a class="c-footer-navigation__link" href="#">lore</a>
<a class="c-footer-navigation__link" href="#">lorem ips</a>
<a class="c-footer-navigation__link" href="#">lore</a>
<a class="c-footer-navigation__link" href="#">lorem</a>
<a class="c-footer-navigation__link" href="#">lorem i</a>
</nav>
</div>
.c-footer-navigation-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-navigation {
display: flex;
flex-wrap: wrap;
justify-content: center;
border-spacing: 0px;
box-sizing: border-box;
color: #AFAFAF;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-footer-navigation__link {
display: block;
box-sizing: border-box;
margin: 12px;
color: #AFAFAF;
opacity: 0.8;
cursor: pointer;
font-size: 15px;
font-weight: 700;
line-height: 15px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-decoration-line: none;
}
States
Verification: verified against the live page at desktop.
Anatomy
accordion: the component root, a <div> (.c-accordion)accordion-group: inner flex row (.c-accordion__group)accordion-title: heading, 26 characters (.c-accordion__title)accordion-media: image placeholder, 24px (.c-accordion__media)accordion-group-2: inner group (.c-accordion__group-2)Recipe
<div class="c-accordion-scope">
<div class="c-accordion">
<div class="c-accordion__group">
<h3 class="c-accordion__title">lorem ipsum dolor sit amet</h3>
<span class="c-accordion__media" aria-hidden="true"></span>
</div>
<div class="c-accordion__group-2"></div>
</div>
</div>
.c-accordion-scope {
background-color: #FFFFFF;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-accordion {
display: inline-block;
border-spacing: 0px;
box-sizing: border-box;
color: #3C3C3C;
cursor: pointer;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-accordion__group {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
box-sizing: border-box;
width: 100%;
margin-bottom: 32px;
}
.c-accordion__title {
display: block;
box-sizing: border-box;
margin: 0px;
color: #4B4B4B;
font-size: 20px;
font-weight: 700;
line-height: 24px;
text-align: left;
}
.c-accordion__media {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 24px;
height: 24px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
}
.c-accordion__group-2 {
display: block;
height: 2px;
background-color: #E5E5E5;
color: #808080;
}
States
Verification: verified against the live page at desktop.
Anatomy
language-selector-2: the component root, a <button> (.c-language-selector-2)language-selector-2-text: label text, 0 characters (.c-language-selector-2__text)language-selector-2-text-2: label text, 14 characters (.c-language-selector-2__text-2, 2 instances)language-selector-2-media: image placeholder, 14px (.c-language-selector-2__media)Recipe
<div class="c-language-selector-2-scope">
<button class="c-language-selector-2" type="button">
<span class="c-language-selector-2__text">
<span class="c-language-selector-2__text-2">lorem ipsum do</span>
<span class="c-language-selector-2__text-2">lorem i</span>
</span>
<span class="c-language-selector-2__media" aria-hidden="true"></span>
</button>
</div>
.c-language-selector-2-scope {
background-color: #00CD9C1A;
color: #3C3C3C;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 20px;
}
.c-language-selector-2 {
display: flex;
align-items: center;
border-spacing: 0px;
box-sizing: border-box;
padding: 0px;
position: relative;
background-color: transparent;
color: #AFAFAF;
border: 0;
cursor: pointer;
transform: matrix(1, 0, 0, 1, 0, 0);
font-family: duolingo-sans, sans-serif;
font-size: 15px;
font-weight: 700;
line-height: 17.25px;
letter-spacing: 0.8px;
text-transform: uppercase;
text-align: center;
white-space: nowrap;
appearance: button;
transition: filter 0.2s ease;
}
.c-language-selector-2__text {
display: block;
box-sizing: border-box;
}
.c-language-selector-2__media {
display: block;
flex-shrink: 0;
box-sizing: border-box;
width: 14px;
height: 14px;
overflow-x: clip;
overflow-y: clip;
background-color: currentcolor;
margin-left: 8px;
}
.c-language-selector-2:focus {
outline: none;
}
States
Verification: flagged, the render matched 94% of the original pixels, below the 97% required after 2 correction attempts.
Anatomy
input: the component root, a <input> (.c-input), 3-character placeholderRecipe
<div class="c-input-scope">
<input class="c-input" type="text" placeholder="lor">
</div>
.c-input-scope {
background-color: #FFFFFF;
color: #777777;
font-family: duolingo-sans, sans-serif;
font-size: 25px;
font-weight: 700;
line-height: 34px;
}
.c-input {
display: inline-block;
border-spacing: 0px;
box-sizing: border-box;
width: 333px;
height: 16px;
padding: 0px;
background-color: #E5E5E5;
color: #101010;
border: 0;
border-radius: 8px;
cursor: default;
font-family: duolingo-sans, sans-serif;
font-size: 25px;
font-weight: 400;
line-height: 28.75px;
letter-spacing: normal;
text-transform: none;
text-align: start;
appearance: none;
}
.c-input:focus {
outline: none;
}
States
Verification: flagged, the render came out 13 px taller than the original (instance 3) after 2 correction attempts.
Anatomy
step-list-item: the component root, a <div> (.c-step-list-item)step-list-item-text: label text, 7 characters (.c-step-list-item__text)step-list-item-text-2: label text, 74 characters (.c-step-list-item__text-2)Recipe
<div class="c-step-list-item-scope">
<div class="c-step-list-item">
<div class="c-step-list-item__text">lorem i</div>
<div class="c-step-list-item__text-2">lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod temp</div>
</div>
</div>
.c-step-list-item-scope {
background-color: #FFFFFF;
color: #4B4B4B;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 25px;
}
.c-step-list-item {
display: inline-block;
border-spacing: 0px;
box-sizing: border-box;
color: #4B4B4B;
cursor: default;
font-family: duolingo-sans, sans-serif;
font-size: 17px;
font-weight: 500;
line-height: 25px;
text-align: left;
}
.c-step-list-item__text {
display: block;
box-sizing: border-box;
color: #58CC02;
font-size: 25px;
font-weight: 700;
line-height: 34px;
}
.c-step-list-item__text-2 {
display: block;
box-sizing: border-box;
color: #777777;
}
.c-step-list-item:hover {
transform-origin: 229.5px 42px;
}
.c-step-list-item:focus {
transform-origin: 229.5px 42px;
}
States
primary, #58CC02) for brand moments. The site uses it for the solid CTA, green headlines (card-title, step-list-item-text), the green header variant (header-inner-4) and the full footer field (footer-landing).card-3 does with 2px sides and a 4px bottom in hairline #E5E5E5, and as button-ghost-3 does with 1px sides and a 5px bottom.rounded.lg (16px) for cards and large buttons (card-3, card-5, button-secondary, button-ghost-3), rounded.md (12px) for compact buttons and badges (button-ghost, app-store-badge), and rounded.sm (8px) for inputs.hero-display, display-lg and display-md; Duolingo Sans for everything else.button, nav-link or label-caps (15px, 700, 0.8px tracking), or in button-lg (16px, 700, 0.64px) for larger buttons.button-ghost 50px, button-ghost-3 48px, button-secondary 44px.section-padding-y rhythm (96px) and cap content at footer-inner-inner-max-width (1048px).primary-light #A5ED6E and footer headings in primary-tint #D7FFB8 when they sit on the green footer field.rounded.sm, rounded.md and rounded.lg, and don't turn buttons into pills.rgba(0, 205, 156, 0.1) 0px 0px 0px 1440px, and it is a tint, not a lift.primary or secondary. Body copy belongs in ink #3C3C3C, ink-strong #4B4B4B or muted #777777.link (#0000EE) as a visible color. It is a browser default measured on logo anchors; visible links use secondary #1CB0F6.tertiary, accent-orange and navy are already spot colors.This analysis is based on two viewports only (desktop and mobile). No intermediate breakpoint values could be observed, so none are stated.
header-landing-mobile), but its logo shrinks from 179px wide (header-landing-logo-image) to 161px (header-landing-mobile-logo-image).header-inner) to 56px (header-inner-mobile) and swaps its links for a 32px menu toggle (header-inner-mobile-menu-toggle).header-inner-2-mobile).footer-landing) to 2014px on mobile (footer-landing-mobile) as its columns stack into one. Utility footers grow similarly as their nav wraps: footer-inner-2 goes from 79px to 118px (footer-inner-2-mobile), and footer-inner-3 goes from 39px to 156px (footer-inner-3-mobile).Measured buttons sit in or near the comfortable touch range: button-ghost at 50px, button-ghost-3 at 48px and button-secondary at 44px. Text-only controls are much shorter, such as button-ghost-2 and language-selector-2 at 17px. When they are used on mobile, pad their hit area out to at least the button-secondary height.
primary, secondary, ink, ink-strong, muted, muted-light and hairline. If a color you need is not a token, the design does not need it.card-3 pattern (2px sides, 4px bottom, hairline). Never add a blurred box-shadow.hero-display, display-lg and display-md. All other text is Duolingo Sans at 500 (body, body-lg) or 700 (everything else). Do not add weights, and do not add a third family.button, nav-link, label-caps or button-lg, so the wide 0.8px / 0.64px tracking carries through.rounded.lg for cards and large buttons, rounded.md for compact buttons and badges, and rounded.sm for inputs. Do not add pill or sharp-cornered variants.primary fills the CTA, the footer field and celebratory headlines. Inside the footer, use the component greens primary-light and primary-tint for text; do not use them elsewhere.section-padding-y and sit within footer-inner-inner-max-width. Add sections rather than densifying existing ones.button-ghost, button-secondary, button-ghost-3). The darker green lip shade is therefore not tokenized.card (flagged: the card-group-2 y did not reproduce the measured 273px after 2 correction attempts), card-5 (flagged: the card-5-group-2 height did not reproduce the measured 105px after 2 correction attempts), input (flagged: the render matched 94% of the original pixels, below the 97% required after 2 correction attempts), header-inner-4 (flagged: the render matched 86% of the original pixels, below the 96% required after 2 correction attempts) and button-secondary (flagged: the render came out 2 px wider than the original after 2 correction attempts). Treat their internal geometry as approximate.card-4 (not verifiable: what the page placed in it (photos, media, ads) covers most of it and nothing else differs, so the comparison could not be judged).header-landing-cta-hover (text #AFAFAF, radius 0px), looks like an artifact rather than a real design state. Pressed and active states (the lip collapsing on press) were not captured.section-padding-y, footer-inner-inner-max-width, button-ghost-3-padding-x). There is no base step, no card padding token and no grid-gap token.link token (#0000EE) is a browser default read from logo anchors, not an intentional brand color.Tệp DESIGN.md này viết bằng tiếng Anh, ngôn ngữ mà các agent lập trình AI dùng để đọc nó.
Được trích xuất từ website công khai của Duolingo - The world’s most popular way to learn, không phải hướng dẫn thương hiệu chính thức. Kiểm tra font chữ của trang web khác

Các design token được trích xuất từ phân tích tần suất CSSOM, không qua diễn giải của LLM.

Hệ thống thiết kế của Airbnb được xây dựng quanh một phông chữ biến thiên độc quyền duy nhất (Airbnb Cereal VF), với bảng màu trung tính gần như đơn sắc, lấy màu than đậm (#222222) và các sắc xám nhạt làm nền tảng. Màu hồng san hô đặc trưng của thương hiệu, "Rausch" (#ff385c), chỉ được dành riêng cho các nút kêu gọi hành động chính và logo. Bố cục là lưới thẻ ảnh đáp ứng, với tỷ lệ ảnh so với chữ rộng rãi, các thẻ bo góc mềm 20px và hệ thống bóng đổ môi trường nhiều lớp tạo chiều sâu tinh tế mà không gây tương phản gắt. Thanh tìm kiếm dạng viên thuốc nổi bật, quy tụ hành động cốt lõi của người dùng.
IKEA là hệ thống thiết kế phẳng, táo bạo trên trang chủ toàn cầu, lấy màu vàng IKEA đặc trưng (#ffdb00) làm bề mặt hành động chính và xanh IKEA (#0058a3) làm điểm nhấn cho logo thương hiệu. Toàn bộ hệ thống chữ được xây dựng trên một kiểu chữ tùy chỉnh duy nhất là Noto IKEA, dùng hai độ đậm 400 và 700 trên thang cỡ chữ được xác định chặt chẽ, từ chữ nội dung 14px đến tiêu đề hiển thị 51px. Độ nổi được truyền tải hoàn toàn bằng độ tương phản màu sắc và cấu trúc bố cục thay vì bóng đổ. Bố cục dùng container có chiều rộng tối đa 90rem với khoảng cách lưới 1.5rem trên máy tính, và một token bo góc 8px nhất quán áp dụng cho các phần tử tương tác. Nền trắng ngà (#fffefb) mang lại cảm giác ấm áp khi đặt cạnh chữ #111111 đậm nét, tạo nên trải nghiệm đọc có độ tương phản cao và dễ tiếp cận.

Trang chủ tiếp thị của Notion kết hợp phần hero màu xanh navy đậm (#02093a) với nội dung chính màu sáng (#f6f5f4), sử dụng một kiểu chữ tùy chỉnh (NotionInter) cho mọi vai trò văn bản. Thiết kế dựa trên lưới 12 cột với khoảng cách rãnh 28px, hệ thống bo góc kép gồm 8px cho thẻ và 9999px cho các nút dạng viên thuốc, cùng hệ thống đổ bóng nhiều lớp tăng dần cho các thành phần nổi. Màu xanh thương hiệu (#2537b1) dẫn dắt các nút kêu gọi hành động và điểm nhấn, trong khi thang màu xám ngữ nghĩa từ gray-200 đến gray-900 tạo nên cấu trúc phân cấp cho toàn bộ văn bản và bề mặt.

Hệ thống thiết kế của Railway là giao diện nền tối ưu tiên cho nền tảng dành cho nhà phát triển, được neo bởi các bề mặt xanh navy gần như đen sâu (#13111c, #0b0b0f), chữ off-white độ tương phản cao (#f7f7f8), và màu nhấn thương hiệu tím đặc trưng (#853bce / #553f83). Phần hero sử dụng IBM Plex Serif để tạo độ đậm mang phong cách biên tập, trong khi Inter đảm nhiệm toàn bộ nội dung giao diện, còn JetBrains Mono và SF Mono phục vụ các ngữ cảnh mã nguồn. Độ nổi khối được tạo bằng viền phát sáng trắng inset (rgba(255,255,255,0.2) 1.5px inset) thay vì bóng đổ, mang lại phong cách bảng kính mờ. Hệ thống khoảng cách dựa trên bội số 4px với nhịp điệu 8/12/16/24/32 rõ rệt. Bo góc chủ yếu là 4px, kết hợp có chọn lọc 8px và 16px cho thẻ và khung hero.

Trang chủ tiếp thị của Shopify sử dụng một khu vực hero video toàn màn hình đầy kịch tính, với nền gần đen (#02090a) tương phản rõ rệt với thanh điều hướng màu trắng phía trên. Màu nhấn thương hiệu chủ đạo là xanh bạc hà rực rỡ (#36f4a4), được dùng tiết chế cho các điểm nhấn và trạng thái tương tác. Kiểu chữ được phân chia giữa NeueHaasGrotesk cho tiêu đề hiển thị và mang tính biên tập, và Inter-Variable cho nội dung giao diện người dùng. Các nút kêu gọi hành động (CTA) có hình viên thuốc bo tròn hoàn toàn (border-radius: 9999px). Tổng thể hệ thống thiết kế tự tin, độ tương phản cao và đầy khát vọng, được xây dựng để biến khách truy cập thành người bán hàng.