Component

Writing surfaces

A student adds a draft in a three step flow, submits, and reads focused questions beside the passages they concern. These are the surfaces that carry that exchange, and none of them ever writes into the student's text.

The review workspace

One composition is the product: the draft sheet, its passage marks, and the margin rail of question cards. Every component below exists to serve it.

Cities preserve monuments because they appear permanent. Removing one can reveal more about public memory than leaving it untouched.

The city's decision did more than alter the square. The debate became a question about who owns civic history, not only about the statue itself.

Split2fr : 1fr · 24px gap
Active pairReasoning 02 · brand-200 mark · ink-400 border
Siblings01 and 03 · 72% opacity
Elevationshadow.none

The draft leads and the margin follows: one relationship color, one active pair at a time, and the rest of the margin softened to 72% while a pair is open. The split and rail numbers live on Sizing and density.

Draft sheet

The manuscript plane. It holds the student's writing and nothing else.

Read mode

A white sheet with a hairline boundary, square corners, and a generous inset. Student text is set in the prose role at a 55–72ch measure, and every authored line break is preserved. Nothing on the sheet may imply the product edits it: no cursors it does not own, no inserted text, no rewrite affordances.

Working title: Who owns civic history?

Cities preserve monuments because they appear permanent.
Permanence is the claim I want to test, not assume.

Planesurface · hairline · radius 0
Textprose · 17/30 · 55–72ch
Line breakskept exactly as typed

Editor variant

Composing uses the same sheet with a bottom rail: an inset hairline rule, quiet actions on the left, and metadata on the right, led by the mono word count. While feedback loads the sheet does not change; status is written elsewhere, as in Your draft is saved while feedback loads.

The archive says more about the city than the monument does. The removal file runs to three hundred pages of letters, and almost none of them mention the statue itself.

412 words
Rail ruleborder-subtle · inset
Actionsleft · quiet · text-secondary
Countright · code role · Geist Mono
Draft sheet token bindings
PartBindingNote
Planesurface on paper · border-defaultSquare corners, shadow.none
Insetspace-10 · space-6 compact40px desktop, 24px small screens
Student textprose role17/30 · measure 55–72ch
Rail ruleborder-subtleHairline inset above the rail
Rail actionstext-secondary, hover text-primaryLeft side; Upload file and peers stay quiet
Word countcode role · text-tertiaryRight side, tabular figures; Saved joins it where shown

Accessibility. Read mode is plain document text. The editor is a real labeled text field, the word count is text associated with it, and Upload file is a real button. Because line breaks are preserved in both modes, what assistive technology reads matches what the student wrote.

Marks and cards

The passage mark and the question card are two halves of one relationship: the mark says where, the card says what is being asked.

Passage highlight

A resting mark washes the passage in brand-100; the active mark deepens to brand-200 and adds the 2px brand-700 baseline. Both clone across wrapped lines, and the text color never changes. Exact values, and how native selection stays legible over marks, are owned by Color.

Cities preserve monuments because they appear permanent. Removing one can reveal more about public memory than leaving it untouched. The debate became a question about who owns civic history, not only about the statue itself.

Restingbrand-100
Activebrand-200 + 2px brand-700 baseline
Wrapbox-decoration-break: clone

The archive says more about the city than the monument does.

Do keep every mark yellow. The dimension lives in the card title, never in the mark.

The archive says more about the city than the monument does.

Don't tint marks per dimension or reuse status washes. The relationship is always yellow.

Accessibility. Highlights are buttons: Enter and Space activate them, and aria-current marks the active one. Because the text color never changes, ink on brand-100 and brand-200 keeps its contrast, and the focus ring is the shared brand-700 outline.

Question card

The margin unit. It is an annotation on the manuscript plane, so it keeps the square corners of the draft sheet it serves. A zero padded mono ordinal sits top right in ink-400, the dimension title runs as a colored overline, and the question follows in body-sm ink-700. The title is one of the five feedback dimensions or seven Brainstorming purposes, always written out.

Draft feedback · dimension title
Brainstorming · purpose title
Ordinalmono · zero padded · ink-400
Dimension titleoverline · written out · taxonomy color
Questionbody-sm · ink-700 · never truncated

Brainstorming asks purpose labeled questions about starting material, so a Brainstorming card may stand in the rail with no passage attached. Start Brainstorming runs the mode from the compose flow.

Card states

State changes stay on the border and in the margin's weight. When one card is active its siblings soften to 72% opacity over duration.sm; with no active card every card sits at full opacity, and the faded state never applies to the card under the pointer. The margin recedes so the open question and its passage carry the moment. No shadow, no fill change. A second activation copies the question text and confirms with a toast.

03

What evidence shows how residents described that change at the time?

Rest · border line · full opacity
03

What evidence shows how residents described that change at the time?

Hover · border ink-300
03

What evidence shows how residents described that change at the time?

Active · border ink-400 · passage mark deepens
03

What evidence shows how residents described that change at the time?

Faded · sibling active · 72% opacity · never under the pointer
Second activation · toast · shadow.overlay
Question card token bindings
PartBindingNote
Cardfeedback-card · feedback-card-borderWhite · hairline · radius.none, square on the manuscript plane
Ordinalfont.mono · ink-400Zero padded: 01, 02, 03
Titleoverline role · feedback-title-* / brainstorm-title-*Color identifies type, never status
Questionbody-sm · ink-700Never truncated
Hoverborder ink-300No fill change
Activeborder ink-400Passage deepens to brand-200; siblings soften to 72%
Fadedopacity 0.72 · duration.smSiblings of the active card; never the card under the pointer
Copy confirmationtoast · shadow.overlayOn the second activation

