.project-tile{display:block;text-decoration:none}.project-tile__image-wrapper{position:relative;overflow:hidden;background-color:var(--color-surface)}.project-tile--large .project-tile__image-wrapper{aspect-ratio:2/1}.project-tile--small .project-tile__image-wrapper{aspect-ratio:1/1}.project-tile__image{object-fit:cover;transition:transform .5s var(--ease-out-expo)}.project-tile:hover .project-tile__image{transform:scale(1.03)}.project-tile__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-base)}.project-tile:hover .project-tile__overlay{opacity:1}.project-tile__cta{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.15em;color:var(--color-text);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-text)}.project-tile__content{padding-top:var(--space-md)}.project-tile__category{display:block;font-size:var(--text-xs);letter-spacing:.1em;color:var(--color-muted)}.project-tile__category,.project-tile__title{text-transform:uppercase;margin-bottom:var(--space-xs)}.project-tile__title{font-family:var(--font-display);font-size:var(--text-h3);font-weight:700;letter-spacing:.02em;transition:color var(--transition-fast)}.project-tile:hover .project-tile__title{color:var(--color-accent)}.project-tile__subtitle{font-size:var(--text-small);color:var(--color-muted)}@media (max-width:768px){.project-tile--large .project-tile__image-wrapper,.project-tile--small .project-tile__image-wrapper{aspect-ratio:4/3}}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--space-lg);gap:var(--space-lg)}.project-grid__item--large{grid-column:span 2}.project-grid__item--small{grid-column:span 1}@media (max-width:1024px){.project-grid{grid-template-columns:repeat(2,1fr)}.project-grid__item--large{grid-column:span 2}.project-grid__item--small{grid-column:span 1}}@media (max-width:768px){.project-grid{grid-template-columns:1fr;gap:var(--space-xl)}.project-grid__item--large,.project-grid__item--small{grid-column:span 1}}