blob: a19a5ae614021532b101d9f96d5b536f513882cd [file]
/* ------------------------------------------------------------------ */
/* Timeline — vertical milestone timeline */
/* ------------------------------------------------------------------ */
.timeline {
margin: 2.5rem 0;
}
/* ---- Row: marker + content -------------------------------------- */
.item {
display: flex;
gap: 28px;
&:hover .dot {
transform: scale(1.35);
box-shadow: 0 0 0 6px rgba(255, 89, 0, 0.18);
}
}
/* ---- Marker (dot + line) ---------------------------------------- */
.marker {
display: flex;
flex-direction: column;
align-items: center;
width: 20px;
flex-shrink: 0;
}
.dot {
width: 16px;
height: 16px;
border-radius: 50%;
background: var(--brand-orange-deep);
border: 3px solid var(--color-bg);
flex-shrink: 0;
margin-top: 5px;
z-index: 1;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.dotLatest {
animation: dotPulse 2.2s ease-in-out infinite;
box-shadow: 0 0 0 0 rgba(255, 89, 0, 0.45);
}
@keyframes dotPulse {
0% {
box-shadow: 0 0 0 0 rgba(255, 89, 0, 0.45);
}
70% {
box-shadow: 0 0 0 10px rgba(255, 89, 0, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(255, 89, 0, 0);
}
}
.line {
width: 2px;
flex: 1;
min-height: 28px;
background: linear-gradient(
to bottom,
var(--brand-orange-deep) 0%,
var(--color-border) 20%
);
margin-top: 6px;
border-radius: 1px;
}
/* ---- Content ---------------------------------------------------- */
.content {
flex: 1;
padding-bottom: 40px;
}
.date {
display: inline-block;
font-family: var(--font-family-mono);
font-size: 0.8125rem;
font-weight: 600;
color: var(--color-accent);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 6px;
}
.title {
font-family: var(--font-family-display);
font-size: 1.125rem;
font-weight: 700;
line-height: 1.35;
color: var(--color-text);
margin: 0 0 8px 0;
}
.desc {
font-size: 0.9375rem;
line-height: 1.7;
color: var(--color-text-muted);
margin: 0;
max-width: 640px;
}
/* ---- Reference links ------------------------------------------- */
.links {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 12px;
}
.link {
font-size: 0.8125rem;
font-weight: 500;
color: var(--color-accent);
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
transition: color var(--motion-fast);
&:hover {
color: var(--color-accent-hover);
text-decoration-thickness: 2px;
}
}
/* ---- Dark-mode overrides --------------------------------------- */
html[data-theme="dark"] {
.dot {
/* Match the surface color so the border ring blends in */
border-color: var(--color-bg);
}
}
/* ---- Accessibility: reduce motion ------------------------------ */
@media (prefers-reduced-motion: reduce) {
.dot {
transition: none;
}
.dotLatest {
animation: none;
box-shadow: 0 0 0 4px rgba(255, 89, 0, 0.25);
}
}
/* ---- Responsive ------------------------------------------------- */
@media (max-width: 768px) {
.item {
gap: 18px;
}
.content {
padding-bottom: 28px;
}
.title {
font-size: 1rem;
}
.desc {
font-size: 0.875rem;
}
}