Accessibility. The whole card is one button whose accessible name is the written dimension, the ordinal, and the full question, which is why cards never truncate. The copy confirmation is announced politely through the toast's status region, and activation never moves focus away from the card.

The margin rail

Cards stack at 12px gaps beside the draft. On desktop the rail scrolls independently behind a 14px edge fade; below lg it stacks after the full width draft in one document flow. The rail never outweighs the draft: the split and 320–400px rail bounds are owned by Sizing and density.

01

What is the single claim this draft asks the reader to accept?

02

Which source would help your reader verify this connection?

03

What would a reader who disagrees need to see first?

04

This sentence carries three ideas: the vote, the protest, and the archive. Which one does this paragraph need most? The full question is always shown; long questions grow the card, and the rail scrolls instead.

05

Which sentence does the most work in this draft, and what makes it work?

Card gapspace-3 · 12px
Edge fade14px · paper
Rail320–400px · independent scroll

Accessibility. The rail is a keyboard reachable scroll region with an accessible name, so arrow keys can move through overflowing questions. Because cards never truncate, scrolling is the only response to overflow, and reduced motion users get the same instant scroll positions as everyone else.

Compose and progress

The chrome around composing: the three step flow that carries a draft to review, and the meter that describes how far the draft has come.

Progress rail

Three steps as 24px circles joined by hairline connectors. Done fills ink-900 with a paper check, current sets an ink-900 number in a 2px ink-900 ring, and upcoming sets an ink-400 number in a hairline ring. Labels sit in body-sm. Below lg the rail compresses to the written Step 2 of 3.

  1. Completed Draft
  2. 2 Assignment
  3. 3 Review

Step 2 of 3

below lg · written compression
Circle24px · radius full
Current ring2px ink-900
Connector1px border-default

Accessibility. The rail is an ordered list named Compose progress, the current step carries aria-current="step", and the done circle pairs its check with a hidden Completed label. The mobile compression is literal text, so small screens lose nothing.

Draft maturity

Four 6px full round segments in ink-100 fill in the success tone as the draft matures. The stage is labeled in writing beside the meter: rough, developing, strong, polished. It describes where the draft is in its life; it is never a grade and never red.

Rough
Developing
Strong
Polished
Segment6px · radius full · ink-100
Fillsuccess-600
Labelwritten · body-sm

Accessibility. The written label is the accessible content and the segments are decorative, so the stage never depends on color alone. Success is the only fill the meter may use: a draft going backward is still described, never warned about.

The feedback-run wait

The one full-screen takeover in the product, shown while Inline reads a draft. Which wait may own the screen is decided by the loading pattern; this is that screen itself.

A paper canvas holds one centered column: the reading indicator, Reading your draft in h4, Your draft is saved. in body-sm ink-600, and the mono about a minute estimate. The indicator is the brand's own gesture: three schematic manuscript lines whose butter highlight sweeps across them line by line in sequence, a calm loop at duration.lg per line with no bounce, the sanctioned waiting exception from Motion.

Reading your draft Your draft is saved. about a minute
Canvaspaper · full screen
Indicator3 lines · butter sweep · dur.lg per line
Estimatemono · about a minute
Reduced motionstatic middle highlight

The contract. The wait names what is happening, always says the draft is safe, gives an honest estimate, and never blocks the student from knowing that: all three lines hold the screen for the whole run. Under prefers-reduced-motion the sweep stops and the middle line keeps a static full highlight, so the state stays legible in a single frame.

Planned additions

Documented ahead of build so the first implementation lands on system terms.

Rating chips Planned

A per card Useful and Needs work pair as 24px chips: hairline border, radius 4, selected state in ink-900 fill with paper text. Reason codes appear only after Needs work. One tap answers; no typing is ever required.

Rest · one tap
After Needs work · reason codes appear
Chip24px · hairline · radius 4 · 12px horizontal inset
Selectedink-900 fill · paper text
Statusplanned · not shipped

Accessibility. The pair behaves as a labeled toggle group with pressed state exposed, each 24px chip keeps a 44px effective target, and reason codes arrive as a labeled group below the pair without stealing focus.

Rules

The workspace stays honest by keeping these few promises.

  1. The draft is never edited by the product. Questions sit beside the writing, nothing is ever generated into the student's text, and read mode preserves every line break.
  2. The relationship is always yellow. Every passage mark uses brand-100 and brand-200, for every dimension; taxonomy and status colors never tint a highlight.
  3. The dimension is always written. Color rides the written overline title; it never carries the meaning alone and never fills the card.
  4. Cards never truncate. The full question is always shown; long content grows the card and the rail scrolls instead.
  5. The margin never outweighs the draft. The workspace keeps its draft led split and the rail stays inside its 320–400px bounds.
  6. The workspace stays flat. Sheet, marks, and cards share the manuscript plane: shadow.none and square corners everywhere; only a transient tool such as the copy toast lifts.
  7. States stay quiet. Hover and active change border color, mark depth, and sibling opacity only; no fills, no lift.
  8. Activity is described, never judged. Draft maturity names a stage in writing; it is never a grade, never a percentage, and never red.