.projects-grid{gap:var(--space-6);display:grid}.project-card{padding:var(--space-8);background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:all var(--duration-base) var(--ease)}.project-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.project-card--highlighted{border-color:var(--accent);background-color:#25c3800d;box-shadow:0 0 0 3px #25c3801a}.project-card--dimmed{opacity:.4;filter:grayscale(.5)}.project-card__header{margin-bottom:var(--space-4);justify-content:space-between;align-items:baseline;gap:var(--space-4);display:flex}.project-card__title-group{align-items:center;gap:var(--space-3);display:inline-flex}.project-card__title{font-size:var(--text-xl);color:var(--text)}.project-card__repo-link{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm,6px);transition:all var(--duration-fast) var(--ease);background-color:#ffffff0a;display:inline-flex}.project-card__repo-link:hover{color:var(--accent);border-color:var(--accent);background-color:#25c38014}.project-card__repo-link svg{stroke-width:2px}.project-card__year{font-size:var(--text-sm);color:var(--text-muted);flex-shrink:0}.project-card__summary{font-size:var(--text-base);color:var(--text-secondary);margin-bottom:var(--space-3)}.project-card__details{opacity:0;max-height:0;transition:max-height var(--duration-base) var(--ease), opacity var(--duration-base) var(--ease);overflow:hidden}.project-card__details--expanded{opacity:1;max-height:500px}.project-card__impact{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-4)}.project-card__toggle{align-items:center;gap:var(--space-2);color:var(--accent);font-size:var(--text-sm);cursor:pointer;padding:var(--space-2) 0;margin-bottom:var(--space-4);transition:color var(--duration-fast) var(--ease);background:0 0;border:none;font-family:inherit;display:inline-flex}.project-card__toggle:hover{color:var(--accent-hover)}.project-card__toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.project-card__toggle-icon{stroke-linecap:round;stroke-linejoin:round;transition:transform var(--duration-fast) var(--ease)}.project-card__toggle-icon--expanded{transform:rotate(180deg)}.project-card__tech{gap:var(--space-2);flex-wrap:wrap;margin-bottom:0;display:flex}.project-card__links{gap:var(--space-4);margin-top:var(--space-5,1.25rem);flex-wrap:wrap;display:flex}.project-card__link{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--accent);padding:var(--space-2) var(--space-3);border:1px solid var(--accent);border-radius:var(--radius);transition:all var(--duration-fast) var(--ease);display:inline-flex}.project-card__link:hover{background-color:var(--accent);color:var(--bg)}.project-card__link svg{stroke-width:2px}@media (prefers-reduced-motion:reduce){.project-card:hover{transform:none}.project-card__details,.project-card__toggle-icon{transition:none}}@media (max-width:768px){.project-card{padding:1.25rem}.project-card__header{flex-direction:column;align-items:flex-start}}@media (min-width:1180px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.project-card{flex-direction:column;display:flex}.project-card__tech{margin-top:auto}}
