diff --git a/frontend/src/v2/__tests__/v2-layout-invariants.test.ts b/frontend/src/v2/__tests__/v2-layout-invariants.test.ts index 25ec5d2fb6..0b88cc76d7 100644 --- a/frontend/src/v2/__tests__/v2-layout-invariants.test.ts +++ b/frontend/src/v2/__tests__/v2-layout-invariants.test.ts @@ -1331,11 +1331,21 @@ describe('v2 layout invariants (CSS rule presence)', () => { const title = ruleBody(v2, '.v2-board__card-title'); expect(title).toContain('display: -webkit-box'); - expect(title).toContain('-webkit-line-clamp: 3'); + expect(title).toContain('-webkit-line-clamp: 2'); expect(title).toContain('-webkit-box-orient: vertical'); expect(title).toContain('overflow: hidden'); }); + test('board cards match the D215 artboard: two-line titles, 8/10/9 padding, 9px radius', () => { + // Artboard .tc: 13px/18px title clamped to two lines, padding 8px 10px 9px, + // gap 4px, radius 9px. The 1440 and 390 measure targets depend on these. + expect(ruleBody(v2, '.v2-board__card-title')).toContain('-webkit-line-clamp: 2'); + expect(v2).toContain('.v2-board__card-title { font-size: 13px; line-height: 18px; }'); + // ruleBody returns the first match, which is the base rule; these override rules sit later in the file. + expect(v2).toContain('.v2-board__card { border-radius: 9px; }'); + expect(v2).toContain('.v2-root button.v2-board__card-main { gap: 4px; padding: 8px 10px 9px; }'); + }); + test('a board claim lease reads as secondary status rather than a blue mention', () => { expect(podBoard).toContain('className="v2-board__owner-line"'); const lease = ruleBody(v2, '.v2-board__owner-line'); diff --git a/frontend/src/v2/v2.css b/frontend/src/v2/v2.css index 29960f2c40..d70522867d 100644 --- a/frontend/src/v2/v2.css +++ b/frontend/src/v2/v2.css @@ -9006,7 +9006,7 @@ body.modern-ui.v2-canvas { color: var(--v2-text-primary); line-height: 1.35; display: -webkit-box; - -webkit-line-clamp: 3; + -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } @@ -13812,8 +13812,8 @@ body.modern-ui.v2-canvas { .v2-board__col { border-radius: 6px; gap: 8px; } .v2-board__col-name { font-size: 13px; line-height: 20px; letter-spacing: 0; text-transform: none; } .v2-board__col-count { font: 500 11px/16px var(--v2-font-mono); background: none; padding: 0; } -.v2-board__card { border-radius: 4px; } -.v2-root button.v2-board__card-main { gap: 6px; padding: 12px; } +.v2-board__card { border-radius: 9px; } +.v2-root button.v2-board__card-main { gap: 4px; padding: 8px 10px 9px; } .v2-board__card-kicker { display: flex; align-items: center; gap: 6px; } .v2-board__card-id { font: 500 11px/16px var(--v2-font-mono); } .v2-board__priority { @@ -13829,7 +13829,7 @@ body.modern-ui.v2-canvas { .v2-board__priority--p2 { color: var(--v2-prio-p2-fg); } .v2-board__col--blocked .v2-board__col-name { color: var(--v2-status-blocked); } .v2-board__card--blocked { box-shadow: inset 3px 0 0 var(--v2-status-blocked-edge); } -.v2-board__card-title { font-size: 14px; line-height: 20px; } +.v2-board__card-title { font-size: 13px; line-height: 18px; } .v2-board__owner-line { display: flex; align-items: center; gap: 6px; font: 500 11px/16px var(--v2-font-mono); color: var(--v2-text-secondary); } .v2-board__owner-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; } .v2-board__owner-dot--live { background: var(--v2-status-live); }