Courier 12-pt font stack
Every screenplay element renders in Courier 12-pt (or Courier Prime / Courier New fallback).
lib/pagination.ts: FONT_SIZE_PX = 16, CHAR_WIDTH_PX = 9.6
SPINE IN / Script Editor Spec
A complete inventory of every feature a screenwriter expects from a Final-Draft-style script editor — formatting, page markers, scene heading auto-complete, transitions, dual dialogue, lyrics, notes, import/export, beat integration, and collaboration. Each item is colour-coded: green when complete, orange when partial, and red when not yet started.
Total Features
92
Complete (Green)
73
Partial (Orange)
5
Not Started (Red)
14
Overall Progress
82%
Completion Key
Complete — feature is wired, verified, and behaves to industry spec.
Partial — an MVP surface or first-pass integration exists but needs deeper polish.
Not Started — feature is planned but not yet implemented.
Courier 12-pt typography, US-Letter page, 1" body margins, page-body-safe line fitting, and the standard indents for every element type — matching what Final Draft, Movie Magic, and Highland export.
Every screenplay element renders in Courier 12-pt (or Courier Prime / Courier New fallback).
lib/pagination.ts: FONT_SIZE_PX = 16, CHAR_WIDTH_PX = 9.6
816 × 1056 px page with 1" left, right, top, and bottom margins.
lib/pagination.ts: PAGE_WIDTH_PX, MARGIN_*
Pages wrap at the number of 12-pt Courier lines that fit inside the rendered body, preserving the 1" bottom margin.
lib/pagination.ts: LINES_PER_PAGE derives from CONTENT_HEIGHT_PX / LINE_HEIGHT_PX
Action lines start 1.0" from the left edge, full content width.
lib/pagination.ts: LEFT_OFFSET_CH.action = 0, WIDTH_CH.action = 65
Character cues start 3.7" from the left edge and run to the 7.5" right edge.
lib/pagination.ts: LEFT_OFFSET_CH.character = 27, WIDTH_CH.character = 38
Parentheticals start 2.9" from the left edge and run to 6.5".
lib/pagination.ts: LEFT_OFFSET_CH.parenthetical = 19, WIDTH_CH.parenthetical = 36
Dialogue starts 2.5" from the left edge and runs to 6.5".
lib/pagination.ts: LEFT_OFFSET_CH.dialogue = 15, WIDTH_CH.dialogue = 40
Transitions (CUT TO:, FADE OUT., etc.) are right-aligned in the content area.
components/editor/page-element.tsx: TYPE_STYLES.transition
INT./EXT. sluglines are automatically uppercased on render.
page-element.tsx TYPE_STYLES.scene-heading
Character names are automatically uppercased on render.
All editors and the printable export read LEFT_OFFSET_CH / WIDTH_CH from one file.
lib/pagination.ts