One cohesive on-air system for everything the channel airs: Love Bird Live, After Hours, The Public Has Notes, Dreams, ad breaks, bumpers and coming-up cards. It is built from real aired frames and a real rendered pipeline, so what you see here is what the encoder receives. Nothing on this page is a mockup of a mockup.
Programme ident, 5 s. Rendered frame-by-frame from the package's HTML source at the publisher's real 1280×720/24. The background is an aired frame (segment 4716).

On air now (lbl/out/hold_preview.png). The text is Consolas monospace in flat black boxes, the beat line is cut off mid-word ("gonna wal"), and a red chat box sits on top of the shot.

The same information, redesigned. Clock, programme bug with tally, scene title and caption, and a live chat vote. Every line fits by rule, so nothing gets cut off.
All three follow the notes you've already given: sans display type only, no rectangular cards, no flat dark washes. They differ in where the energy lives. Each one is shown on the brightest daylight frame we've aired, because that's where a graphics system usually breaks.


Frosted pills with an iridescent rim, tinted rose-plum (never black), ultra-light type with an italic rose accent. This is the Aura lineage, so it matches On Air and the app. Buys: readability on any frame, and a premium dating-TV feel. Costs: the real backdrop blur needs a crop→boxblur→overlay pass per plate, so there's a no-blur plate that looks right with a plain overlay (shown on the left).

Type as the villa's own signage: pink neon tubes with teal secondaries and no containers at all. Buys: the most "in the world" option, and it's great at night and in After Hours. Costs: it gets lost in blazing midday sun (see the vote), and neon glow is a nightclub cliché if it's used everywhere. I'd keep this as the After Hours variant, not the network default.

Huge ultra-light scene titles sitting in a warm pool of light: editorial, like a magazine cover. Buys: the boldest title moment, and the picture does most of the work. Costs: the light pool tints a corner of every frame, the 58 px titles cover faces in close-ups, and the small text has nothing behind it. Best used only for the first 4 seconds of a new scene.
One rule governs all six: boldness is spent in one place per frame. The clock and bug stay quiet the whole time. The lower third gets the pink kicker. The vote gets teal only for the leader.

Replay honesty. A replayed or recap segment can never show the red LIVE tally. The bug switches to a hollow sky ring reading "Earlier · 7:42 am" and the kicker says Earlier. This is the visual half of Coda's "never copy replays marked live".

Willa on the villa speaker. A gold equaliser marks her voice, which is the only use of gold on air. It appears only while her line plays, top-left, away from the lower third.

Name super. An iridescent dot, the name, and a four-word italic aside. It's placed beside the person, never across a face. The aside comes from the director's beat, not invented lore.

