LinkedIn DESIGN.md

Brands

This design system reflects LinkedIn's professional, corporate aesthetic focused on career networking, job discovery, and professional content sharing.

Raw DESIGN.md

At a glance

Group
Brands
Main color
#0a66c2Blue design systems
Font
Segoe UI

Colors in this file

  • #0a66c2

    LinkedIn Blue

  • #ffffff

    White

  • #e0dfdc

    Border Gray

  • #004182

    Dark Blue

  • #f3f2ef

    Light Gray

  • #000000

    Black

  • #057642

    Success Green

  • #c37d16

    Premium Gold

  • #70b5f9

    Light Blue

  • #7fc15e

    Light Green

1. Color Palette

Primary Colors

NameHexRGBUsage
LinkedIn Blue#0A66C2rgb(10, 102, 194)Primary brand color, CTAs, links, active states
Light Blue#70B5F9rgb(112, 181, 249)Hover states, secondary accents, skill badges
Dark Blue#004182rgb(0, 65, 130)Pressed states, emphasis, premium features

Neutral Colors

NameHexRGBUsage
Black#000000rgb(0, 0, 0)Primary text (with opacity)
Black 90%#000000E6rgba(0, 0, 0, 0.9)Primary body text
Black 60%#00000099rgba(0, 0, 0, 0.6)Secondary text, timestamps
Black 40%#00000066rgba(0, 0, 0, 0.4)Placeholder text, disabled states
White#FFFFFFrgb(255, 255, 255)Backgrounds, cards, modals
Light Gray#F3F2EFrgb(243, 242, 239)Page background, section dividers
Border Gray#E0DFDCrgb(224, 223, 220)Card borders, dividers

Semantic Colors

NameHexRGBUsage
Success Green#057642rgb(5, 118, 66)Success states, online indicators
Light Green#7FC15Ergb(127, 193, 94)Open to work banner, growth indicators
Warning Orange#B24020rgb(178, 64, 32)Error states, urgent notifications
Premium Gold#C37D16rgb(195, 125, 22)LinkedIn Premium features

Gradient Definitions

css/* Premium Gold Gradient */
background: linear-gradient(135deg, #E7A33E 0%, #C37D16 50%, #8B5A0B 100%);

/* Professional Blue Gradient (Cards) */
background: linear-gradient(180deg, #0A66C2 0%, #004182 100%);

/* Hover State Gradient */
background: linear-gradient(180deg, rgba(10, 102, 194, 0.08) 0%, rgba(10, 102, 194, 0) 100%);

2. Typography

Font Stack

cssfont-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;

Type Scale

StyleSizeWeightLine HeightLetter SpacingUsage
Display Large32px60040px-0.5pxProfile names (hero)
Display Medium24px60032px-0.25pxSection headings
Heading Large20px60028px0Card titles, job titles
Heading Medium18px60024px0Subheadings
Heading Small16px60022px0Component headers
Body Large16px40024px0Post content
Body Medium14px40020px0Primary body text
Body Small12px40016px0.1pxSecondary text, metadata
Caption11px40014px0.2pxTimestamps, helper text
Overline12px60016px1pxLabels, categories

Font Weights

WeightValueUsage
Regular400Body text, descriptions
Medium500Emphasized text, subtitles
Semibold600Headings, names, CTAs
Bold700Strong emphasis (rare)

Text Colors

TypeColorOpacityUsage
Primary#00000090%Headlines, body text
Secondary#00000060%Timestamps, secondary info
Tertiary#00000040%Placeholders, disabled
Link#0A66C2100%Clickable text, hashtags
Inverse#FFFFFF100%Text on dark backgrounds

3. Spacing System

Base Unit

Base unit: 4px

Spacing Scale

TokenValueUsage
spacing-00pxNo spacing
spacing-14pxTight inline spacing, icon gaps
spacing-28pxCompact component padding
spacing-312pxStandard inline spacing
spacing-416pxDefault component padding
spacing-520pxSection margins
spacing-624pxCard padding
spacing-832pxLarge section spacing
spacing-1040pxMajor section breaks
spacing-1248pxPage-level spacing
spacing-1664pxLarge gaps

Component Spacing

ComponentPaddingMarginGap
Feed Card16px0 0 8px 012px
Profile Card24px0 0 8px 016px
Navigation0 16px024px
Modal24pxauto16px
Dropdown8px 04px 0 0 00
Button6px 16px08px
Input12px 16px08px
Message Bubble12px 16px4px 0-

Layout Grid

css/* Desktop Feed Layout */
.feed-container {
  max-width: 1128px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 225px 1fr 300px;
  gap: 24px;
  padding: 24px;
}

/* Mobile Layout */
@media (max-width: 768px) {
  .feed-container {
    grid-template-columns: 1fr;
    padding: 0;
    gap: 8px;
  }
}

4. Border Radius

Radius Scale

TokenValueUsage
radius-none0pxSharp edges, dividers
radius-xs2pxTags, small badges
radius-sm4pxButtons, inputs
radius-md8pxCards, dropdowns
radius-lg12pxModals, large cards
radius-xl16pxFeatured content
radius-full9999pxAvatars, pills, circular buttons

Component Radius

ComponentRadius
Profile Avatar (Large)50% (circular)
Profile Avatar (Small)50% (circular)
Company Logo4px
Feed Card8px
Modal8px
Button Primary24px (pill)
Button Secondary24px (pill)
Input Field4px
Dropdown8px
Message Bubble18px
Skill Badge4px
Notification Badge50% (circular)
Post Image8px

5. Shadows and Elevation

Shadow Scale

LevelShadowUsage
elevation-0noneFlat elements
elevation-10 0 0 1px rgba(0, 0, 0, 0.08)Cards at rest
elevation-20 4px 12px rgba(0, 0, 0, 0.15)Cards on hover
elevation-30 8px 24px rgba(0, 0, 0, 0.2)Dropdowns, tooltips
elevation-40 12px 32px rgba(0, 0, 0, 0.25)Modals
elevation-50 20px 48px rgba(0, 0, 0, 0.3)Full-screen overlays

Component Shadows

css/* Feed Card */
.feed-card {
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08);
}

.feed-card:hover {
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08),
              0 4px 12px rgba(0, 0, 0, 0.12);
}

