feat(design): surface phase PR 7 — edge surfaces polish

Per the spec, the final per-surface PR bundles the smaller / chrome-y /
library-driven views (Header / Home / Calendar / Graph) together with
EventSlideOver since it's the calendar's primary interaction surface.

Button reclassification per Hybrid rule
- CalendarView btn-new-event: accent gradient → Moss action-primary.
  Creating an event is a workflow action, not a brand moment.
- EventSlideOver btn-primary (Save): accent gradient → Moss
- EventSlideOver btn-secondary (Cancel/No): muted ghost → Bronze
  action-secondary
- EventSlideOver btn-danger-ghost (Delete): hardcoded #ef4444 →
  --color-action-destructive ghost (with filled hover)
- EventSlideOver btn-danger (confirm Delete): hardcoded #ef4444 →
  --color-action-destructive filled

Brand-moment CTAs kept on accent
- HomeView btn-workspace-hero: home-page hero CTA into the active
  project — central brand-moment surface, gradient stays
- HomeView btn-workspace-sm: per-card workspace icon with the
  accent-tinted bg + hover-to-accent pattern, kept

Two-weights-only
- Snapped every font-weight 600/700 to 500 across the bundle
  (HomeView, GraphView, CalendarView, AppHeader, EventSlideOver).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-27 23:17:04 -04:00
parent 541e2ed713
commit 3c1ec4077f
5 changed files with 53 additions and 44 deletions
+8 -8
View File
@@ -585,14 +585,14 @@ function formatUpcomingTime(event: EventEntry): string {
}
.hero-label {
font-size: 0.7rem;
font-weight: 700;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--color-text-muted);
}
.hero-title {
font-size: 1.4rem;
font-weight: 700;
font-weight: 500;
color: var(--color-text);
text-decoration: none;
letter-spacing: -0.02em;
@@ -610,7 +610,7 @@ function formatUpcomingTime(event: EventEntry): string {
border-radius: var(--radius-sm);
text-decoration: none;
font-size: 0.9rem;
font-weight: 600;
font-weight: 500;
white-space: nowrap;
box-shadow: 0 1px 6px rgba(91, 74, 138, 0.3);
transition: opacity 0.15s, box-shadow 0.15s;
@@ -625,7 +625,7 @@ function formatUpcomingTime(event: EventEntry): string {
.hero-section-label {
font-size: 0.68rem;
font-weight: 700;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.07em;
color: var(--color-text-muted);
@@ -688,7 +688,7 @@ function formatUpcomingTime(event: EventEntry): string {
justify-content: space-between;
margin-bottom: 0.75rem;
}
.section-header h2 { margin: 0; font-size: 1rem; font-weight: 600; }
.section-header h2 { margin: 0; font-size: 1rem; font-weight: 500; }
.see-all { font-size: 0.85rem; color: var(--color-primary); text-decoration: none; }
.see-all:hover { text-decoration: underline; }
@@ -718,7 +718,7 @@ function formatUpcomingTime(event: EventEntry): string {
}
.project-card-title {
font-size: 0.9rem;
font-weight: 600;
font-weight: 500;
color: var(--color-text);
text-decoration: none;
flex: 1;
@@ -799,7 +799,7 @@ function formatUpcomingTime(event: EventEntry): string {
.inbox-header h2 {
margin: 0;
font-size: 0.95rem;
font-weight: 600;
font-weight: 500;
display: flex;
align-items: center;
gap: 0.4rem;
@@ -911,7 +911,7 @@ function formatUpcomingTime(event: EventEntry): string {
}
.upcoming-event-title {
font-size: 0.85rem;
font-weight: 600;
font-weight: 500;
color: var(--color-text);
white-space: nowrap;
overflow: hidden;