/* Portfolio project directory: genuine repo imagery, readable context and source links. */
.projects-intro { color:var(--light-gray); font-size:.95rem; line-height:1.7; margin:-5px 0 28px; max-width:65ch; }
.project-list { gap:32px 24px; align-items:start; }
.project-img { aspect-ratio:16/10; height:auto; background:#f4f5f7; border-radius:12px; }
.project-img::before { display:none; }
.project-img img { height:100%; width:100%; object-fit:contain; }
.project-item>a:hover img { transform:scale(1.025); }
.project-title,.project-category { margin-left:0; }
.project-title { text-transform:none; font-weight:600; line-height:1.45; }
.project-category { margin-top:7px; font-size:.75rem; }
.project-description { color:var(--light-gray); font-size:.85rem; line-height:1.65; margin:9px 0 14px; }
.project-links { display:flex; flex-wrap:wrap; gap:12px 18px; }
.project-links a { color:var(--primary-cyan); font-size:.8rem; min-height:32px; display:inline-flex; align-items:center; gap:6px; text-decoration:none; }
.project-links a:hover { text-decoration:underline; text-underline-offset:4px; }
.project-links a:focus-visible,.project-cover-link:focus-visible { outline:2px solid var(--primary-cyan); outline-offset:5px; border-radius:4px; }
@media(prefers-reduced-motion:reduce) { .project-item.active { animation:none; } .project-img img { transition:none; } }

.publication-preview { margin:16px 0; max-width:560px; background:#f4f5f7; border-radius:12px; overflow:hidden; }
.publication-preview img { width:100%; height:220px; object-fit:contain; }
