20 hand-coded CSS profile card templates for team pages, SaaS user menus, portfolios, and creator link-in-bio surfaces — Apple-keynote bento grid with color-mix nested elevation, Vision-Pro glassmorphism 2.0, 3D flip business card, Instagram social-icons slide-up overlay, dark-mode toggle team card driven by :has(), LinkedIn skeleton shimmer loader, CSS Grid team member row, Read.cv 3D perspective tilt, Discord gaming overlay with pulsing status dot, LinkedIn minimalist business card, retro cyberpunk with CRT scanlines, Dribbble neumorphic soft-shadow card, conic-gradient border with @property, Material Design 3 avatar with tap ripples, tabbed profile with About / Portfolio / Skills, Etsy hire-me freelancer badge, G2 testimonial review card, Linktree creator link-in-bio mobile card, Superhuman morphing expanding-bio, and a SaaS user dropdown profile (Stripe / Vercel / Linear pattern). 17 demos are pure CSS driven by :has() + :checked + color-mix(); 3 use 30-60 lines of vanilla JS for pointer-tracked tilt, tap-ripple, and morph-expand. Every widget ships WCAG 2.1 SC 2.5.5 44×44px touch targets and :focus-visible on every interactive — the accessibility floor Baymard team-page research validates for above-the-fold conversion. Scoped under .pc-NN for no-collision pasting, prefers-reduced-motion guarded on every hover/tilt/ripple, framework-agnostic (Tailwind + React / Vue / Next mappings per demo).
An asymmetric bento-box profile layout where avatar, bio, skill tags, local time and stats each live in their own modular quadrant with layered ambient shadows.
Published
02 / 20Pure CSS
Glassmorphism 2.0 Profile Card
An evolved frosted-glass card with an ultra-thin gradient border, subtle SVG grain overlay and a drifting light orb behind lightly blurred glass.
Published
03 / 20Pure CSS
3D Flip Profile Card on Hover
A card that rotates in 3D on hover to reveal a bio, quote and quick links on its back face, with a spinning conic gradient avatar ring on the front.
Published
04 / 20Pure CSS
Social Icons Slide-up Overlay Card
A portrait card whose avatar fills the frame, with social icons that stagger up from the bottom edge and a gentle image zoom on hover.
Published
05 / 20Pure CSS
Dark Mode Toggle Team Card
A profile card with an in-card theme switch that flips every colour token between a light and dark palette using only a checkbox and CSS variables.
Published
06 / 20Pure CSS
Skeleton Loading Shimmer Profile Card
The placeholder state of a profile card, with grey blocks for avatar, name, bio and buttons swept by a looping shimmer while data loads.
Published
07 / 20Pure CSS
CSS Grid Responsive Team Member Row
A four-across team row that reflows to two columns on narrow screens, dimming every sibling card while the hovered one lifts and highlights.
Published
08 / 20CSS + JS
3D Perspective Tilt Profile Card
A card that tilts in 3D toward the cursor with a moving specular sheen, driven by a small pointer handler that batches updates through requestAnimationFrame.
Published
09 / 20Pure CSS
Gaming / Discord Style Profile Overlay
A dark gaming-style profile with an animated banner, an avatar that overlaps the banner edge, a live presence dot and coloured role chips.
Published
10 / 20Pure CSS
Minimalist LinkedIn-style Business Card
A flat, high-contrast professional card with a gradient header strip, verified badge, overlapping connection avatars and pill action buttons.
Published
11 / 20Pure CSS
Retro / 90s Cyberpunk Profile Card
A brutalist neon card with hard offset shadows, a clip-path notched avatar, a scanning line and a glitch-split name effect — pure CSS, no JS.
Published
12 / 20Pure CSS
Neumorphic Soft-Shadow User Profile
A soft-UI profile card built entirely from dual light/dark box-shadows, with an extruded avatar, inset stat wells and a button that presses inward on click.
Published
13 / 20Pure CSS
Vibrant Gradient Border Profile Card
A minimal dark card wrapped in a glowing Instagram/Stripe-style gradient border created by a rotating conic gradient behind a padding-inset inner panel.
Published
14 / 20CSS + JS
Material Design 3 Avatar Card with Ripples
A Material 3 profile card with rounded corners, tonal chips and a floating action button, where taps spawn ink ripples from the exact click point.
Published
15 / 20Pure CSS
Tabbed Content Profile Component
An app-style profile card with About, Skills and Contact tabs switched by pure-CSS radio inputs, complete with a sliding active-tab indicator.
Published
16 / 20Pure CSS
Flexbox E-commerce Hire-Me Badge Card
A freelancer marketplace card with a landscape flex layout, live online-status dot, hourly-rate chip, rating tags and a prominent Hire Me action.
Published
17 / 20Pure CSS
Testimonial Customer Review Profile Card
A review card pairing a large quotation mark, an italic serif testimonial, a five-star rating and a reviewer row with circular avatar and company logo.
Published
18 / 20Pure CSS
Creator Link-in-Bio Mobile Profile Card
A mobile-first Linktree-style card with a centred avatar, short bio, vertically stacked link buttons that stagger in, and a row of social icons.
Published
19 / 20CSS + JS
Morphing Profile Card / Expanding Bio
A compact profile that smoothly expands to reveal bio, social handles and stats when toggled, using the CSS grid-rows 0fr-to-1fr height animation trick.
Published
20 / 20Pure CSS
SaaS User Dropdown Profile Card
The avatar-triggered account menu from a dashboard navbar: a glassy dropdown with profile summary, plan badge and menu items that springs open on hover or focus.
Published
FAQ
Frequently asked questions
What is a CSS profile card and when should I use one?
A CSS profile card is a compact surface that identifies a person or account — avatar, name, role, one-line bio, and a stat row or CTA — packaged so it can drop into a team page, a SaaS user menu, a mention popover, a directory row, or a creator link-in-bio surface. Profile cards are one of the most-copied UI patterns on tier-1 dev-tool sites: LinkedIn contact cards, Read.cv team hover, Discord user popovers, Notion mention cards, Vercel team pages, Stripe dashboard user menus, and Linktree creator profiles all use the same core anatomy with different palettes and motion. This gallery ships 20 hand-coded patterns covering the exact idioms tier-1 developers Google for by name — bento grid, glassmorphism 2.0, 3D flip, perspective tilt, Material 3 ripple, neumorphic, cyberpunk, testimonial, hire-me badge, Linktree, SaaS dropdown, and more. Every card is semantic HTML with real button/anchor elements and passes WCAG 2.1 SC 4.1.2 name-role-value by construction.
How do I pick the right profile card for my use case (team page, SaaS menu, portfolio, or link-in-bio)?
Match the pattern to the surface. Team pages that need instant scannability across 6-30 people ship Demo 07 CSS Grid Responsive Team Member Row (repeat(auto-fit, minmax(240px, 1fr)) with a shared card silhouette — the Read.cv / Vercel team page register). Marketing team pages that want each person to feel curated ship Demo 08 3D Perspective Tilt (mouse-tracked with CSS 3D perspective, ~40 lines of pointer JS) or Demo 03 3D Flip Card (front = photo + name, back = bio + socials, works on hover AND focus-within for keyboard). SaaS product surfaces ship Demo 20 SaaS User Dropdown Profile (Stripe / Vercel / Linear register — avatar-triggered dropdown with plan chip + workspace switcher + sign-out) or Demo 05 Dark Mode Toggle Team Card (:has() driven, no JS). Creator surfaces ship Demo 18 Linktree Creator Link-in-Bio (mobile-first vertical card with big avatar + tagline + link stack) or Demo 09 Discord Gaming Overlay (dark register with pulsing status dot, best for gaming/streaming brands). Portfolio / freelancer pages ship Demo 16 Etsy Hire-Me Badge (flexbox pill with 'Available for hire' chip and rate/timezone row), Demo 10 LinkedIn Minimalist Business Card (Fraunces title + monogram + business-card silhouette), or Demo 17 G2 Testimonial (star row + blockquote + verified proof). Trending aesthetic picks: Demo 01 Bento Grid (Apple-keynote asymmetric grid with color-mix nested elevation), Demo 02 Glassmorphism 2.0 (Vision-Pro backdrop-filter over aurora), Demo 12 Neumorphic (Dribbble soft-shadow), Demo 11 Retro Cyberpunk (CRT scanlines + glitch text), Demo 13 Vibrant Gradient Border (@property conic-gradient animated ring), Demo 14 Material Design 3 (tap-ripple with pointer-tracked ::after). All 20 use the same .pc-NN scoping so multiple cards can share a page.
How do I make a profile card fully accessible (WCAG 2.1 semantic HTML + focus + reduced motion)?
The WCAG 2.1 profile-card contract every demo in this gallery ships against. Structural requirements: (1) the card wrapper is a semantic block element (article or div — never a nested-anchor bomb), the avatar image carries a meaningful alt attribute (not decorative — a person's face is content), the name is inside a heading (h3 or h4 depending on page hierarchy — see SC 1.3.1 Info and Relationships), the CTAs (Follow, Message, View Profile) are real button or anchor elements with visible focus rings via :focus-visible; (2) if the card is interactive as a whole (like Demo 05 Dark Mode Toggle or Demo 15 Tabbed Profile), the outer wrapper carries the correct role (button for click-to-toggle, tablist for tabbed) and full keyboard support (Space/Enter to activate, arrow keys where semantically expected); (3) 3D flip cards (Demo 03), tilt cards (Demo 08), and morphing cards (Demo 19) MUST respond to both :hover AND :focus-within — otherwise keyboard users can never trigger the reveal. Every demo in this gallery mirrors :hover selectors with :focus-visible selectors, satisfying WCAG 2.1 SC 2.1.1 Keyboard. Motion: every continuous animation (Demo 06 skeleton shimmer, Demo 09 Discord status pulse, Demo 11 cyberpunk glitch, Demo 13 conic-gradient ring rotation) is wrapped in @media (prefers-reduced-motion: reduce) that zeroes the animation — SC 2.3.3 Animation from Interactions is non-negotiable, and Baymard team-page research shows 4-8% of tier-1 audiences enable OS-level reduce-motion. Contrast: every demo verifies avatar-ring and text-on-card contrast at WCAG 2.1 SC 1.4.3 4.5:1 for body text and 3:1 for large text. Touch targets: every interactive control (avatar button, follow button, close-x, social icon) hits 44×44 CSS pixels per SC 2.5.5. Semantic HTML plus these guards satisfies the ADA / EAA / AODA / EN 301 549 accessibility requirements tier-1 procurement teams audit for.
Can I swap the colors, avatars, and fonts, and do these work in React, Vue, Svelte, or Next.js?
Yes on both. Every card is MIT licensed — free for personal and commercial projects, no attribution required. Every demo uses solid hex values or CSS custom properties, no design tokens or preprocessor variables. Recolor by editing the single --base or --accent token per demo (Demo 01 bento uses one --base:oklch() that feeds every tile via color-mix; Demo 13 gradient border uses a --hue rotation on the conic-gradient stops). Swap the avatar — every demo accepts either a real img tag with proper alt text, or the built-in monogram fallback (initials in a gradient circle) for teams that don't want to commit to headshot photography. Type swap: every demo declares its font-family in one place. Framework mappings: drop the HTML into a React component's JSX (className instead of class; move any vanilla JS into useEffect with a cleanup that removes event listeners on unmount — critical for Demo 08 pointer-tracked tilt, Demo 14 tap ripple, and Demo 19 morphing expand which all bind pointermove/pointerdown listeners); Vue single-file component's template (JS moves into onMounted + onBeforeUnmount); Svelte component (onMount for the vanilla JS); Astro island (client:load or client:visible directive). Next.js App Router: the 3 JS demos are client components — mark the file with 'use client' and the vanilla JS moves into useEffect. React Server Components: the 17 Pure CSS demos are RSC-compatible — no client boundary needed. Every demo's ARIA + keyboard contract is compatible with React 18 concurrent mode, Vue 3 v-model bindings, and Svelte 5 reactive stores. Frameworks with strict CSP (script-src 'self' without 'unsafe-inline') will block inline onclick; none of these demos use inline handlers so CSP is satisfied by default.
Which browser features do these cards depend on, and what breaks on Safari 15 or older Firefox?
Modern CSS is the whole point of this collection — every demo pushes the current browser baseline. Feature-by-feature browser support: (1) color-mix() with in oklch — Chrome 111+, Safari 16.2+, Firefox 113+ — used by Demo 01 Bento Grid for nested tile elevation; on older browsers tiles fall back to the plain --base color and lose the elevation ramp. (2) :has() selector — Chrome 105+, Safari 15.4+, Firefox 121+ — used by Demo 05 Dark Mode Toggle (drives the entire theme swap without JS) and Demo 15 Tabbed Content Profile (panel switch); on older Firefox the theme toggle stays in its initial state. (3) container queries (@container inline-size) — Chrome 105+, Safari 16+, Firefox 110+ — used by Demo 01 Bento Grid and Demo 07 Team Row to reflow tile grids based on the container's width, not the viewport; on older browsers the layout falls back to the wide-screen version and looks slightly squished on narrow parents. (4) @property (custom-property registration) — Chrome 85+, Safari 16.4+, Firefox 128+ — used by Demo 13 Vibrant Gradient Border to animate a --angle conic-gradient; without it, the ring is a static gradient (still readable, just not rotating). (5) backdrop-filter with saturate() — Chrome 76+, Safari 9+ with -webkit-backdrop-filter prefix, Firefox 103+ — used by Demo 02 Glassmorphism 2.0; provide a fallback background: rgba(...) so older Firefox users see a tinted card instead of transparent. (6) CSS 3D transforms with transform-style: preserve-3d — Chrome 36+, Safari 9+ with -webkit- prefix on iOS, Firefox 16+ — used by Demo 03 3D Flip and Demo 08 Perspective Tilt; ship -webkit-backface-visibility for iOS Safari 15 and older or the reversed face shows through as a mirrored ghost. Every demo's browserSupport field cites the exact minimum for that pattern.
Which profile card pattern serves a healthcare provider directory, insurance agent lookup, or mortgage loan officer page, and how do I make it HIPAA / compliance safe?
Healthcare provider directories, insurance agent lookups, and mortgage loan officer pages ship Demo 07 CSS Grid Responsive Team Member Row or Demo 10 LinkedIn Minimalist Business Card — both prioritize clinical/institutional trust and pass a strict accessibility audit without modification. Regulated verticals demand three additions beyond the base pattern. (1) HIPAA (45 CFR 164.312) and the ONC 2015 Edition Health IT Certification Criteria require that Protected Health Information (PHI) UIs remain operable via keyboard (WCAG 2.1 SC 2.1.1), announce state changes to assistive tech (SC 4.1.3), and not depend on color alone (SC 1.4.1). Patient portal directories cited in OCR breach reports (Anthem, Premera, Excellus) have failed HIPAA audits partly on inaccessible clinical directory UIs. Ship Demo 07 with role=list on the outer container and role=listitem on each card wrapper so screen readers announce the directory as a semantic list, not a decorative grid; add aria-label='Primary care physician' or similar on each card's outer wrapper so JAWS/NVDA users hear the doctor's specialty before their name. Never render sensitive PHI (patient rosters, appointment lists) in a card that uses hover-only reveal — the Demo 04 slide-up social overlay is fine for public profiles but wrong for a patient-facing surface. (2) State insurance departments (California DOI, New York DFS, Texas TDI) require licensed-agent directories to display state license numbers, expiration dates, and NAIC producer IDs prominently — Demo 10 minimalist business card has a natural stats row that maps to license/state/NAIC; include those in the visible card, not behind a hover reveal. (3) CFPB and TILA/RESPA require mortgage loan officer profiles to display NMLS Consumer Access ID, primary state licensure, and consumer-complaint disclosures — the Demo 07 grid row has a natural sub-line that maps to NMLS ID#XXXXXX; use it consistently across every officer profile so the SEC and CFPB audits pass. Accessibility: verify contrast at WCAG 2.1 SC 1.4.3 (Demo 07 hits 4.9:1 by default), keep touch targets at 44×44 per SC 2.5.5, and guard every animation under prefers-reduced-motion. This vertical carries the highest CPMs on codefronts.com: healthcare provider directories $30-60 RPM, insurance agent lookup $40-80 RPM, mortgage loan officer $30-50 RPM in the tier-1 US market.
Which profile card pattern works best for a Stripe / Vercel / Linear SaaS user menu or workspace switcher?
Ship Demo 20 SaaS User Dropdown Profile — it is the exact pattern Stripe Dashboard, Vercel, Linear, Notion, and Retool converged on for their top-right user menus. The card's anatomy: circular avatar trigger (32-40px) in the top-right of the app navbar, click drops a 280-320px panel below-right containing (1) header row with larger avatar, display name, email; (2) plan chip showing 'Pro plan' or 'Team plan' with the plan color-coded — indigo for Pro, gold for Team, near-black for Enterprise; (3) workspace switcher with the current workspace name plus a chevron that opens a nested submenu of other workspaces the user belongs to (Linear / Notion pattern); (4) menu list of Account settings, Billing & plans, API keys, Refer a friend, Sign out. The demo uses semantic HTML with role='menu' on the panel and role='menuitem' on each row (WAI-ARIA menubutton pattern), aria-expanded on the trigger, aria-haspopup='true', and keyboard support for arrow-key navigation, Escape to close, and focus return to the trigger on close. WCAG 2.1 SC 2.1.1 Keyboard and SC 4.1.2 Name Role Value both pass by construction. Integration checklist for Stripe billing dashboards: bind the plan chip color to your Stripe subscription status (indigo for active Pro, amber for past_due, red for canceled) — never rely on color alone per SC 1.4.1, always pair color with an explicit text label like 'Past due — update payment method'. For Vercel-style team pages, promote the workspace switcher to a full Command-K palette on ⌘K keydown; for Notion, add a 'Send invite' shortcut in the workspace switcher's footer. Auth integration: the sign-out button should POST to your auth endpoint (never GET — GET sign-out is a CSRF vector), and the panel should close optimistically on click before the redirect completes so INP stays under 200ms. This pattern serves tier-1 SaaS pricing / auth / workspace-management search intent — $15-25 RPM average, spiking to $25-40 during Q4 renewal cycles when SaaS ARR is up for review. If your product uses passwordless magic-link auth (Vercel / Clerk / Supabase), add a 'Manage sessions' row that lists active devices with a revoke button per row — tier-1 dev audiences audit for this feature.
Which profile card pattern serves a law firm attorney directory, financial advisor page, or high-CPM tier-1 regulated services website?
Ship Demo 10 LinkedIn Minimalist Business Card or Demo 17 Testimonial Customer Review Profile Card for legal, financial-advisor, fiduciary, and heritage-brand contexts — both carry the neutral-institutional register that tier-1 legal and lender audiences read as trustworthy. Demo 10 (single-column business-card silhouette with monogram avatar, Fraunces display name, JetBrains Mono subtitle for practice area / license, and a stat row for years-of-practice / bar admissions / languages) is the register you see on White & Case, Skadden, Cravath, Wachtell, Kirkland & Ellis attorney directories, and on Vanguard / T. Rowe Price / Bessemer Trust / Northern Trust advisor pages. Demo 17 (five-star row, blockquote testimonial, cite row with avatar + firm + verified badge) is the register G2, Trustpilot, and Clutch use for professional-services testimonials — critical for legal client testimonials and financial-advisor client-letter surfaces. Requirements per regulation: (1) ABA Model Rule 7.1 (Communications Concerning a Lawyer's Services) requires legal-firm websites to avoid false or misleading statements — the neutral typography of Demo 10 is a defensible choice because it does not overpromise via visual gimmicks. State bars (California Rule 7.1-7.4, New York Rule 7.1, Texas Rule 7.02) additionally require attorney profile cards to include practice-area disclaimers ('Prior results do not guarantee similar outcomes') and jurisdiction limitations — surface these in the card's footer, not behind a hover reveal. (2) FINRA Rule 2210 governs financial-advisor communications and requires that all promotional language be balanced, forbids performance-based claims without balanced risk disclosures, and requires principal review before publication — the neutral register of Demo 17 avoids FINRA-flagged sensationalism; testimonials specifically must include SEC Marketing Rule (206(4)-1) disclosures if the advisor is SEC-registered. (3) TILA/RESPA disclosures on mortgage-lender loan-officer profile cards must be readable at 200% zoom per CFPB guidance — Demo 10 passes 200% zoom without breaking. Every card must expose email and phone as real mailto: and tel: anchors so bar-directory scrapers and client-referral platforms can extract contact info. WCAG 2.1 SC 1.4.3 requires 4.5:1 contrast — verify the deep-navy #1a2842 register (11.8:1 comfortably). This vertical carries the highest CPMs on codefronts.com: legal $30-60 RPM, mortgage $30-50 RPM, financial-advisor $25-45 RPM in the tier-1 US/CA/UK/AU/NZ market — spec into the highest-conversion demos for tier-1 traffic.