You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"northStar": "The Dark Calendar Canvas, One Accent",
228
-
"overview": "Compass is a near-black blue canvas where the only truly saturated color is a single sky-blue accent (#57c1ff). Everything structural, the grid lines, panels, borders, and most text, lives in a narrow blue-gray band against a deep #0d1017 background. Color enters the screen only where it carries meaning: the accent marks selection and primary actions, and a small set of muted priority colors tints the event blocks themselves. The interface is dim and low-contrast at rest so the user's events and current task are the brightest things on screen. The one deliberately human note is handwriting: the Caveat script font on the weekly Reminder and Dedication, a personal touch at the margin of an otherwise precise instrument.",
220
+
"overview": "Compass is a near-black blue canvas where the only truly saturated color is a single sky-blue accent (#57c1ff). Everything structural, the grid lines, panels, borders, and most text, lives in a narrow blue-gray band against a deep #0d1017 background. Color enters the screen only where it carries meaning: the accent marks selection and primary actions, and a small set of muted priority colors tints the event blocks themselves. The interface is dim and low-contrast at rest so the user's events and current task are the brightest things on screen. The one deliberately human note is handwriting: the Caveat script font on the Dedication, a personal touch at the margin of an otherwise precise instrument.",
229
221
"keyCharacteristics": [
230
222
"Deep blue-black surface (#0d1017), built up by tonal layering, not boxes.",
231
223
"Exactly one bright accent (#57c1ff); meaning, not decoration.",
@@ -246,7 +238,7 @@
246
238
},
247
239
{
248
240
"name": "The One Voice Rule",
249
-
"body": "Rubik is the only UI typeface. Display fonts in labels, buttons, or data are forbidden. Caveat is the single exception, on the Reminder/Dedication only.",
241
+
"body": "Rubik is the only UI typeface. Display fonts in labels, buttons, or data are forbidden. Caveat is the single exception, on the Dedication only.",
250
242
"section": "typography"
251
243
},
252
244
{
@@ -266,7 +258,7 @@
266
258
"Do leave controls borderless at rest and reveal them via background/color shift on hover and focus.",
267
259
"Do reserve priority colors (Work/Relations/Self/Unassigned) for event blocks and tags, not chrome.",
268
260
"Do carry all UI in Rubik, using weight (400/500/700) and the fixed rem scale for hierarchy.",
269
-
"Do confine Caveat handwriting to the Reminder and Dedication.",
261
+
"Do confine Caveat handwriting to the Dedication.",
270
262
"Do hold body/label text to WCAG AA contrast against the dark surfaces; bump muted blue-grays toward fg-primary when contrast is close."
Copy file name to clipboardExpand all lines: DESIGN.md
+28-8Lines changed: 28 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,11 +91,12 @@ components:
91
91
92
92
Compass is a near-black blue canvas where the only truly saturated color is a single sky-blue accent (`#57c1ff`). Everything structural, the grid lines, panels, borders, and most text, lives in a narrow blue-gray band against a deep `#0d1017` background. Color enters the screen only where it carries meaning: the accent marks selection and primary actions, and a small set of muted priority colors (work, relations, self, unassigned) tints the event blocks themselves. The interface is dim and low-contrast at rest so the user's events and current task are the brightest things on screen.
93
93
94
-
This is a planning tool for people who want the calendar to get out of the way. Density is welcome where it serves the task (a full week of events, a packed sidebar), but chrome is kept quiet: no borders until you interact, no decorative fills, no second accent competing for attention. The one deliberately human note is handwriting: the Caveat script font on the weekly Reminder and Dedication, a personal touch at the margin of an otherwise precise instrument.
94
+
This is a planning tool for people who want the calendar to get out of the way. Density is welcome where it serves the task (a full week of events, a packed sidebar), but chrome is kept quiet: no borders until you interact, no decorative fills, no second accent competing for attention. The one deliberately human note is handwriting: the Caveat script font is a personal touch at the margin of an otherwise precise instrument.
95
95
96
96
What this system rejects: the cluttered toolbars and nested menus of Google/Outlook Calendar; the neutral-gray card grids and stock radii of a generic shadcn or SaaS dashboard; playful candy colors and mascots; and heavy navy-and-gray corporate density. Compass owns its dark, blue-accented identity rather than reaching for any of those defaults.
97
97
98
98
**Key Characteristics:**
99
+
99
100
- Deep blue-black surface (`#0d1017`), built up by tonal layering, not boxes.
100
101
- Exactly one bright accent (`#57c1ff`); meaning, not decoration.
101
102
- Muted priority colors are the only other saturation, and only on events.
@@ -107,17 +108,21 @@ What this system rejects: the cluttered toolbars and nested menus of Google/Outl
107
108
A monochrome blue-gray system on a near-black base, punctuated by one sky-blue accent and a muted priority palette reserved for event content.
108
109
109
110
### Primary
111
+
110
112
-**Sky Accent** (`#57c1ff`, `hsl(202 100 67)`): The single saturated color. Used for the current selection, primary actions, links, info status, and the first tag color. It is the brightest, most attention-pulling element on any screen; that scarcity is the point.
111
113
112
114
### Secondary
115
+
113
116
-**Soft Cyan** (`#aed3e0`, `hsl(196 45 78)`): The light end of the accent gradient (`accent-primary → soft-cyan`) and the Work priority tint. A calmer companion to the sky accent, never used as a competing focal point.
114
117
115
118
### Tertiary (priority palette, events only)
119
+
116
120
-**Relations Teal** (`#86d0bb`, `hsl(163 44 67)`): The Relations priority color on event blocks.
117
121
-**Self Blue-Gray** (`#9fb0bf`, `hsl(205 36 62)`): The Self priority color.
118
122
-**Unassigned Slate** (`#8293a1`, `hsl(207 14 57)`): The default/unassigned priority color.
119
123
120
124
### Neutral
125
+
121
126
-**Canvas** (`#0d1017`, `hsl(222 28 7)`): The body background and the darkest surface. Also the text color on light/colored fills (`text-dark`).
122
127
-**Raised Canvas** (`#11151c`, `hsl(218 24 9)`): One step up in lightness; secondary surfaces and raised panels. Depth comes from this lightness step, not from boxes.
123
128
-**UI Text** (`#bfbdb5`, `hsl(47 7 73)`): The primary foreground; a faintly warm light gray for body and label text on dark surfaces. Also the secondary border color.
@@ -126,9 +131,11 @@ A monochrome blue-gray system on a near-black base, punctuated by one sky-blue a
126
131
-**Menu Surface** (`#fafafa`, `hsl(0 0 98)`): The one inverted surface; the light background used for the command palette / menu, where `text-dark` and `text-dark-placeholder` apply.
127
132
128
133
### Status
134
+
129
135
-**Success** (`#81d963`), **Error** (`#d95959`), **Warning** (`#ff9142`), **Info** (`#57c1ff`, the accent). State signals only.
130
136
131
137
### Named Rules
138
+
132
139
**The One Accent Rule.** Exactly one saturated accent (`#57c1ff`) on any screen, reserved for selection, primary action, and info. If a second saturated hue appears anywhere outside an event block or a status signal, it is wrong.
133
140
134
141
**The Color-Means-Something Rule.** Saturation is forbidden as decoration. The accent means "selected / primary / info"; priority colors mean "this event's category"; status colors mean "this state." Structural chrome stays in the blue-gray band.
@@ -139,20 +146,22 @@ A monochrome blue-gray system on a near-black base, punctuated by one sky-blue a
**Character:** One humanist sans (Rubik) carries the entire UI, headings through data, with weight and size doing the hierarchy work. The only departure is Caveat, a casual handwriting face used as a deliberate human accent on the weekly Reminder and Dedication, never for UI chrome.
149
+
**Character:** One humanist sans (Rubik) carries the entire UI, headings through data, with weight and size doing the hierarchy work. The only departure is Caveat, a casual handwriting face used as a deliberate human accent on the Dedication, never for UI chrome.
143
150
144
151
### Hierarchy
152
+
145
153
The scale is a fixed rem ramp (product UI, not fluid display type). Steps: `xs 0.563rem`, `s 0.688rem`, `m 0.8125rem`, `l 1rem`, `xl 1.125rem`, `xxl 1.3rem`, `xxxl 1.6rem`, `4xl 1.7rem`, `5xl 2rem`. Weights: light 300, regular 400, medium 500, bold 700, extraBold 900.
146
154
147
155
-**Display** (Rubik, 700, `2rem`/5xl): The largest headings; view titles and prominent moments. Top of the ramp; used sparingly.
148
156
-**Title** (Rubik, 500, `1.3rem`/xxl): Section and panel headings.
149
157
-**Body** (Rubik, 400, `1rem`/l): Default reading and input text. Cap prose at 65–75ch.
150
158
-**Label** (Rubik, 500, `0.8125rem`/m): Dense UI labels, event titles, controls. The workhorse size for the calendar grid.
-**Script** (Caveat, 400, `1.6rem`+): The weekly Reminder and Dedication only.
160
+
-**Script** (Caveat, 400, `1.6rem`+): The Dedication only.
153
161
154
162
### Named Rules
155
-
**The One Voice Rule.** Rubik is the only UI typeface. Display fonts in labels, buttons, or data are forbidden. Caveat is the single sanctioned exception and only on the Reminder/Dedication.
163
+
164
+
**The One Voice Rule.** Rubik is the only UI typeface. Display fonts in labels, buttons, or data are forbidden. Caveat is the single sanctioned exception and only on the Dedication.
156
165
157
166
**The No All-Caps Body Rule.** Uppercase is reserved for short labels and badges (≤4 words). No sentences in all caps.
158
167
@@ -161,10 +170,12 @@ The scale is a fixed rem ramp (product UI, not fluid display type). Steps: `xs 0
161
170
Depth is conveyed two ways, in order of priority. **First, tonal layering:** surfaces stack by stepping lightness within the near-black blue band (`bg-primary #0d1017` → `bg-secondary #11151c` → translucent panel fills like `panel-bg hsl(219 8 46 / 20%)`). A higher surface is a slightly lighter blue, not a boxed-and-shadowed card. **Second, shadow reserved for state and floating layers:** drop shadows are not a resting decoration; they appear when an element leaves the plane, hover, focus, an active drag/resize Interaction Overlay, or a menu/overlay panel that floats above the grid. The default shadow is a soft `hsla(0 0 0 / 25%)`.
162
171
163
172
### Shadow Vocabulary
173
+
164
174
-**State lift** (`box-shadow` with `hsla(0 0 0 / 25%)`): Applied on hover/focus and during drag or resize to signal the element is now interactive or in motion.
165
175
-**Floating panel** (`panel-shadow hsl(221 9 37)`): Separates overlays, menus, and the command palette from the grid beneath.
166
176
167
177
### Named Rules
178
+
168
179
**The Layer-By-Light Rule.** Build depth by stepping surface lightness, not by drawing borders or dropping shadows on resting elements. A raised surface is a lighter blue.
169
180
170
181
**The Shadow-Is-State Rule.** A shadow at rest is a bug. Shadows appear only on hover, focus, active drag/resize, or for layers that genuinely float above the grid (menus, overlays, the command palette).
@@ -174,46 +185,55 @@ Depth is conveyed two ways, in order of priority. **First, tonal layering:** sur
174
185
Controls are quiet, borderless, and hover-revealing: they sit flush on their surface with no resting border and announce themselves through a background or color shift on interaction. Radii are small (2–6px). Transitions are short (≈0.3s).
175
186
176
187
### Buttons
188
+
177
189
-**Shape:** Small radius (`2px` for priority buttons, `4px` default).
178
190
-**Priority button:** Background is the priority color (darkened at rest); `text-dark` (`#0d1017`) label; `min-width`~158px; `padding: 0 8px`. Disabled drops to `opacity: 0.5` and `pointer-events: none`.
179
191
-**Hover:** Background shifts to `bg-primary` and the label color brightens toward the priority color (`brighten()`); ~0.5s color transition. This hover-reveal is the signature button behavior.
180
192
-**Focus:** A `2px solid` dark border (`border-primary-dark`) appears on focus, the one place a border is added intentionally.
181
193
182
194
### Inputs / Fields
195
+
183
196
-**Style:** No border, no resting outline; `height: 34px`; `padding: 0 8px`; `l`/`1rem` font size; background set by context (light `menu-bg` in the palette, surface-matched elsewhere).
184
197
-**Placeholder:**`text-dark-placeholder` (`hsl(219 8 46 / 90.2%)`) on light fields.
185
198
-**Hover:** Background shifts to `border-primary`; the field reveals itself rather than carrying a permanent box.
186
199
-**Focus:**`outline: none` globally; focus is conveyed by context (selection state, surrounding chrome), consistent with the quiet-control philosophy.
187
200
188
201
### Tags / Priority Chips
202
+
189
203
-**Style:** Filled with the muted priority color (Work soft-cyan, Relations teal, Self blue-gray, Unassigned slate); `text-dark` label.
190
204
-**State:** Hover brightens the fill via `brighten()`. Used to categorize events; never as decorative accents elsewhere.
191
205
192
206
### Navigation / Planner Sidebar
207
+
193
208
-**Style:** A translucent panel (`panel-bg`) layered over the canvas by lightness, holding navigation, account context, and Someday Events. Text is `panel-text` (`#fafafa`). Custom thin scrollbars are transparent until hover (`compass-scroll`).
194
209
195
210
### Calendar Grid (signature surface)
211
+
196
212
-**Grid lines:**`grid-line-primary` hairlines (`hsl(219 18 34 / 20%)`) structure the Timed Grid without visual weight.
197
213
-**Events:** Priority-colored blocks are the brightest content on the canvas. A selected event uses `event-selected` (`#abb9c4`). During drag/resize, an Interaction Overlay carries a state shadow while the source element either dims (`dim-source`) or hides (`hide-source`).
198
214
199
215
### Command Palette
216
+
200
217
-**Style:** A floating light surface (`menu-bg #fafafa`) with `text-dark`, lifted above the dark canvas by a panel shadow. Keyboard-first; the primary navigation path.
201
218
202
-
### Handwritten Reminder / Dedication (signature)
219
+
### Handwritten Dedication (signature)
220
+
203
221
-**Style:** Caveat script (`"Caveat", cursive`) at display size. The single human, informal touch in an otherwise precise system; a note-to-self pinned to the week.
204
222
205
223
## 6. Do's and Don'ts
206
224
207
-
### Do:
225
+
### Do
226
+
208
227
-**Do** keep exactly one saturated accent (`#57c1ff`) per screen, for selection, primary action, and info only.
209
228
-**Do** build depth by stepping surface lightness (`#0d1017` → `#11151c` → translucent panels), per the Layer-By-Light Rule.
210
229
-**Do** leave controls borderless at rest and reveal them via background/color shift on hover and focus.
211
230
-**Do** reserve priority colors (Work/Relations/Self/Unassigned) for event blocks and tags, not chrome.
212
231
-**Do** carry all UI in Rubik, using weight (400/500/700) and the fixed rem scale for hierarchy.
213
-
-**Do** confine Caveat handwriting to the Reminder and Dedication.
232
+
-**Do** confine Caveat handwriting to the Dedication.
214
233
-**Do** hold body/label text to WCAG AA contrast against the dark surfaces; bump muted blue-grays toward `fg-primary` when contrast is close.
215
234
216
-
### Don't:
235
+
### Don't
236
+
217
237
-**Don't** rebuild the cluttered toolbars, nested menus, or busy chrome of Google/Outlook Calendar.
218
238
-**Don't** fall into the generic shadcn look: neutral-gray cards, stock radii and shadows, the interchangeable component-library surface. Compass is dark and blue-accented on purpose.
219
239
-**Don't** ship a generic SaaS dashboard: card grids, hero-metric templates, or gradient accents standing in for design.
0 commit comments