Foundation

Spacing

Spacing keeps long drafts workable. Inline’s 4px system controls the interface around student writing, not the amount of writing a student can preserve, review, or revise.

Scale

Use the complete 18-token scale. Working steps handle routine rhythm; supporting steps cover precision, compatibility, and large layout needs. Select any row to copy its value; bars are shown at actual size.

Working steps

Supporting steps

Semantic aliases

Aliases state relationship intent while remaining synchronized with the raw scale.

Inline

inline.xs4px
Icon to its own label
inline.sm8px
Related controls or metadata
inline.md12px
Loose inline groups

Stack

stack.xs8px
Label to supporting text
stack.sm12px
Compact stacked content
stack.md16px
Default stacked content
stack.lg24px
Groups inside a component

Inset

inset.sm16px
Compact cards and rows
inset.md24px
Default cards and panels
inset.lg32px
Spacious panels and dialogs

Layout

page-gutter.mobile16px
Mobile shell gutter
page-gutter.desktop24px
Desktop shell gutter
section.product64px
Product and mobile sections
section.marketing96px
Marketing desktop sections
workspace-gap24px
Draft-to-question separation

Component insets

Insets describe internal whitespace. Control heights, target areas, icons, and density modes live in Sizing and density.

Component inset contracts
ElementInsetSize or note
Button sm12px horizontal32px height
Button md16px horizontal40px height
Button lg20px horizontal44px height
Input/select16px horizontal40px default · 44px touch
Long-form textarea20px vertical · 24px horizontalMinimum 280px current workflow baseline
Question card16pxNeutral working surface
General card/panel24pxDefault inset
Dialog24px mobile / 32px from 640pxStack actions when needed
Toast/banner12px × 16pxMessage and action stay grouped
Navigation row12px × 16pxEffective target ≥44px
Menu row8px × 12pxDesktop pointer surface; touch raises rows to 44px
Table/list cell12px × 16pxPreserve scanability
Section panel24px compact / 32px spaciousOne density per region

Spacing contracts for the redesign, not finished component appearance.

Draft workspace

Draft/Starting material → Assignment → Review keeps its order, preservation, and responsive stack. At desktop review widths, the draft is the dominant column and the workbench fits the available viewport with a 460px minimum; long content scrolls inside it.

Diagram shows relationships; labels carry actual dimensions. Scroll desktop scenes horizontally on narrow screens.

Compose desktoplg+
App nav 64px
Progress rail current 248px
Flexible editor
Retained actions
Review desktoplg+ · draft-led 2:1 split
Dominant draft · receives the remaining width
Questions 320–400px · 24px workspace gap
Mobile flowstack, never squeeze
Step N of 3
Full-width draft
Actions
Stacked questions

Unbroken draft: manuscript lines continue through every scene. All authored text and every generated feedback or brainstorming card remain available; no line clamp or truncation.

Capacity contracts

These behavioral guarantees hold on every plan and stay independent from visual measure and spacing.

Capacity behavior contracts
SurfaceGuarantee
Draft textareaNever truncates or caps input client-side; no maxLength on the control
Saved draftPreserved even when too large to run
UploadOne file; PDF, DOCX, MD, or TXT; a failed upload leaves the typed draft untouched
BrainstormingMay start from an empty page when an assignment exists
Draft feedbackRequires a nonblank draft; a short draft gets a soft notice, not a block
Plan limits are billing configuration.

They are owned by the product’s database migrations (inline-platform/supabase/migrations); interfaces render whatever those tables say and never hard-code a number.

Any surface showing a limit treats the number as data, sized for the widest realistic value in Geist Mono tabular figures.

Responsive behavior

Breakpoints follow content collision, never device names. The system stacks regions before it squeezes writing.

Responsive spacing and workflow behavior
BreakpointValueBehavior
Base / mobile16px gutter and stacked flow
sm640px24px shell gutter
md768pxRoomier metadata
lg1024pxDesktop progress rail and draft-led review split
xl1280pxQuestion rail may grow toward 400px; draft remains dominant
2xl1536pxAdds whitespace, not wider prose

Container max 1200px · gutters 16/24px · 24px desktop workspace gap · reading max 680px only when room exists · flexible editor workbench up to current 920px baseline.

Rhythm and scrolling

Page hierarchy uses the shared scale. Each workflow region has one scroll owner, so actions and long drafts remain reachable.

Page hierarchy

Overline 8px Section heading 16px

Intro copy prepares the section.

48px Content begins

Scroll ownership

Compose
Content scrolls; footer actions remain retained.
Desktop review
Draft and question rail may scroll independently.
Mobile review
One document flow owns scrolling.

Draft paragraph spacing and line height come from prose typography, not page-section gaps. Sections use 64px in product/mobile contexts and 96px on marketing desktop.

Rules

Use spacing to protect meaning, capacity, and concentration.

  1. Proximity carries meaning. Within-group gaps stay at most half of between-group gaps.
  2. Use the scale only. No one-off spacing or 14px/18px exceptions.
  3. Preserve authored content. Spacing never removes, clamps, or truncates writing.
  4. Stack before squeezing. Move regions into flow before making them unreadably narrow.
  5. Scroll, do not truncate. Give each region one scroll owner and keep all content reachable.
  6. Measure is width, not capacity. Preferred line length never becomes an input limit.
  7. Protect touch targets. Controls reach 44×44px effectively; inline prose links are the exception.
  8. Use space before borders. Add a neutral hairline only when distance cannot show the boundary.
  9. Attach headings downward. Keep more space above a heading than below it.
  10. Respond to content. Breakpoints activate when content collides, not by device category.