Oct 14, 2026
Design
Five decisions. None need a designer. 3 min read
Why does Linear feel expensive? Five decisions. None of them need a new component, a new font, or a designer in the room. This is that walkthrough, told on Tawny's own surfaces. The same fourteen issues return in every frame. Each frame keeps the decisions that came before it.
The pattern is Reverse-Engineered Linear by Design Motion.
The same list, before the decisions. Rows are 56px. Status is a colored pill. The panel sits on a drop shadow. Eight issues fit. Six sit below the fold.
BEFORE
The same list, before the decisions.
N Northstar
TEAMS
SC Sarah Chen
In progress High NOR-140 Fix focus ring on command palette Bug SC Sep 1 In progress High NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 Todo Medium NOR-142 Empty state for archived projects Design JR Sep 2 Todo Low NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 In progress Medium NOR-144 Onboarding checklist drop-off Design TP Sep 3 Todo High NOR-145 Rate limit on search endpoint Infra MK Sep 3 Done Medium NOR-146 Dark mode contrast on badges Bug SC Sep 4 Todo Low NOR-147 Bulk edit for labels Feature AL Sep 4 In progress Medium NOR-148 Sidebar collapse animation jank Bug JR Sep 5 Todo Low NOR-149 Export issues to CSV Feature TP Sep 5 Done High NOR-150 Retry failed webhook deliveries Infra MK Sep 6 Todo Medium NOR-151 Mobile row height too tall Bug SC Sep 6 Todo Low NOR-152 Snooze notifications Feature AL Sep 7 Done Medium NOR-153 Cycle burndown rounding bug Bug JR Sep 7
Eight of fourteen rows fit. The other six sit below this viewport.
56 px rows · seven colors · drop shadow
Density reads as competence. 13px text, 32px rows, letter-spacing pulled in by 1% (-0.01em). The same viewport shows fourteen issues instead of eight, with no scroll. One row height, all the way down, so the scan line stays even.
DECISION 01 · DENSITY
Density reads as competence.
N Northstar
TEAMS
SC Sarah Chen
In progress High NOR-140 Fix focus ring on command palette Bug SC Sep 1 In progress High NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 Todo Medium NOR-142 Empty state for archived projects Design JR Sep 2 Todo Low NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 In progress Medium NOR-144 Onboarding checklist drop-off Design TP Sep 3 Todo High NOR-145 Rate limit on search endpoint Infra MK Sep 3 Done Medium NOR-146 Dark mode contrast on badges Bug SC Sep 4 Todo Low NOR-147 Bulk edit for labels Feature AL Sep 4 In progress Medium NOR-148 Sidebar collapse animation jank Bug JR Sep 5 Todo Low NOR-149 Export issues to CSV Feature TP Sep 5 Done High NOR-150 Retry failed webhook deliveries Infra MK Sep 6 Todo Medium NOR-151 Mobile row height too tall Bug SC Sep 6 Todo Low NOR-152 Snooze notifications Feature AL Sep 7 Done Medium NOR-153 Cycle burndown rounding bug Bug JR Sep 7
14 rows, same height
LETTER SPACING
Migrate billing webhooks to v2
-0.01em 13 px · 32 px rows · -0.01em
Depth comes from value, not blur. Kill the shadow. Stack three backgrounds — canvas, list, hover — and split them with the theme border. Hover changes the surface, not the elevation. Flat surfaces look engineered. A shadow looks decorated.
Token Role backgroundCanvas cardList accentHover borderHairline tawnyThe one color
box-shadow : none;
background: var(--card);
border: 1px solid var(--border);
DECISION 02 · BORDERS
Borders, not shadows.
N Northstar
TEAMS
SC Sarah Chen
In progress High NOR-140 Fix focus ring on command palette Bug SC Sep 1 In progress High NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 Todo Medium NOR-142 Empty state for archived projects Design JR Sep 2 Todo Low NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 In progress Medium NOR-144 Onboarding checklist drop-off Design TP Sep 3 Todo High NOR-145 Rate limit on search endpoint Infra MK Sep 3 Done Medium NOR-146 Dark mode contrast on badges Bug SC Sep 4 Todo Low NOR-147 Bulk edit for labels Feature AL Sep 4 In progress Medium NOR-148 Sidebar collapse animation jank Bug JR Sep 5 Todo Low NOR-149 Export issues to CSV Feature TP Sep 5 Done High NOR-150 Retry failed webhook deliveries Infra MK Sep 6 Todo Medium NOR-151 Mobile row height too tall Bug SC Sep 6 Todo Low NOR-152 Snooze notifications Feature AL Sep 7 Done Medium NOR-153 Cycle burndown rounding bug Bug JR Sep 7
canvas · background background
list · card card
hover · accent accent
box-shadow: none · 1 px at 8%
One color, used twice. tawny on the selected row and the primary button, nowhere else. Status is a grey icon: an open circle, a half-filled circle, or a check. Priority and labels are grey text. Seven hues collapse to one, and the list looks deliberate.
DECISION 03 · ONE COLOR
One color. Everything else grey.
N Northstar
TEAMS
SC Sarah Chen
NOR-140 Fix focus ring on command palette Bug SC Sep 1 NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 NOR-142 Empty state for archived projects Design JR Sep 2 NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 NOR-144 Onboarding checklist drop-off Design TP Sep 3 NOR-145 Rate limit on search endpoint Infra MK Sep 3 NOR-146 Dark mode contrast on badges Bug SC Sep 4 NOR-147 Bulk edit for labels Feature AL Sep 4 NOR-148 Sidebar collapse animation jank Bug JR Sep 5 NOR-149 Export issues to CSV Feature TP Sep 5 NOR-150 Retry failed webhook deliveries Infra MK Sep 6 NOR-151 Mobile row height too tall Bug SC Sep 6 NOR-152 Snooze notifications Feature AL Sep 7 NOR-153 Cycle burndown rounding bug Bug JR Sep 7 1 brand color · icons for status
Every action shows its shortcut. Filter is F, Display is D, New issue is C, search is ⌘K. Hover lands in about 80ms. Everything else stays under 150ms, ease-out, no bounce and no overshoot. The UI answers before the gesture finishes.
transition: background-color 80ms cubic-bezier(0 .25 , 0 .46 , 0 .45 , 0 .94 );
The palette lists the rest: P sets priority, I assigns the issue to you, ⌘B toggles the sidebar. If an action has a shortcut, the shortcut is part of the label.
DECISION 04 · KEYBOARD
The UI answers first.
N Northstar
TEAMS
SC Sarah Chen
FilterF DisplayD
+ New issueC NOR-140 Fix focus ring on command palette Bug SC Sep 1 NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 NOR-142 Empty state for archived projects Design JR Sep 2 NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 NOR-144 Onboarding checklist drop-off Design TP Sep 3 NOR-145 Rate limit on search endpoint Infra MK Sep 3 NOR-146 Dark mode contrast on badges Bug SC Sep 4 NOR-147 Bulk edit for labels Feature AL Sep 4 NOR-148 Sidebar collapse animation jank Bug JR Sep 5 NOR-149 Export issues to CSV Feature TP Sep 5 NOR-150 Retry failed webhook deliveries Infra MK Sep 6 NOR-151 Mobile row height too tall Bug SC Sep 6 NOR-152 Snooze notifications Feature AL Sep 7 NOR-153 Cycle burndown rounding bug Bug JR Sep 7 Set priority P
Create issue C
Assign to me I
Search /
Toggle sidebar ⌘B
hover 80 ms
transition 150 ms
generic 300 ms
bouncy snappy
80 ms hover · 150 ms max · 0 overshoot
A 4px grid does the rest. Icons are 16px and centered on the text line. Labels and ids sit on the left. Numbers and dates sit on the right. Nothing is centered. Alignment is invisible when it is right, and loud when a date drifts.
grid-template-columns : 16px 3 .5rem minmax(0, 1fr) auto auto auto;
gap: 8px;
padding-inline : 8px;
DECISION 05 · ALIGNMENT
Invisible when right.
N Northstar
TEAMS
SC Sarah Chen
FilterF DisplayD
+ New issueC NOR-140 Fix focus ring on command palette Bug SC Sep 1 NOR-141 Migrate billing webhooks to v2 Infra MK Sep 1 NOR-142 Empty state for archived projects Design JR Sep 2 NOR-143 Keyboard shortcut cheat sheet Feature AL Sep 2 NOR-144 Onboarding checklist drop-off Design TP Sep 3 NOR-145 Rate limit on search endpoint Infra MK Sep 3 NOR-146 Dark mode contrast on badges Bug SC Sep 4 NOR-147 Bulk edit for labels Feature AL Sep 4 NOR-148 Sidebar collapse animation jank Bug JR Sep 5 NOR-149 Export issues to CSV Feature TP Sep 5 NOR-150 Retry failed webhook deliveries Infra MK Sep 6 NOR-151 Mobile row height too tall Bug SC Sep 6 NOR-152 Snooze notifications Feature AL Sep 7 NOR-153 Cycle burndown rounding bug Bug JR Sep 7 ×2 · ONE ROW aligned
NOR-147 Bulk edit for labels Feature AL Sep 4
16 px · centered left right
4 px grid · 16 px icons · numbers right
Do:
Build depth from three background values plus a hairline border, and change the surface on hover.
Print the shortcut next to every action. Keep hover near 80ms and other transitions under 150ms.
Left-align labels and ids, right-align numbers and dates, and center 16px icons on the text line.
Don't:
Use a drop shadow to separate rows, panels, or the sidebar.
Encode status or priority with a colored pill when a grey icon says the same thing.
Let a transition bounce, overshoot, or run past 150ms.