/* Dropdown Menu */
.dropdown {
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08),
              0 8px 24px rgba(0, 0, 0, 0.15);
}

/* Modal */
.modal {
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
}

/* Navigation Header (Fixed) */
.navigation {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

/* Messaging Composer */
.message-composer {
  box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.08);
}

Focus States

css/* Default Focus Ring */
:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px #FFFFFF,
              0 0 0 4px #0A66C2;
}

/* Input Focus */
input:focus {
  border-color: #0A66C2;
  box-shadow: 0 0 0 2px rgba(10, 102, 194, 0.2);
}

6. Iconography

Icon Sizes

SizeDimensionsUsage
Extra Small16pxInline icons, badges
Small20pxButton icons, list items
Medium24pxNavigation, primary actions
Large32pxEmpty states, featured
Extra Large48pxIllustrations, heroes

Icon Style Guidelines

  • Style: Outlined icons for navigation, filled for active states
  • Stroke Width: 1.5px - 2px consistent stroke
  • Corner Radius: 1px rounded corners on paths
  • Color: Inherit from parent, default #000000 at 60% opacity
  • Active Color: #0A66C2 for selected/active states

Core Navigation Icons

IconDefault StateActive StateSize
HomeOutlineFilled + Blue24px
NetworkOutlineFilled + Blue24px
JobsOutlineFilled + Blue24px
MessagingOutlineFilled + Blue24px
NotificationsOutlineFilled + Blue24px
ProfileAvatarBlue ring24px

Action Icons

IconUsageSize
Like (Thumbs up)Post reactions20px
CommentPost engagement20px
RepostShare content20px
SendShare via message20px
More (3 dots)Overflow menu20px
Close (X)Dismiss modals24px
SearchSearch input20px
Edit (Pencil)Edit actions20px
Settings (Gear)Configuration24px

Reaction Icons

ReactionColor
Like#0A66C2 (Blue)
Celebrate#44712E (Green)
Support#7A3E98 (Purple)
Love#DF704D (Coral)
Insightful#E7A33E (Gold)
Funny#7FC15E (Light Green)

7. Component Library

Buttons

Primary Button

