← Back to StyleKit
Film Noir
CasesComponentsAnatomyRules
Case No. 1947

Every ShadowTells a Story.

Inspired by 1940s Hollywood cinema. Built with extreme contrast, rain-soaked streets, and the quiet elegance of monochrome.

Scroll
ShadowsMoral AmbiguityRain-Soaked StreetsHigh ContrastCrimson PunctuationEvery Clue Matters
ShadowsMoral AmbiguityRain-Soaked StreetsHigh ContrastCrimson PunctuationEvery Clue Matters

The Archive

Open Case Files

Scene I

The Interrogation Room

A single bulb swings overhead. Shadows carve the room into two halves — light and darkness, guilty and innocent.

Case File #001

Cold

The Vanishing Witness

She walked into my office on a Tuesday. By Thursday, every trace of her had disappeared from the city records.

November 1947

Case File #002

Active

Midnight at the Pier

The fog rolled in thick enough to hide a body. When it lifted, the cargo was gone — and so was the captain.

February 1948

Case File #003

Closed

The Crimson Letter

A single page, typed on a 1940 Remington. No fingerprints. No return address. Just an accusation.

August 1949

Case File #004

Active

Shadows on Fifth Avenue

Photographs taped beneath a loose floorboard — each timestamped three days before the crime.

December 1949

The Palette

Shades of Noir

A grayscale world with two rare accents. Crimson for danger. Gold for revelation. Everything else lives in near-black through ivory.

#0a0a0a

Void

Background

#171717

Smoke

Card BG

#262626

Ash

Card Border

#404040

Fog

Border Hover

#737373

Mist

Text Muted

#d4d4d4

Bone

Text Sub

#f5f5f5

Ivory

Text Primary

#c41e3a

Crimson

Accent — Rare

#8b7355

Sepia

Accent — Age

#d4af37

Gold

Accent — Clue

Crimson#c41e3a

Danger. Blood. Revelation. Reserved for calls to action and bleed lines only. Never decorative.

Sepia#8b7355

Memory. Age. Evidence worn by time. Secondary accents and vintage texture backgrounds.

Gold#d4af37

A hidden clue. The glint of something important. Focus ring colours and highlight moments only.

Typography Scale

Display — font-serif italic font-bold

Every Shadow Tells a Story

Heading — font-serif italic

The Detective's Notebook

Subheading — font-serif italic text-neutral-400

Scene Two: The Interrogation Room

Label — font-sans text-xs uppercase tracking-[0.25em] text-neutral-500

Case File No. 1947

Body — font-sans text-sm text-neutral-400 leading-relaxed

The rain hammered against the window pane as the detective turned the photograph over in his hands. Something about the reflection in the glass did not add up. He reached for the telephone.

Mono — font-mono text-xs text-neutral-500

#c41e3a — crimson — use sparingly

Building Blocks

Component Gallery

Primary — Light Shaft Sweep + Harsh Monochrome Swap

Every button wraps content in a group element. The inner div travels from -translate-x-[200%] to translate-x-[200%] at duration-700, creating a diagonal flashlight sweep through venetian blinds.

Size Variants

Icon Buttons — Light Shaft on Square Format

Interaction System

Animation & Interaction Rules

Four named interaction patterns define Film Noir. Each is slow and deliberate — never below 500ms on buttons, never below 700ms on cards. Hover each demo to feel the difference.

Pattern 1Light Shaft Sweep

from-transparent via-white/30 to-transparent
-translate-x-[200%] skew-x-[-20deg] → translate-x-[200%]
transition-transform duration-700 ease-in-out

A diagonal “flashlight beam” sweeps across the button face on hover, like light cutting through a venetian blind at 20 degrees. Slow and cinematic at 700ms.

Hover the button to trigger the light shaft

Pattern 2Harsh Monochrome Swap

hover:bg-neutral-100 hover:text-neutral-950
hover:border-neutral-100
transition-colors duration-500

A complete binary inversion — dark to light — not a gradual shade change. Reflects 1940s film drama where scenes cut hard between shadow and light. Abrupt and intentional.

