STYLE.md ·
How Reel works. Every rule, written down.
TV and film streaming, as a website. It has four pieces:
- A billboard. The featured title with its classification and the consumer advice in words, captions and audio description marks, and Play and More info. Nothing autoplays with sound.
- Shelves. Rows of posters that scroll, with arrow buttons that stop at the ends. "Continue watching" shows how far through you are, and every poster carries its rating.
- Profiles with a maturity level. Pick who's watching. On an adult profile, titles above its level are locked behind a PIN; on a kids' profile, they disappear.
- A title sheet. The rating and advice first, then the year, captions and audio description, the story, and episodes by season.
The type is Archivo (wide and heavy), Instrument Sans and DM Mono, on a warm white with ink and one crimson. Classification badges keep their own colours, always with the advice in words.
Cinematic · safe · clear
Best for
- TV and film streaming services. It's written to classification and subscription expectations (see "Screen: what we build in").
- Anyone who shows films or series to an audience they need to protect:
- online film festivals (Short Fuse: a programme with ratings and festival passes that don't renew)
- film archives (The Archive Room: restorations with cultural advice and a classroom profile)
- broadcasters' catch-up sites, education video libraries, cinemas with on-demand
- Audiences: households sharing one account, parents setting limits, and viewers who need captions or audio description.
Less suited to: a single creator's channel (Cue), music (Needle), or a cinema's session times (Marquee).
Personality and voice
Cinematic, but plain-spoken about who should watch what.
- Headlines: "Something good, tonight." · "Who's watching?" · "Ratings, with reasons."
- Buttons: "Play" · "More info" · "Start watching" · "Save the PIN"
- Microcopy:
- "MA15+ · Strong violence and coarse language"
- "Riley sees titles up to M. 6 titles ask for the PIN."
- "About 4 minutes of ads an hour. Renews monthly."
- Words to avoid: a rating without the advice, "suitable for all" on anything above G, and "free" for a trial without the date it ends.
Colour
| Token | Matinee (light) | Late show (dark) | Role |
|---|---|---|---|
--paper |
#f8f6f2 |
#0c0b0d |
Page |
--card |
#ffffff |
#161417 |
Panels, plans, the sheet |
--well |
#efebe4 |
#121013 |
Alternate sections, the advice box |
--line |
#ddd8cf |
#2b282d |
Hairlines |
--ink / --ink-2 |
#141215 / #3a373c |
#f3f0ec / #d3cec8 |
Text |
--muted |
#5e5a55 |
#a8a29b |
Meta: year, kind, time left |
--crim |
#a50f28 |
#ff7a8a |
The one accent: buttons, links, progress, the lit words |
--screen |
#0c0b0d |
#050405 |
The billboard and the sheet's hero, in both modes |
--rate-g … --rate-r |
#2f7d32, #f5c400, #1565c0, #c62828, #121212 |
the same | G, PG, M, MA15+ and R18+ badges |
Measured contrast (WCAG).
- Matinee:
- ink on paper 17:1 or more
- muted on paper 6.3:1
- crimson on paper 7.2:1 (6.6:1 on well, 6.3:1 on its soft fill), white on crimson 7.8:1
- Late show:
- ink 16:1 or more
- muted 7.8:1 (7.2:1 on card)
- crimson 7.9:1, text on crimson 7.2:1, crimson on its soft fill 6.7:1
- Badges: white on G 5.1:1, ink on PG 11.1:1, white on M 5.8:1, white on MA15+ 5.6:1, white on R18+ 18.7:1.
- Example dials: festival gold (Short Fuse), sepia (The Archive Room) and deep teal (Boxset) all meet AA.
Typography
- Display: Archivo, 500–900, widths 100–125. Headlines, titles on billboards and posters (uppercase, wide), prices.
- Body: Instrument Sans, 400–700. Reading, advice, buttons.
- Mono: DM Mono, 400–500. Kickers, run times, labels.
| Token | Size | Use |
|---|---|---|
--fs-h1 |
clamp(42px, 6vw, 92px) | Page headline |
--fs-h2 |
clamp(30px, 3.6vw, 52px) | Section headline |
--fs-h3 |
21px | Card titles |
--fs-lead |
clamp(17.5px, 1.35vw, 20.5px) | Intro paragraphs |
--fs-body |
16.5px | Body |
| Billboard title | clamp(36px, 5.2vw, 76px), uppercase, 118% wide | The featured title |
The signature move: the lit words turn crimson and a spotlight sweeps across them on load.
Layout
- Frame: a 1200px wrap with a
max(20px, 4vw)gutter. An ink top line with a crimson pill; a sticky header with the film-reel mark. - Hero: the headline, then the billboard full width.
- Then: "Who's watching?" (profiles and the level) beside its intro, then the shelves; ratings explained; access; plans; and an ink closing card with a strip of film running across the top.
Shape
- Rounded:
--r-s8px,--r-m12px,--r-l18px. - Posters: drawn, 2:3 (or 16:9 for continue watching), with the rating in the corner and a progress line. Never use real key art without the rights.
- Profiles: rounded squares with an initial; the active one gets a crimson ring.
- The mark: a film reel.
Motion language
- Billboard: the scene drifts slowly; nothing plays with sound.
- Shelves: arrows scroll a page at a time; posters lift on hover and focus.
- Maturity: titles lock (greyed, with a padlock) or disappear as you change profile or level.
- Sheet and PIN: rise in as native dialogs.
- Elsewhere: the headline's spotlight sweeps, the closing card's film runs, sections reveal with a 14px rise over 650ms, and the phone menu drops in.
- Motion switch in the footer (
[data-motion-toggle],html.calm, remembered assite-motion, with the default fromprefers-reduced-motion). Calm stops the drift, sweep, lifts and film. - Late show switch (
[data-theme-toggle]), remembered assite-theme;theme-colorfollows.
Imagery and illustration
Key art and stills belong to the studios: use them only with the rights. The template draws posters and scenes so nothing is borrowed, and never shows real actors.
Signature components
- Classification:
.rate[data-r]with abbadge (G, PG, M, MA15+ or R18+) and the advice text;.ax > ifor CC and AD. - Billboard:
.billboard, containing.scene[style=--h]and.billboard-copy, which holds.kicker,h2,.meta-row(.rate.on-screenand.ax),p,.btn-play[data-open-title]and.btn-line[data-open-title]. - Shelves:
.shelf[data-shelf](.wide), containing:.shelf-headwithh3and.shelf-arrows > button[data-dir].shelf-track, which holdsbutton.tile[data-id][data-r][data-name], each with a.poster.none
- Posters:
.poster[data-word][style=--h](.wide), containing.rate,.lockand.seen > i. - Maturity:
.maturity[data-maturity][data-scope], containing:.profiles > button[data-profile][data-name][data-level][data-max], withdata-kidson kids' profiles.levels > button[data-level][data-maturity-out]
- PIN:
dialog[data-pin][data-demo], containing[data-pin-title],.pin-boxes > input×4,.errand[data-pin-cancel]. - Sheet:
dialog.sheet[data-sheet], containing.sheet-hero(.scene,.sheet-close,[data-sheet-name]) and[data-sheet-body]. It's filled fromscript[type="application/json"][data-titles], keyed by id, with name, year, r, advice, blurb, hue, kind, ax and seasons. - Supporting pieces:
.advice,.epswith.ep,.ratings-key,.plans > .plan(.pick)with.renew,.card,.facts,.notice,.side-box, and.close-card(--close-em).
Multi-page kit
- Phone menu:
.menu-btn[aria-controls]opens.site-menu. Escape, an outside click or choosing a link closes it, and Tab stays inside while it's open. - Current page:
aria-current="page", shown as a crimson-soft pill. - Inner pages:
.page-head(a film strip along the bottom),.crumbs, a.tagand a smaller.h1. - Fields:
.field,.fields,.field-wide,fieldset.field-set,.check,.form-card,[aria-invalid="true"];form[data-template]. - Tiles, segmented control, gate, slider, switch, tables:
.choices,.seg,[data-gate],input.range,.switch[role=switch],.table. - Events:
title(id, name),maturity(profile, level, locked, hidden). - Helpers:
Reel.refresh(root),Reel.open(id).
Screen: what we build in
We checked these for Australian streaming in October 2026:
- Classification with consumer advice. Every title shows its Australian classification (G, PG, M, MA15+, R18+) and the consumer advice in words, on the billboard, the poster and the sheet, before Play. The government's 2025 proposals to modernise the guidelines float changes such as a PG13-style category and MA15+ becoming MA16+; the badges are data, so new categories can be added when the rules change.
- Protecting children. Kids' profiles only ever show G and PG and never show ads; adult profiles can lock titles above a level behind a PIN, and leaving a kids' profile needs it too.
- Captions and audio description, marked before you press play, with caption styles you can choose (Boxset).
- Subscriptions. Prices including GST, ads per hour stated, the trial end date reminded, 30 days' notice of price changes, and online cancelling (the 2026 subscription-trap reforms; check the final law and start date).
These notes are design guidance, not legal advice.
Do and don't
- Do show the rating and the advice together, everywhere a title appears.
- Do hide, not just lock, anything above a kids' profile's level.
- Do mark captions and audio description before Play.
- Don't autoplay with sound.
- Don't change the classification badge colours to match a brand.
- Don't use studio key art without the rights.
Accessibility
- AA contrast throughout (measured above), a skip link and a 3px focus ring (white on the billboard).
- Tiles: real buttons whose label says the title and rating, and "locked: needs the PIN" when it does.
- Shelves: labelled lists; arrows say which row they move and disable at the ends.
- Profiles and levels: toggle buttons; the result is announced politely.
- PIN: a native dialog with four labelled digit fields that advance as you type, errors announced, three tries, and focus returned on close.
- Sheet: a native dialog labelled by the title; Escape closes it and focus returns.
- Testing: responsive to 360px, and tested with motion on and off, in Matinee and Late show.
How to make it yours
| Dial | Range |
|---|---|
| Accent | Crimson (default), festival gold (Short Fuse), sepia (The Archive Room), deep teal (Boxset). Set --crim, --crim-2, --crim-soft, --focus (plus --on-crim at night) and --close-em. |
| Catalogue | Your titles as data, with their classification and advice from your classification tool or the Board. |
| Profiles | Your household rules: levels, PINs, kids' profiles. |
| Player | Your video player behind Play, with captions and audio description tracks. |
| Not negotiable | Rating and advice together everywhere, kids' profiles that hide what's above them, the PIN, captions and AD marked, no autoplay with sound, and the Motion switch. |