css.btn-primary {
  background-color: #0A66C2;
  color: #FFFFFF;
  border: none;
  border-radius: 24px;
  padding: 6px 16px;
  font-size: 16px;
  font-weight: 600;
  line-height: 24px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.btn-primary:hover {
  background-color: #004182;
}

.btn-primary:active {
  background-color: #00264D;
}

.btn-primary:disabled {
  background-color: rgba(0, 0, 0, 0.08);
  color: rgba(0, 0, 0, 0.4);
  cursor: not-allowed;
}

Secondary Button (Outline)

css.btn-secondary {
  background-color: transparent;
  color: #0A66C2;
  border: 1px solid #0A66C2;
  border-radius: 24px;
  padding: 5px 15px;
  font-size: 16px;
  font-weight: 600;
  line-height: 24px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-secondary:hover {
  background-color: rgba(10, 102, 194, 0.08);
  border-color: #004182;
  color: #004182;
}

Tertiary Button (Text)

css.btn-tertiary {
  background-color: transparent;
  color: rgba(0, 0, 0, 0.6);
  border: none;
  padding: 6px 8px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}

.btn-tertiary:hover {
  background-color: rgba(0, 0, 0, 0.08);
  border-radius: 4px;
  color: rgba(0, 0, 0, 0.9);
}

Connect Button (Special)

css.btn-connect {
  background-color: transparent;
  color: #0A66C2;
  border: 1px solid #0A66C2;
  border-radius: 24px;
  padding: 5px 15px;
  font-size: 16px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.btn-connect:hover {
  background-color: rgba(10, 102, 194, 0.08);
  border-width: 2px;
  padding: 4px 14px;
}

Cards

Feed Post Card

css.feed-card {
  background: #FFFFFF;
  border-radius: 8px;
  border: 1px solid #E0DFDC;
  margin-bottom: 8px;
  overflow: hidden;
}

.feed-card-header {
  display: flex;
  padding: 12px 16px;
  gap: 8px;
}

.feed-card-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  flex-shrink: 0;
}

.feed-card-author {
  flex: 1;
}

.feed-card-name {
  font-size: 14px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
  line-height: 20px;
}

.feed-card-headline {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  line-height: 16px;
}

.feed-card-timestamp {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
}

.feed-card-content {
  padding: 0 16px 12px;
  font-size: 14px;
  line-height: 20px;
  color: rgba(0, 0, 0, 0.9);
}

.feed-card-actions {
  display: flex;
  border-top: 1px solid #E0DFDC;
  padding: 4px 8px;
}

.feed-card-action {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 12px 8px;
  border-radius: 4px;
  color: rgba(0, 0, 0, 0.6);
  font-size: 14px;
  font-weight: 600;
}

.feed-card-action:hover {
  background-color: rgba(0, 0, 0, 0.08);
  color: rgba(0, 0, 0, 0.9);
}

Profile Card (Sidebar)

css.profile-card {
  background: #FFFFFF;
  border-radius: 8px;
  border: 1px solid #E0DFDC;
  overflow: hidden;
}

.profile-card-banner {
  height: 56px;
  background: linear-gradient(135deg, #0A66C2 0%, #004182 100%);
}

.profile-card-avatar-container {
  display: flex;
  justify-content: center;
  margin-top: -40px;
}

.profile-card-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  border: 2px solid #FFFFFF;
}

.profile-card-info {
  text-align: center;
  padding: 12px 16px;
}

.profile-card-name {
  font-size: 16px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}

.profile-card-headline {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  margin-top: 4px;
}

Job Listing Card

css.job-card {
  display: flex;
  padding: 16px;
  gap: 12px;
  border-bottom: 1px solid #E0DFDC;
  background: #FFFFFF;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.job-card:hover {
  background-color: #F3F2EF;
}

.job-card-logo {
  width: 56px;
  height: 56px;
  border-radius: 4px;
  flex-shrink: 0;
}

.job-card-content {
  flex: 1;
}

.job-card-title {
  font-size: 16px;
  font-weight: 600;
  color: #0A66C2;
  line-height: 24px;
}

.job-card-title:hover {
  text-decoration: underline;
}

.job-card-company {
  font-size: 14px;
  color: rgba(0, 0, 0, 0.9);
  line-height: 20px;
}

.job-card-meta {
  font-size: 14px;
  color: rgba(0, 0, 0, 0.6);
  line-height: 20px;
}

.job-card-insights {
  margin-top: 8px;
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
}

Connection Card

css.connection-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px 16px;
  background: #FFFFFF;
  border-radius: 8px;
  border: 1px solid #E0DFDC;
  text-align: center;
}

.connection-card-avatar {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  margin-bottom: 12px;
}

.connection-card-name {
  font-size: 16px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}

.connection-card-headline {
  font-size: 14px;
  color: rgba(0, 0, 0, 0.6);
  margin-top: 4px;
  max-height: 40px;
  overflow: hidden;
}

.connection-card-mutual {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  margin-top: 8px;
}

.connection-card-actions {
  margin-top: 16px;
  display: flex;
  gap: 8px;
}

Form Elements

Text Input

css.input-text {
  width: 100%;
  padding: 12px 16px;
  border: 1px solid rgba(0, 0, 0, 0.4);
  border-radius: 4px;
  font-size: 14px;
  line-height: 20px;
  color: rgba(0, 0, 0, 0.9);
  background: #FFFFFF;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.input-text::placeholder {
  color: rgba(0, 0, 0, 0.4);
}

.input-text:hover {
  border-color: rgba(0, 0, 0, 0.6);
}

.input-text:focus {
  outline: none;
  border-color: #0A66C2;
  box-shadow: 0 0 0 2px rgba(10, 102, 194, 0.2);
}

.input-text:disabled {
  background: #F3F2EF;
  color: rgba(0, 0, 0, 0.4);
  cursor: not-allowed;
}

Search Input

css.search-input-container {
  position: relative;
  width: 100%;
  max-width: 280px;
}

.search-input {
  width: 100%;
  padding: 8px 16px 8px 40px;
  background: #EEF3F8;
  border: none;
  border-radius: 4px;
  font-size: 14px;
  color: rgba(0, 0, 0, 0.9);
}

.search-input::placeholder {
  color: rgba(0, 0, 0, 0.6);
}

.search-input:focus {
  outline: none;
  background: #FFFFFF;
  box-shadow: 0 0 0 2px #0A66C2;
}

.search-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(0, 0, 0, 0.6);
}

