Skip to content

Commit a0ab2d8

Browse files
committed
blinking typewritter title; new topics and keyword search research tab; adapted AI language
1 parent 2c59544 commit a0ab2d8

22 files changed

Lines changed: 909 additions & 401 deletions

‎README.md‎

Lines changed: 248 additions & 89 deletions
Large diffs are not rendered by default.

‎css/styles.css‎

Lines changed: 84 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ nav.scrolled { box-shadow: 0 2px 20px rgba(0,0,0,.35); }
299299
}
300300

301301
.hero-title {
302+
position: relative;
302303
font-size: clamp(2.8rem, 6vw, 4.8rem);
303304
color: var(--white);
304305
margin-bottom: 1.5rem;
@@ -307,16 +308,43 @@ nav.scrolled { box-shadow: 0 2px 20px rgba(0,0,0,.35); }
307308
}
308309
.hero-title span { color: var(--teal); }
309310

311+
/* Typewriter animation layers.
312+
.hero-title span { color:teal } has specificity 0-1-1, so we need
313+
0-2-0 here to keep the wrapper spans white while inner <span>s stay teal. */
314+
.hero-title .hero-title-ghost {
315+
display: block; /* sets the h1 height so layout never shifts */
316+
color: var(--white);
317+
opacity: 0.18;
318+
pointer-events: none;
319+
user-select: none;
320+
}
321+
.hero-title-ghost-teal { color: var(--teal); }
322+
323+
.hero-title .hero-title-typed {
324+
position: absolute;
325+
top: 0; left: 0;
326+
display: block;
327+
color: var(--white); /* text defaults to white; inner <span> gets teal via .hero-title span */
328+
}
329+
/* Blinking cursor - permanent after typing completes */
330+
.hero-title-typed.typing::after {
331+
content: '|';
332+
color: rgba(255,255,255,.55);
333+
animation: hero-caret-blink .7s step-end infinite;
334+
}
335+
@keyframes hero-caret-blink {
336+
0%, 100% { opacity: 1; }
337+
50% { opacity: 0; }
338+
}
339+
310340
.hero-desc {
311341
font-size: 1.15rem;
312342
color: rgba(255,255,255,.65);
313343
max-width: 580px;
314344
line-height: 1.8;
315-
margin-bottom: 2.5rem;
345+
margin-bottom: 1.5rem;
316346
}
317347

318-
.hero-ctas { display: flex; flex-wrap: wrap; gap: 1rem; }
319-
320348
.hero-affiliations {
321349
position: relative; z-index: 1;
322350
margin-top: 5rem;
@@ -1876,10 +1904,47 @@ footer {
18761904
.rfilter-dot {
18771905
width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
18781906
}
1879-
.rfilter-dot.cancer { background: #fca5a5; }
1880-
.rfilter-dot.neuro { background: #c4b5fd; }
1881-
.rfilter-dot.bioinformatics { background: #5eead4; }
1882-
.rfilter-dot.biostatistics { background: #fcd34d; }
1907+
.rfilter-dot.cancer { background: #fca5a5; }
1908+
.rfilter-dot.neuro { background: #c4b5fd; }
1909+
.rfilter-dot.bioinformatics { background: #5eead4; }
1910+
.rfilter-dot.biostatistics { background: #fcd34d; }
1911+
.rfilter-dot.evolutionary { background: #86efac; }
1912+
.rfilter-dot.external { background: #7dd3fc; }
1913+
1914+
/* Keyword search */
1915+
.research-keyword-search-wrap {
1916+
position: relative;
1917+
display: flex;
1918+
align-items: center;
1919+
max-width: 320px;
1920+
margin-bottom: 2rem;
1921+
}
1922+
.research-keyword-search-icon {
1923+
position: absolute;
1924+
left: .75rem;
1925+
color: var(--muted);
1926+
pointer-events: none;
1927+
flex-shrink: 0;
1928+
}
1929+
.research-keyword-search {
1930+
width: 100%;
1931+
padding: .5rem .9rem .5rem 2.25rem;
1932+
border-radius: 999px;
1933+
border: 1.5px solid var(--border);
1934+
background: var(--white);
1935+
color: var(--navy);
1936+
font-size: .84rem;
1937+
font-family: var(--font-body);
1938+
transition: border-color var(--transition), box-shadow var(--transition);
1939+
outline: none;
1940+
-webkit-appearance: none;
1941+
}
1942+
.research-keyword-search::placeholder { color: var(--muted); }
1943+
.research-keyword-search:focus {
1944+
border-color: var(--teal);
1945+
box-shadow: 0 0 0 3px rgba(8,124,114,.1);
1946+
}
1947+
.research-keyword-search::-webkit-search-cancel-button { cursor: pointer; }
18831948

18841949
/* Project card grid */
18851950
.research-card-grid {
@@ -1939,6 +2004,8 @@ footer {
19392004
.research-theme-pill.neuro { background: #f5f3ff; color: #6d31cc; } /* was passing; darkened for consistency */
19402005
.research-theme-pill.bioinformatics { background: #f0fdfa; color: #087c72; } /* uses new --teal, passes 4.5:1 */
19412006
.research-theme-pill.biostatistics { background: #fffbeb; color: #92400e; } /* amber-800 ~7.5:1 on pill-bg, WCAG AA */
2007+
.research-theme-pill.evolutionary { background: #f0fdf4; color: #166534; } /* green-800 ~7:1 on pill-bg, WCAG AA */
2008+
.research-theme-pill.external { background: #f0f9ff; color: #0369a1; } /* sky-700 ~5.7:1 on pill-bg, WCAG AA */
19422009

19432010
.research-card-title {
19442011
font-size: .9rem;
@@ -2006,6 +2073,14 @@ footer {
20062073
border-color: #fcd34d;
20072074
background: #fffef5;
20082075
}
2076+
.research-card[data-theme~="evolutionary"]:hover {
2077+
border-color: #86efac;
2078+
background: #f7fff9;
2079+
}
2080+
.research-card[data-theme~="external"]:hover {
2081+
border-color: #7dd3fc;
2082+
background: #f5faff;
2083+
}
20092084
/* Stripe grows on hover */
20102085
.research-card:hover .research-card-stripe { height: 6px; }
20112086

@@ -2205,6 +2280,8 @@ footer {
22052280
.research-pub-panel-summary.neuro { border-left: 4px solid #c4b5fd; }
22062281
.research-pub-panel-summary.bioinformatics { border-left: 4px solid #5eead4; }
22072282
.research-pub-panel-summary.biostatistics { border-left: 4px solid #fcd34d; }
2283+
.research-pub-panel-summary.evolutionary { border-left: 4px solid #86efac; }
2284+
.research-pub-panel-summary.external { border-left: 4px solid #7dd3fc; }
22082285
.research-pub-panel-chevron {
22092286
margin-left: auto;
22102287
flex-shrink: 0;

0 commit comments

Comments
 (0)