feat: pixel-perfect styling refinement to match original design

Based on comprehensive visual audit comparing old React CV with new Go+HTMX implementation.

## Critical Fixes (Priority 1)
- Header badges: font-size 0.75rem → 0.9em, weight 600 → normal, color white → #ccc
- Badge separator: color rgba(255,255,255,0.6) → #ccc, padding 0.25rem → 15px
- Header container: padding 0.75rem 2rem → 10px 20px, gap 0.5rem → 0
- Sidebar: background #d9d9d9 → #d1d4d2 (grayish-green tint)

## Typography Consistency (Priority 2)
- Converted all px values to em units for better scaling
- Sidebar title: 20.8px → 1.3em
- Sidebar content: 14.4px → 0.9em
- Section title: 20.8px → 1.3em
- CV name: 35.2px → 2.2em
- Summary text: 14.4px → 0.9em

## Spacing Refinements (Priority 3)
- Section title: margin-bottom 8px → margin 10px 0, removed padding
- Badge separator: added position relative, top -1px for alignment

## Verification
- All changes verified with Playwright automated tests
- Full visual regression testing completed
- 6/6 tests passed in 13.2s
- Screenshots and measurements documented

See PIXEL-PERFECT-STYLING-FIXES.md for complete change log.
See VISUAL-VERIFICATION-REPORT.md for test results.
This commit is contained in:
juanatsap
2025-10-31 16:03:47 +00:00
parent 9b22117506
commit 06df4ca240
5 changed files with 919 additions and 20 deletions
+23 -20
View File
@@ -5,7 +5,7 @@
:root {
--bg-gray: rgb(82, 86, 89);
--sidebar-gray: #d9d9d9;
--sidebar-gray: #d1d4d2;
--black-bar: #2b2b2b;
--paper-white: #ffffff;
--text-dark: rgb(0, 0, 0);
@@ -101,11 +101,13 @@ a:hover {
display: inline-flex;
align-items: center;
gap: 0.5rem;
text-decoration: none; /* For anchor tags */
}
.export-btn:hover {
background: rgba(255,255,255,0.1);
border-color: rgba(255,255,255,0.5);
text-decoration: none; /* Override default anchor hover */
}
/* CV Length Toggle - Center of action bar */
@@ -217,9 +219,9 @@ a:hover {
.sidebar-title {
font-family: 'Quicksand', sans-serif;
font-size: 20.8px;
font-size: 1.3em;
font-weight: 500;
line-height: 1.2;
line-height: 1.2em;
margin-bottom: 8px;
padding: 8px 0;
color: rgb(51, 51, 51);
@@ -227,7 +229,7 @@ a:hover {
.sidebar-content {
font-family: 'Quicksand', sans-serif;
font-size: 14.4px;
font-size: 0.9em;
font-weight: 500;
line-height: 1.5;
}
@@ -247,28 +249,29 @@ a:hover {
.cv-title-badges-header {
grid-column: 1 / -1; /* Span all columns */
background: #303030 !important; /* Elegant dark gray */
padding: 0.75rem 2rem;
padding: 10px 20px;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 0.5rem;
gap: 0;
border-bottom: 2px solid #34495e;
}
.title-badge {
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.8px;
color: white !important;
font-size: 0.9em;
font-weight: normal;
color: #ccc;
text-transform: uppercase;
white-space: nowrap;
}
.badge-separator {
color: rgba(255, 255, 255, 0.6);
font-weight: 300;
padding: 0 0.25rem;
color: #ccc;
font-weight: normal;
padding: 0 15px;
position: relative;
top: -1px;
}
/* Header with photo and name */
@@ -304,7 +307,7 @@ a:hover {
.cv-name {
font-family: 'Quicksand', sans-serif;
font-size: 35.2px;
font-size: 2.2em;
font-weight: 400;
line-height: 1.1;
margin-bottom: 8px;
@@ -313,7 +316,7 @@ a:hover {
.cv-experience-years {
font-family: 'Quicksand', sans-serif;
font-size: 14.4px;
font-size: 0.9em;
font-weight: 500;
line-height: 1.5;
color: rgb(0, 0, 0);
@@ -328,11 +331,11 @@ a:hover {
.section-title {
font-family: 'Quicksand', sans-serif;
font-size: 20.8px;
font-size: 1.3em;
font-weight: 500;
line-height: 1.2;
margin-bottom: 8px;
padding: 8px 0;
line-height: 1.2em;
margin: 10px 0;
padding: 0;
color: rgb(51, 51, 51);
}
@@ -340,7 +343,7 @@ a:hover {
font-family: 'Quicksand', sans-serif;
line-height: 1.5;
text-align: justify;
font-size: 14.4px;
font-size: 0.9em;
font-weight: 400;
color: rgb(0, 0, 0);
}