Navigation

Top Navigation Bar

css.nav-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 52px;
  background: #FFFFFF;
  border-bottom: 1px solid #E0DFDC;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  z-index: 100;
}

.nav-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: 1128px;
}

.nav-logo {
  width: 34px;
  height: 34px;
}

.nav-items {
  display: flex;
  align-items: center;
  gap: 8px;
}

.nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 12px;
  min-width: 60px;
  color: rgba(0, 0, 0, 0.6);
  text-decoration: none;
  font-size: 12px;
  font-weight: 400;
}

.nav-item:hover {
  color: rgba(0, 0, 0, 0.9);
}

.nav-item.active {
  color: rgba(0, 0, 0, 0.9);
  border-bottom: 2px solid rgba(0, 0, 0, 0.9);
}

.nav-icon {
  width: 24px;
  height: 24px;
  margin-bottom: 2px;
}

Messaging

Message Thread Item

css.message-thread {
  display: flex;
  padding: 12px 16px;
  gap: 8px;
  cursor: pointer;
  transition: background-color 0.15s ease;
}

.message-thread:hover {
  background-color: rgba(0, 0, 0, 0.08);
}

.message-thread.active {
  background-color: #E8F4FD;
}

.message-thread.unread .message-preview {
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}

.message-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  flex-shrink: 0;
  position: relative;
}

.message-avatar.online::after {
  content: '';
  position: absolute;
  bottom: 2px;
  right: 2px;
  width: 10px;
  height: 10px;
  background: #057642;
  border: 2px solid #FFFFFF;
  border-radius: 50%;
}

.message-content {
  flex: 1;
  min-width: 0;
}

.message-name {
  font-size: 14px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}

.message-preview {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.message-time {
  font-size: 12px;
  color: rgba(0, 0, 0, 0.6);
  flex-shrink: 0;
}

Message Bubble

css.message-bubble {
  max-width: 70%;
  padding: 12px 16px;
  border-radius: 18px;
  font-size: 14px;
  line-height: 20px;
  word-wrap: break-word;
}

.message-bubble.sent {
  background: #0A66C2;
  color: #FFFFFF;
  border-bottom-right-radius: 4px;
  margin-left: auto;
}

.message-bubble.received {
  background: #F3F2EF;
  color: rgba(0, 0, 0, 0.9);
  border-bottom-left-radius: 4px;
}

Notification Badge

css.notification-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  background: #C83636;
  color: #FFFFFF;
  font-size: 12px;
  font-weight: 600;
  border-radius: 9px;
  position: absolute;
  top: -4px;
  right: -4px;
}

Modal

