Skip to content

Commit 29931ef

Browse files
committed
Redesign project cards to remove redundancy and improve visual hierarchy
1 parent d60e8eb commit 29931ef

1 file changed

Lines changed: 78 additions & 49 deletions

File tree

layouts/project/list.html

Lines changed: 78 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@ <h1>Research Projects</h1>
1010
<article class="project-card">
1111
{{ $featured := .Resources.GetMatch "featured.*" }}
1212
{{ if $featured }}
13-
<div class="project-image">
13+
<div class="project-image" data-title="{{ .Title }}">
1414
<img src="{{ $featured.RelPermalink }}" alt="{{ .Title }}" loading="lazy">
15+
<div class="project-title-overlay">{{ .Title }}</div>
1516
</div>
1617
{{ end }}
1718

1819
<div class="project-content">
19-
<h2 class="project-title">
20-
{{ .Title }}
21-
</h2>
22-
2320
{{ if .Params.summary }}
2421
<p class="project-summary">{{ .Params.summary }}</p>
2522
{{ end }}
@@ -31,7 +28,6 @@ <h2 class="project-title">
3128
{{ end }}
3229
{{ end }}
3330
</div>
34-
3531
</div>
3632
</article>
3733
{{ end }}
@@ -73,86 +69,109 @@ <h2 class="project-title">
7369

7470
.project-card {
7571
background: white;
76-
border: 1px solid var(--vt-gray-200);
77-
border-radius: 16px;
72+
border: 1px solid #e5e7eb;
73+
border-radius: 12px;
7874
overflow: hidden;
7975
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
80-
box-shadow: 0 4px 12px rgba(134, 31, 65, 0.08);
76+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
8177
cursor: pointer;
78+
display: flex;
79+
flex-direction: column;
8280
}
8381

8482
.project-card:hover {
85-
transform: translateY(-8px);
86-
box-shadow: 0 20px 40px rgba(134, 31, 65, 0.15);
87-
border-color: var(--vt-maroon);
83+
transform: translateY(-6px);
84+
box-shadow: 0 12px 24px rgba(134, 31, 65, 0.12);
85+
border-color: rgba(134, 31, 65, 0.3);
8886
}
8987

9088
.project-image {
9189
position: relative;
92-
height: 200px;
90+
height: 160px;
9391
overflow: hidden;
92+
background: linear-gradient(135deg, rgba(134, 31, 65, 0.95), rgba(229, 117, 31, 0.95));
9493
}
9594

9695
.project-image img {
9796
width: 100%;
9897
height: 100%;
9998
object-fit: cover;
100-
transition: transform 0.3s ease;
99+
transition: transform 0.3s ease, opacity 0.3s ease;
100+
opacity: 0.85;
101101
}
102102

103103
.project-card:hover .project-image img {
104-
transform: scale(1.05);
104+
transform: scale(1.08);
105+
opacity: 0.95;
105106
}
106107

107-
108-
.project-content {
109-
padding: 1.25rem 1rem;
108+
.project-title-overlay {
109+
position: absolute;
110+
bottom: 0;
111+
left: 0;
112+
right: 0;
113+
padding: 1rem;
114+
background: linear-gradient(to top, rgba(0,0,0,0.9), rgba(0,0,0,0.3));
115+
color: white;
116+
font-size: 1.1rem;
117+
font-weight: 700;
110118
text-align: center;
119+
text-shadow: 0 2px 4px rgba(0,0,0,0.5);
120+
transition: all 0.3s ease;
111121
}
112122

113-
.project-title {
114-
font-size: 1.6rem;
115-
font-weight: 600;
116-
margin: 0 0 0.75rem 0;
117-
line-height: 1.3;
118-
text-align: center;
119-
color: var(--vt-gray-900);
120-
transition: color 0.3s ease;
123+
.project-card:hover .project-title-overlay {
124+
padding-bottom: 1.2rem;
125+
background: linear-gradient(to top, rgba(134, 31, 65, 0.95), rgba(134, 31, 65, 0.3));
121126
}
122127

123-
.project-card:hover .project-title {
124-
color: var(--vt-maroon);
128+
.project-content {
129+
padding: 1rem;
130+
text-align: center;
131+
display: flex;
132+
flex-direction: column;
133+
gap: 0.75rem;
134+
min-height: 120px;
125135
}
126136

127-
128137
.project-summary {
129-
color: var(--vt-gray-600);
130-
line-height: 1.6;
131-
margin: 0 0 1rem 0;
132-
font-size: 0.95rem;
138+
color: var(--vt-gray-700);
139+
line-height: 1.5;
140+
margin: 0;
141+
font-size: 0.85rem;
133142
display: -webkit-box;
134-
-webkit-line-clamp: 3;
143+
-webkit-line-clamp: 2;
135144
-webkit-box-orient: vertical;
136145
overflow: hidden;
146+
flex-grow: 1;
137147
}
138148

139149
.project-tags {
140-
margin-bottom: 0.75rem;
150+
display: flex;
151+
flex-wrap: wrap;
152+
gap: 0.35rem;
153+
justify-content: center;
154+
margin-top: auto;
141155
}
142156

143157
.tag {
144158
display: inline-block;
145-
background: linear-gradient(135deg, var(--vt-maroon), var(--vt-orange));
146-
color: white;
147-
padding: 0.25rem 0.75rem;
148-
border-radius: 12px;
149-
font-size: 0.7rem;
159+
background: rgba(134, 31, 65, 0.1);
160+
color: var(--vt-maroon);
161+
padding: 0.2rem 0.5rem;
162+
border-radius: 8px;
163+
font-size: 0.65rem;
150164
font-weight: 600;
151-
margin-right: 0.375rem;
152-
margin-bottom: 0.25rem;
153165
text-transform: uppercase;
154-
letter-spacing: 0.025em;
155-
box-shadow: 0 2px 4px rgba(134, 31, 65, 0.2);
166+
letter-spacing: 0.03em;
167+
border: 1px solid rgba(134, 31, 65, 0.2);
168+
transition: all 0.2s ease;
169+
}
170+
171+
.project-card:hover .tag {
172+
background: var(--vt-maroon);
173+
color: white;
174+
border-color: var(--vt-maroon);
156175
}
157176

158177

@@ -188,7 +207,16 @@ <h2 class="project-title">
188207
}
189208

190209
.project-content {
191-
padding: 1rem 0.75rem;
210+
padding: 0.9rem;
211+
}
212+
213+
.project-image {
214+
height: 140px;
215+
}
216+
217+
.project-title-overlay {
218+
font-size: 1rem;
219+
padding: 0.8rem;
192220
}
193221
}
194222

@@ -197,12 +225,13 @@ <h2 class="project-title">
197225
font-size: 1.5rem;
198226
}
199227

200-
.project-title {
201-
font-size: 1.3rem;
228+
.project-summary {
229+
font-size: 0.8rem;
202230
}
203231

204-
.project-summary {
205-
font-size: 0.9rem;
232+
.tag {
233+
font-size: 0.6rem;
234+
padding: 0.15rem 0.4rem;
206235
}
207236
}
208237
</style>

0 commit comments

Comments
 (0)