Hover to trigger the harsh monochrome swap

Pattern 3Venetian Blinds

repeating-linear-gradient(180deg,
transparent 0px, transparent 4px,
#fff 4px, #fff 6px)
opacity-0 → group-hover:opacity-[0.06] duration-700

Barely perceptible horizontal stripes appear on card hover — like light filtering through half-closed window blinds in a detective's office. opacity-[0.06] is intentionally faint.

Hover this card

Blinds appear at 0.06 opacity

Hover the demo card above to see the blinds appear

Pattern 4Crimson Bleed

w-12 h-[2px] bg-[#c41e3a]
group-hover:w-full
transition-all duration-700 ease-out

A 48px crimson line expands to full card width over 700ms on hover. Simulates a film title card's crimson underline unfurling, or blood slowly spreading across a surface.

Hover this card

Watch the crimson line expand to fill the full width

Hover the demo card above to trigger the bleed

Additional Interaction Rules

Tactile Confirmation

active:scale-[0.98]

Every button must include this. Without it, buttons feel like decorative elements — broken affordance.

Focus Ring Dark

focus:ring-2 focus:ring-neutral-400 focus:ring-offset-2 focus:ring-offset-neutral-950

The ring-offset-neutral-950 separates the ring from the dark element, making it visible on black backgrounds.

Slow Easing

buttons: duration-500 / cards: duration-700

Noir is slow and dramatic. Never use duration below 300ms. Slowness is inherent to noir weight.

The Code

Rules of Noir

Commandments

  • bg-[#0a0a0a] or bg-neutral-950 — near-black base canvas always
  • font-serif italic for all headings — classical newspaper authority
  • Grayscale palette: neutral-100 through neutral-950 as primary scale
  • Crimson #c41e3a sparingly — danger, calls to action, bleed lines only
  • Diagonal gradient overlays to simulate cinematic light shafts
  • Light shaft sweep on every button: group + inner translate div
  • active:scale-[0.98] on every button — tactile press confirmation
  • focus:ring-2 focus:ring-neutral-400 focus:ring-offset-neutral-950
  • Animation duration 500ms minimum — Noir is slow and deliberate
  • Venetian blinds overlay on cards: opacity-0 to group-hover:opacity-[0.06]
  • Crimson bleed line: w-12 expanding to group-hover:w-full over 700ms
  • Thin or no borders: border-neutral-800, never colorful borders

Prohibitions

  • No colorful or saturated backgrounds — this is monochrome noir
  • No rounded-2xl or larger corner radii — noir is angular and sharp
  • No neon glow or drop-shadow effects — forbidden, breaks the darkness
  • No gradient button fills — flat, harsh, binary only
  • No cartoon, cute, or playful elements — this is serious cinema
  • No animation duration below 300ms — slowness is inherent to noir weight
  • No buttons missing active:scale-[0.98] — no tactile confirmation is broken
  • No focus:ring without focus:ring-offset-neutral-950 on dark backgrounds
  • No high saturation colors except crimson as a rare accent
  • No emoji or playful iconography

Pre-Ship Self Check

All buttons wrapped in group class?
Light shaft sweep div inside every button?
active:scale-[0.98] on every button?
focus:ring-offset-neutral-950 on all focusable?
Cards have venetian blinds overlay?
Cards have crimson bleed line (w-12 to full)?
No animation below 300ms anywhere?
No rounded-2xl or larger corner radii?
Crimson used sparingly — not decoratively?
Case No. 1947

Ready to Build
in the Shadows?

The Film Noir design system is fully documented and ready. Every shadow, every crimson mark — all by design.

Film Noir

Dramatic monochrome inspired by 1940s Hollywood. Extreme contrast, slow animations, and the quiet elegance of shadow.

This StyleDocumentationShowcaseCover
StyleKitHomeAll Styles
AccentsCrimson — #c41e3aGold — #d4af37Sepia — #8b7355
Case Closed.· StyleKit · Film Noir · No. 1947
← Back to StyleKit
DESIGNED IN THE SHADOWS • BUILT WITH PRECISION