css.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.75);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.modal {
  background: #FFFFFF;
  border-radius: 8px;
  width: 100%;
  max-width: 552px;
  max-height: 90vh;
  overflow: hidden;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
}

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 24px;
  border-bottom: 1px solid #E0DFDC;
}

.modal-title {
  font-size: 20px;
  font-weight: 600;
  color: rgba(0, 0, 0, 0.9);
}

.modal-close {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  cursor: pointer;
  color: rgba(0, 0, 0, 0.6);
}

.modal-close:hover {
  background: rgba(0, 0, 0, 0.08);
}

.modal-body {
  padding: 16px 24px;
  overflow-y: auto;
  max-height: calc(90vh - 140px);
}

.modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 16px 24px;
  border-top: 1px solid #E0DFDC;
}

8. Animation & Motion

Timing Functions

css/* Standard easing */
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);

/* Deceleration (entering) */
--ease-decelerate: cubic-bezier(0, 0, 0.2, 1);

/* Acceleration (exiting) */
--ease-accelerate: cubic-bezier(0.4, 0, 1, 1);

/* Sharp/Emphasized */
--ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);

Duration Scale

TokenDurationUsage
duration-instant100msHover states, color changes
duration-fast150msButton presses, micro-interactions
duration-normal200msStandard transitions
duration-slow300msExpanding panels, modals entering
duration-slower400msComplex animations
duration-slowest500msPage transitions

Standard Transitions

css/* Button hover */
.btn {
  transition: background-color 150ms var(--ease-standard),
              border-color 150ms var(--ease-standard),
              color 150ms var(--ease-standard);
}

/* Card hover */
.card {
  transition: box-shadow 200ms var(--ease-standard),
              transform 200ms var(--ease-standard);
}

.card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Link underline */
.link {
  transition: color 100ms var(--ease-standard);
}

/* Dropdown */
.dropdown {
  transition: opacity 200ms var(--ease-decelerate),
              transform 200ms var(--ease-decelerate);
}

Animation Keyframes

css/* Fade In */
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Slide In From Bottom */
@keyframes slideInUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Modal Enter */
@keyframes modalEnter {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* Notification Pulse */
@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
  }
}

/* Skeleton Loading */
@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

