Custom CSS styling guide
Custom CSS is a Pro feature. It lets you restyle your published events widget beyond what the Switchboard settings offer. This page lists everything you can target.
Using an AI tool
Open the Switchboard, go to Custom CSS Override and press Copy AI brief. Paste it into ChatGPT, Claude or any AI chat, then describe the look you want after the last line, for example: make the event titles bigger and the buttons square.
Paste the CSS it gives you into the Custom CSS box and press Save.
Checking your changes
Custom CSS shows on your live website, not in the Switchboard preview. After saving, open the page on your site where the widget appears and refresh it. If you do not like the result, open History in the Switchboard, load the version from before, and press Save to put it back.
Rules
- Start every selector with a StageWire class (the ones beginning .sw-). Do not write html, body, :root or .stagewire-embed-wrapper: everything you write is already placed inside the widget.
- To style the widget's outer box itself, or to change a variable, use the & selector, for example: & { --sw-accent: #e4572e; border-radius: 16px; }
- No @import, @font-face or @keyframes. They are removed or will not work. Use one of the fonts already loaded, or a system font such as Georgia or Arial.
- Match the selector you are overriding. A rule for .sw-card will not beat the built-in .sw-list .sw-card rule; write .sw-list .sw-card instead.
- Do not set display, opacity, filter or transform on .sw-card, .sw-tvcard or .sw-img. Search, TV paging, Cinematic Scroll and Image Zoom control those while the page runs.
- To react to the widget's width rather than the screen's, use @container (max-width: 500px) { ... }. Ordinary @media queries also work.
- Background images must use full https:// addresses.
- Prefer the Switchboard settings for colours, fonts and sizes. Use Custom CSS for what the settings cannot do.
Header
.sw-header | The heading block above the events |
.sw-kicker | Small venue name line above the title |
.sw-title | Main title, e.g. "Live Music" |
.sw-title .sw-accent | Last word of the title, in the accent colour |
Toolbar
Shown when search or the List, Grid and Month switcher is turned on
.sw-toolbar | Row holding the switcher and search box |
.sw-tabs | The List, Grid and Month switcher |
.sw-tab | One switcher button |
.sw-tab.on | The selected switcher button |
.sw-search | Search box |
.sw-noresults | Message when a search matches nothing |
Event cards
.sw-feed | Container holding every card |
.sw-list .sw-card | A card in List layout |
.sw-grid .sw-card | A card in Grid layout |
.sw-card | One event card, in any layout |
.sw-imgwrap | Box around the event photo |
.sw-img | The event photo |
.sw-body | Text area of the card |
.sw-date | Date and time line |
.sw-name | Event title |
.sw-meta | Venue and address line |
.sw-desc | Short description |
.sw-actions | Row of buttons |
.sw-btn | A filled button, e.g. Get Tickets |
.sw-btn.ghost | An outlined button, e.g. Read More |
.sw-empty | Message when there are no events |
Event popup
Opens when a visitor clicks a card or Read More
.sw-modal-back | Dimmed backdrop |
.sw-modal-panel | The popup box |
.sw-modal-x | Close button |
.sw-modal-img | Event photo in the popup |
.sw-modal-body | Text area of the popup |
.sw-modal-name | Event title in the popup |
.sw-modal-desc | Full description in the popup |
.sw-modal-map | Map in the popup |
Month view
Shown when Month is the layout or is turned on in the switcher
.sw-mhead | Month name and arrows |
.sw-mlabel | Month name, e.g. "October 2026" |
.sw-mnav | Previous and next month arrows |
.sw-mdow | Row of weekday names |
.sw-mcell | One day square |
.sw-mtoday | Today's square |
.sw-mnum | Day number in a square |
.sw-mev | An event inside a day square |
Carousel
Shown when the layout is Carousel
.sw-ctrack | The sideways scrolling row of cards |
.sw-cnav | Row holding the arrows |
.sw-cbtn | Previous and next arrows |
TV Display
Shown when the output is a TV Display
.sw-tv | Grid of TV cards |
.sw-tvcard | One TV card |
.sw-ov | Dark layer over the TV card photo |
.sw-tvdate | Date on a TV card |
.sw-tvname | Event title on a TV card |
.sw-tvtime | Start time on a TV card |
.sw-tvdot | Page indicator dot |
.sw-tvclock | Live clock |
Theme variables
These hold the values set in the Switchboard. Read them with var(--sw-accent) in your own rules, or change one inside & { }.
--sw-bg | Background colour |
--sw-surface | Card colour |
--sw-surface2 | Search box, switcher and arrow colour |
--sw-text | Main text colour |
--sw-text-dim | Secondary text colour |
--sw-accent | Accent colour: dates, buttons, highlights |
--sw-border | Border colour |
--sw-card-radius | Card corner rounding |
--sw-btn-radius | Button corner rounding |
--sw-gap | Space between cards |
--sw-pad-details | Padding inside a card |
--sw-font-display | Title font |
--sw-ttl-font | Event title font (also -size, -letter, -lh, -tt) |
--sw-dtl-font | Body text font (also -size, -letter, -lh, -tt) |
--sw-dt-font | Date font (also -size, -letter, -lh, -tt) |
--sw-btnt-font | Button font (also -size, -letter, -lh, -tt) |
Fonts already loaded
Inter, Roboto, Poppins, Montserrat, Lato, Oswald, Bebas Neue, Anton, Playfair Display, Merriweather, Cormorant Garamond. You can also use system fonts such as Georgia, Arial or Helvetica.
Example markup
One event in List layout, trimmed to the parts you can style.
<div class="stagewire-embed-wrapper">
<header class="sw-header">
<div class="sw-kicker">Venue name</div>
<h2 class="sw-title">Live <span class="sw-accent">Music</span></h2>
</header>
<div class="sw-toolbar">
<div class="sw-tabs"><button class="sw-tab on">List</button><button class="sw-tab">Grid</button></div>
<input class="sw-search" type="search">
</div>
<div class="sw-feed sw-list">
<article class="sw-card">
<div class="sw-imgwrap"><img class="sw-img"></div>
<div class="sw-body">
<div class="sw-date">Fri 10 Oct · 8:00 PM</div>
<h3 class="sw-name">Event title</h3>
<div class="sw-meta">Venue · Address</div>
<p class="sw-desc">Short description</p>
<div class="sw-actions">
<button class="sw-btn ghost">Read More</button>
<a class="sw-btn">Get Tickets</a>
</div>
</div>
</article>
</div>
</div>