Docs

Custom CSS Guide

3 min readUpdated June 15, 2026

WP LinkCanvas provides two places to add custom CSS — a per-page field in the bio page editor, and any global stylesheet. Both are standard CSS targeting the bio page’s class structure.

Where to add CSS#

Per-page Custom CSS — in the bio page editor, scroll to the bottom and expand Custom CSS. CSS entered here applies only to that bio page. It is scoped automatically — you can write selectors without worrying about affecting the rest of your site.

Global CSS — add CSS to your theme’s stylesheet, a child theme, or a plugin like Simple Custom CSS. Use body.nlb-page as the top-level scope to target all bio pages.

Page structure#

Every bio page has body.nlb-page as the root class. The layout inside is:

body.nlb-page
  .nlb-card                  ← outer card
    .nlb-avatar              ← profile photo circle
    .nlb-title               ← display name
    .nlb-subtitle            ← tagline
    .nlb-bio                 ← bio paragraph
    .nlb-lang-switcher       ← language tabs (if multilanguage)
    .nlb-showcase            ← product rail (if enabled, above links)
    .nlb-links               ← links list
      .nlb-link              ← individual link row
    .nlb-socials             ← social icon row
      .nlb-social            ← individual social icon
    .nlb-showcase            ← product rail (if enabled, below links)

Each link gets a modifier class based on its type:

ClassLink style
.nlb-linkAll links (base)
.nlb-link--cardEnhanced Link (image card)
.nlb-link--mediaMedia (square thumbnail)
.nlb-link--embedEmbed (iframe)
.nlb-link--shortcodeShortcode
.nlb-link--vidstackVidstack player
.nlb-link--vidstack-videoVidstack video player
.nlb-link--vidstack-audioVidstack audio player
.nlb-link--featuredAny link with Featured toggle on
.nlb-link--embed-youtubeYouTube embed specifically
.nlb-link--embed-spotifySpotify embed specifically

Other embed providers follow the same pattern — .nlb-link--embed-{provider} where provider is the lowercase platform key (vimeo, soundcloud, twitch, etc.).

Common customisations#

css

body.nlb-page {
    --nlb-link-radius: 8px;
}

css

body.nlb-page {
    --nlb-link-radius: 0px;
}

Change the accent colour#

css

body.nlb-page {
    --nlb-accent: #e91e8c;
}

Increase bio page maximum width#

css

body.nlb-page {
    --nlb-card-max: 600px;
}

Hide the avatar#

css

body.nlb-page .nlb-avatar {
    display: none;
}

Each link has a data-nlb-slot attribute containing a unique ID. Use this to target one link:

css

body.nlb-page .nlb-link[data-nlb-slot="link_abc123"] {
    background: #ff6a00;
}

Find the slot ID by inspecting the link element in your browser’s developer tools.

Change social icon size#

css

body.nlb-page {
    --nlb-social-size: 48px;
    --nlb-social-icon-size: 22px;
}

Style Vidstack player controls for a specific theme#

css

body.nlb-page {
    --nlb-player-accent: #ff6a00;
    --nlb-player-radius: 12px;
}

css

body.nlb-page .nlb-link--card {
    min-height: 220px;
}

css

body.nlb-page .nlb-link__embed-caption {
    display: none;
}

RTL support#

Bio pages for Arabic, Hebrew, and other RTL languages get body.nlb-page.nlb-rtl and dir="rtl" on the HTML element. The plugin uses logical CSS properties (padding-inline-start, margin-inline-end etc.) throughout so most RTL layout works automatically. Use the .nlb-rtl class to add RTL-specific overrides:

css

body.nlb-page.nlb-rtl .nlb-title {
    font-family: "Cairo", sans-serif;
}

Using CSS tokens in custom rules#

Tokens are available in any CSS rule targeting body.nlb-page:

css

body.nlb-page .my-custom-element {
    color: var(--nlb-accent);
    background: var(--nlb-link-bg);
    border-radius: var(--nlb-link-radius);
}

See the CSS Token Reference for the full list of available tokens.