.skeleton {
  background: linear-gradient(
    90deg,
    #F3F2EF 0%,
    #E8E8E8 50%,
    #F3F2EF 100%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

/* Typing Indicator */
@keyframes typingBounce {
  0%, 60%, 100% {
    transform: translateY(0);
  }
  30% {
    transform: translateY(-4px);
  }
}

.typing-dot {
  animation: typingBounce 1.4s infinite;
}

.typing-dot:nth-child(2) {
  animation-delay: 0.2s;
}

.typing-dot:nth-child(3) {
  animation-delay: 0.4s;
}

Component Animations

css/* Post Reaction */
.reaction-btn.active {
  animation: pulse 300ms var(--ease-standard);
}

/* New notification */
.notification-badge.new {
  animation: pulse 600ms var(--ease-standard) infinite;
}

/* Feed post appearing */
.feed-card {
  animation: slideInUp 300ms var(--ease-decelerate);
}

/* Modal */
.modal {
  animation: modalEnter 300ms var(--ease-decelerate);
}

/* Toast notification */
.toast {
  animation: slideInUp 300ms var(--ease-decelerate);
}

9. Responsive Breakpoints

Breakpoint Scale

NameMin WidthMax WidthUsage
Mobile Small0px479pxSmall phones
Mobile480px767pxStandard phones
Tablet768px1023pxTablets, small laptops
Desktop1024px1279pxStandard desktops
Desktop Large1280px1535pxLarge desktops
Desktop XL1536px+-Ultra-wide monitors

Media Query Mixins

css/* Mobile First Approach */
@media (min-width: 768px) { /* Tablet and up */ }
@media (min-width: 1024px) { /* Desktop and up */ }
@media (min-width: 1280px) { /* Large desktop and up */ }

/* Desktop First Approach */
@media (max-width: 1023px) { /* Tablet and below */ }
@media (max-width: 767px) { /* Mobile only */ }

Responsive Layout Patterns

Feed Layout

css/* Mobile */
.feed-layout {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.feed-sidebar-left,
.feed-sidebar-right {
  display: none;
}

/* Tablet */
@media (min-width: 768px) {
  .feed-layout {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 24px;
    padding: 24px;
    max-width: 1024px;
    margin: 0 auto;
  }
  
  .feed-sidebar-left {
    display: block;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .feed-layout {
    grid-template-columns: 225px 1fr 300px;
    max-width: 1128px;
  }
  
  .feed-sidebar-right {
    display: block;
  }
}

Navigation Responsive

css/* Mobile Navigation */
.nav-mobile {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-around;
  background: #FFFFFF;
  border-top: 1px solid #E0DFDC;
  padding: 8px 0;
  z-index: 100;
}

.nav-desktop {
  display: none;
}

/* Desktop Navigation */
@media (min-width: 768px) {
  .nav-mobile {
    display: none;
  }
  
  .nav-desktop {
    display: flex;
  }
}

Card Grid Responsive

css/* Connection Cards Grid */
.connection-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: 1fr;
}

@media (min-width: 480px) {
  .connection-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 768px) {
  .connection-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }
}

@media (min-width: 1024px) {
  .connection-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

Typography Responsive

css/* Base mobile sizes */
.display-large {
  font-size: 24px;
  line-height: 32px;
}

.heading-large {
  font-size: 18px;
  line-height: 24px;
}

/* Desktop sizes */
@media (min-width: 768px) {
  .display-large {
    font-size: 32px;
    line-height: 40px;
  }
  
  .heading-large {
    font-size: 20px;
    line-height: 28px;
  }
}

Touch Targets

css/* Minimum touch target for mobile */
.touch-target {
  min-width: 44px;
  min-height: 44px;
}

/* Larger touch targets on mobile */
@media (max-width: 767px) {
  .btn {
    min-height: 48px;
    padding: 12px 24px;
  }
  
  .nav-item {
    min-width: 64px;
    padding: 12px 8px;
  }
}

Container Widths

css.container {
  width: 100%;
  margin: 0 auto;
  padding: 0 16px;
}

@media (min-width: 768px) {
  .container {
    padding: 0 24px;
    max-width: 720px;
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1128px;
  }
}

Design Tokens Summary

css:root {
  /* Colors */
  --color-primary: #0A66C2;
  --color-primary-light: #70B5F9;
  --color-primary-dark: #004182;
  --color-background: #F3F2EF;
  --color-surface: #FFFFFF;
  --color-border: #E0DFDC;
  --color-text-primary: rgba(0, 0, 0, 0.9);
  --color-text-secondary: rgba(0, 0, 0, 0.6);
  --color-text-disabled: rgba(0, 0, 0, 0.4);
  --color-success: #057642;
  --color-error: #B24020;
  --color-premium: #C37D16;
  
  /* Typography */
  --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
  --font-size-xs: 11px;
  --font-size-sm: 12px;
  --font-size-md: 14px;
  --font-size-lg: 16px;
  --font-size-xl: 18px;
  --font-size-2xl: 20px;
  --font-size-3xl: 24px;
  --font-size-4xl: 32px;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  
  /* Spacing */
  --spacing-1: 4px;
  --spacing-2: 8px;
  --spacing-3: 12px;
  --spacing-4: 16px;
  --spacing-5: 20px;
  --spacing-6: 24px;
  --spacing-8: 32px;
  --spacing-10: 40px;
  --spacing-12: 48px;
  
  /* Border Radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-pill: 24px;
  --radius-full: 9999px;
  
  /* Shadows */
  --shadow-card: 0 0 0 1px rgba(0, 0, 0, 0.08);
  --shadow-card-hover: 0 0 0 1px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.12);
  --shadow-dropdown: 0 0 0 1px rgba(0, 0, 0, 0.08), 0 8px 24px rgba(0, 0, 0, 0.15);
  --shadow-modal: 0 12px 32px rgba(0, 0, 0, 0.2);
  
  /* Transitions */
  --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
  --transition-normal: 200ms cubic-bezier(0.4, 0, 0.2, 1);
  --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);
  
  /* Z-Index */
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-fixed: 300;
  --z-modal-backdrop: 400;
  --z-modal: 500;
  --z-tooltip: 600;
}

This design system reflects LinkedIn's professional, corporate aesthetic focused on career networking, job discovery, and professional content sharing.

Use it with your agent

Save the file as DESIGN.md in your project root, then ask your agent to follow it for UI work. Or let the agent fetch it over MCP.

Download

curl -o DESIGN.md https://www.uiskillbook.com/design-md/linkedin.md

MCP server

https://www.uiskillbook.com/mcp

MCP tool call

get_design_md({ "slug": "linkedin" })