Chat decides. Capsules fill with light, and only the leader turns teal. The vote shows real counts only. With zero votes it says "No votes yet · type !vote in chat" and fills nothing (the empty-state plate ships). The numbers in these samples are illustrative.
Full-frame cards never go to black. The aired frame drifts 6%, soft-light pink and teal glows sit over it, bokeh floats up, and a low plum pool behind the type keeps it readable. Motion rules: rise and un-blur over 520 ms, 110 ms stagger, the flourish wipes left to right, and nothing bounces or spins.
Coming up, 8 s. Three arch-shaped windows (the villa's own doorway shape, not boxes), each filled from its programme's real footage. "Next" gets the one teal highlight. Times come from the rundown slot's startsAt.
The villa is waking up, 6 s. This replaces the full director "brain" slate for resets and waking. The slate's prompt text stays in Composer's control room and never goes to air.
After Hours · Smaller conversations. Bigger admissions.
The Public Has Notes · The audience has been promoted to production.
Dreams · Tonight's piece from the night desk. The background should become the night's real dream frame once one is rendered (see open questions).
Canon says absurdity belongs to the network (lbl/production-contract.mjs) and that Vulture Max is the drink "used in in-world adverts" (lbl/canon-contract.mjs). The break is framed as fiction on screen, and the villa is always one line of text away.

Vulture Max end card. The can is generated art (Nano Banana Pro, referenced from the aired Tea-ki Bar frame, segment 4836, one image). The can design is a proposal: canon names the drink but has never drawn the can. It carries the "A fictional advertisement" tag the whole time the ad is on screen.
lbl/broadcast/fonts with static 300/400/500/600 instances for ffmpeg drawtext. Display: 200 weight at −4.5% tracking. Labels: 600 weight, 11 px, +22% tracking, uppercase.cubic-bezier(.2,.7,.1,1), translateY 22→0, blur 10→0, 110 ms stagger. Out: 360 ms fade. Flourish: 760 ms scaleX. Full-frame: 300 ms fade in, 320 ms fade out.This is a design-and-assets delivery. It does not change the runtime and does not touch lbl/playout.mjs. The publisher's lineage belongs to Coda, and the network runner is Roadie's HQ task c73c2942. Everything below is what they consume.
lbl/broadcast/src/package.html on branch maestro/lbl-broadcast-package (fermata-agents). One page renders one graphic from ?g=&t=&d=.node lbl/broadcast/render.mjs still l3 glass none out/l3.png '{"kicker":"Confessional","title":"…","line":"…"}', then overlay=0:0. That keeps the typography exact, which drawtext can't match (no pill rims, no iridescence).noblur=1 for the plain-overlay path. The true backdrop blur is an optional per-plate crop,boxblur=24,overlay pass.-output_ts_offset) before admission. It is never fed raw.overlay-lower-third / -vote / -willa .mov are qtrle ARGB with alpha, for when an animated entrance is wanted instead of a cut-in.state.votes only. The tally is LIVE only when the segment is fresh, and anything from library/ replays gets replay. Coming-up times come from network.slots[].startsAt. The ad tag appears only for a slot whose show has a valid clearance (the panel's ClearanceBadge logic).lbl/broadcast/
src/package.html every graphic, 3 treatments, motion timeline (window.__seek)
render.mjs still | motion | batch (Playwright → PNG / qtrle .mov / H.264 .mp4)
fonts/ Instrument Sans variable + italic + static 300–600, OFL licences
frames/ aired stills used as backgrounds + vmax.jpg (generated)
png/ transparent plates: bug-live, replay-set, clock, lower-third, vote, vote-empty,
willa, name-super, adtag (+ -noblur variants), _demo composites
renders (not in git, 18 MB): C:\Users\H7\outputs\maestro-broadcast-20260917\motion\
ident-{love-bird-live,after-hours,public-has-notes,dreams}.mp4 5 s
bumper-out.mp4 · bumper-in.mp4 · adbreak-in.mp4 3 s
coming-up.mp4 8 s · waking.mp4 6 s · ad-vulture-max-endcard.mp4 6 s
overlay-{lower-third,vote,willa}.{mov,mp4} 6 s alpha
!vote. If chat stays silent for 10 minutes, the vote comes off air instead of sitting there dead.It matches On Air and the app, and it holds up in noon sun. I'd use B's neon only as After Hours' own variant.
Canon has two sources in conflict (Plume vs Birdsong), and the live contract says there's no need to name it. The mark does the work. If you pick a name, the wordmark slot goes in the bug and the idents.
Keep the iridescent pink-to-teal can. Give the vulture a slightly smug head tilt so it reads as satire rather than an energy drink. One more generation.
These renders are silent by design. I'd have bumpers carry the hold shot's ambience bed plus one soft two-note tally chime. That needs a sound pass I haven't made yet.
The name super is the weakest element. The director doesn't reliably say who is on screen, and a wrong name on air is worse than none, so I'd hold it back until the cast-now receipts are trustworthy. The Dreams ident uses a villa sunset, not a dream, which is wrong for its programme until a rendered dream frame exists. Treatment C should stay a one-scene experiment, not a system.