.home-text-reveal[data-astro-cid-hopnzetv]{display:inline-block}.reveal-glyph[data-astro-cid-hopnzetv]{position:relative;display:inline-block}.reveal-width[data-astro-cid-hopnzetv]{visibility:hidden}[data-astro-cid-hopnzetv][data-reveal-glyph]{position:absolute;inset:0;text-align:center}.project-showcase{padding:64px 48px 48px;color:#111}.project-showcase-header{display:flex;justify-content:space-between;align-items:flex-end;gap:48px;padding-bottom:64px}.project-showcase-eyebrow{margin:0 0 20px;font-size:10px;letter-spacing:.1em}.project-showcase-list{margin:0;padding:0;list-style:none;border-top:1px solid #e5e5e5}.project-showcase-list>li{border-bottom:1px solid #e5e5e5}.project-showcase-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.7fr);gap:clamp(40px,6vw,110px);align-items:center;padding:48px 0;color:inherit;text-decoration:none}.project-showcase-row:focus-visible{outline:2px solid #111;outline-offset:8px}.project-showcase-meta{display:flex;gap:20px;margin-bottom:18px;color:#555;font-size:10px;letter-spacing:.06em;text-transform:uppercase}.project-showcase-title{margin:0;font-family:Georgia,Times New Roman,serif;font-weight:400;font-size:clamp(36px,3.7vw,64px);letter-spacing:-.045em;line-height:1.02;overflow-wrap:anywhere}.project-showcase-description{max-width:34ch;margin:20px 0 0;font-size:13px;line-height:1.8}.project-showcase-repo{margin:18px 0 0;color:#666;font-size:10px;overflow-wrap:anywhere}.project-showcase-visit{display:inline-block;margin-top:24px;padding-bottom:3px;border-bottom:1px solid #aaa;font-size:11px}.project-showcase-media{display:flex;justify-content:center;align-items:center;min-width:0;min-height:300px;overflow:hidden;background:#f5f5f3}.project-showcase-image{display:block;width:min(44%,200px);height:200px;object-fit:contain;transform:rotate(var(--project-rotation, -6deg));transition:transform .6s cubic-bezier(.16,1,.3,1)}.project-showcase-list>li:nth-child(2n) .project-showcase-image{--project-rotation: 6deg}.project-showcase-media--preview .project-showcase-image{width:80%;height:260px;max-width:580px}.project-showcase-media[data-image-failed]{display:none}.project-showcase-row:has(.project-showcase-media[data-image-failed]),.project-showcase-row:not(:has(.project-showcase-media)){grid-template-columns:minmax(0,1fr)}.project-showcase-end{display:flex;justify-content:flex-end;gap:24px;margin-top:40px;font-size:12px;color:#555}.project-showcase-end a{color:#111;text-decoration:underline;text-underline-offset:4px}.project-showcase-end a:focus-visible{outline:2px solid #111;outline-offset:6px}@media(hover:hover)and (pointer:fine){.project-showcase-row:hover .project-showcase-image{transform:rotate(0) translateY(-6px) scale(1.03)}.project-showcase-row:hover .project-showcase-visit{border-color:#111}}.project-showcase-row:focus-visible .project-showcase-image{transform:rotate(0) translateY(-6px)}@media(min-width:1800px){.project-showcase{max-width:1800px;margin:0 auto}.project-showcase-media{min-height:380px}.project-showcase-image{width:220px;height:220px}.project-showcase-media--preview .project-showcase-image{height:310px}}@media(max-width:760px){.project-showcase{padding:44px 20px 32px}.project-showcase-header{flex-direction:column;align-items:flex-start;gap:28px;padding-bottom:36px}.project-showcase-row{grid-template-columns:minmax(0,1fr);gap:28px;padding:32px 0}.project-showcase-title{font-size:42px}.project-showcase-description{max-width:40ch;font-size:12px}.project-showcase-media{min-height:220px}.project-showcase-image{width:140px;height:140px}.project-showcase-media--preview .project-showcase-image{width:82%;height:180px}.project-showcase-end{flex-direction:column;gap:10px;margin-top:28px}}@media(prefers-reduced-motion:reduce){.project-showcase-image{transition:none}.project-showcase-row:hover .project-showcase-image,.project-showcase-row:focus-visible .project-showcase-image{transform:none}}.project-showcase--embedded .project-showcase-eyebrow{margin:0}.project-showcase:not(.project-showcase--embedded){max-width:none;margin:0;min-height:100vh;padding:var(--page-top) var(--page-inset) var(--page-bottom)}.project-showcase:not(.project-showcase--embedded) .project-showcase-header{padding-bottom:0}.project-showcase:not(.project-showcase--embedded) .project-showcase-list{margin-top:var(--page-content-gap)}
