.portfolio-section[data-astro-cid-lh2ppch2]{background:var(--surface);padding-block:var(--space-section)}.portfolio-shell[data-astro-cid-lh2ppch2]{max-width:var(--primitive-layout-shell);padding-inline:var(--space-page);margin-inline:auto}.portfolio-heading[data-astro-cid-lh2ppch2]{gap:var(--space-cluster);margin-bottom:var(--space-section-tight);align-items:end;display:grid}.portfolio-heading[data-astro-cid-lh2ppch2] h2[data-astro-cid-lh2ppch2]{max-width:13ch;margin-top:var(--primitive-space-5);font-size:var(--primitive-type-display);line-height:var(--primitive-leading-display)}.portfolio-heading[data-astro-cid-lh2ppch2]>div[data-astro-cid-lh2ppch2]:last-child{gap:var(--primitive-space-4);justify-items:start;display:grid}.portfolio-heading[data-astro-cid-lh2ppch2] p[data-astro-cid-lh2ppch2]{max-width:var(--primitive-layout-copy);color:var(--ink-muted);font-size:var(--primitive-type-lead)}.project-grid[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-5);display:grid}.project-card[data-astro-cid-lh2ppch2]{border:var(--primitive-line-hairline) solid var(--border);border-radius:var(--primitive-radius-lg);background:var(--surface-raised);min-height:100%;box-shadow:var(--primitive-shadow-card);padding:var(--space-card);flex-direction:column;display:flex}.project-topline[data-astro-cid-lh2ppch2]{justify-content:space-between;gap:var(--primitive-space-4);border-bottom:var(--primitive-line-hairline) solid var(--border);padding-bottom:var(--primitive-space-4);color:var(--ink-muted);font-family:var(--typeface-mono);font-size:var(--primitive-type-micro);letter-spacing:var(--primitive-tracking-label);text-transform:uppercase;display:flex}.project-topline[data-astro-cid-lh2ppch2] span[data-astro-cid-lh2ppch2]:first-child{color:var(--brand-accent)}.project-identity[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-4);margin-top:var(--primitive-space-8);align-items:center;display:flex}.project-logo[data-astro-cid-lh2ppch2],.project-system-mark[data-astro-cid-lh2ppch2]{width:var(--primitive-space-16);height:var(--primitive-space-16);border:var(--primitive-line-hairline) solid var(--border);border-radius:var(--primitive-radius-md);background:var(--surface-subtle);padding:var(--primitive-space-2);flex:none;place-items:center;display:grid;overflow:hidden}.project-logo[data-astro-cid-lh2ppch2] img[data-astro-cid-lh2ppch2]{object-fit:contain;width:100%;height:100%}.project-logo--wide[data-astro-cid-lh2ppch2]{width:var(--primitive-space-32)}.project-system-mark[data-astro-cid-lh2ppch2]{grid-template-columns:repeat(3, var(--primitive-space-2));gap:var(--primitive-space-1)}.project-system-mark[data-astro-cid-lh2ppch2] span[data-astro-cid-lh2ppch2]{width:var(--primitive-space-2);height:var(--primitive-space-8);border-radius:var(--primitive-radius-pill);background:var(--brand)}.project-system-mark[data-astro-cid-lh2ppch2] span[data-astro-cid-lh2ppch2]:nth-child(2){height:var(--primitive-space-12);background:var(--brand-accent)}.project-card[data-astro-cid-lh2ppch2] h3[data-astro-cid-lh2ppch2]{font-size:var(--primitive-type-h3)}.project-copy[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-4);margin-top:var(--primitive-space-5);display:grid}.project-copy[data-astro-cid-lh2ppch2] p[data-astro-cid-lh2ppch2]{color:var(--ink-muted)}.project-highlights[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-4);margin:var(--primitive-space-2) 0 0;padding:0;list-style:none;display:grid}.project-highlights[data-astro-cid-lh2ppch2] li[data-astro-cid-lh2ppch2],.related-product[data-astro-cid-lh2ppch2]{border-left:var(--primitive-line-medium) solid var(--brand-accent);background:var(--surface-subtle);padding:var(--primitive-space-5)}.project-highlights[data-astro-cid-lh2ppch2] h4[data-astro-cid-lh2ppch2],.related-product[data-astro-cid-lh2ppch2] h4[data-astro-cid-lh2ppch2]{color:var(--ink);font-size:var(--primitive-type-lead)}.project-highlights[data-astro-cid-lh2ppch2] p[data-astro-cid-lh2ppch2],.related-product[data-astro-cid-lh2ppch2]>p[data-astro-cid-lh2ppch2]:last-child{margin-top:var(--primitive-space-2)}.related-products[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-4);margin-top:var(--primitive-space-4);border-top:var(--primitive-line-hairline) solid var(--border);padding-top:var(--primitive-space-6);display:grid}.related-products[data-astro-cid-lh2ppch2]>div[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-4);display:grid}.related-product-role[data-astro-cid-lh2ppch2]{margin-bottom:var(--primitive-space-2);color:var(--brand);font-family:var(--typeface-mono);font-size:var(--primitive-type-micro);letter-spacing:var(--primitive-tracking-label);text-transform:uppercase;font-weight:700}.project-card[data-astro-cid-lh2ppch2]>ul[data-astro-cid-lh2ppch2]{gap:var(--primitive-space-2);padding:var(--primitive-space-8) 0 0;flex-wrap:wrap;margin:auto 0 0;list-style:none;display:flex}.project-card[data-astro-cid-lh2ppch2]>a[data-astro-cid-lh2ppch2]{margin-top:var(--primitive-space-5)}.project-card[data-astro-cid-lh2ppch2]>a[data-astro-cid-lh2ppch2] svg[data-astro-cid-lh2ppch2]{width:var(--primitive-space-5);height:var(--primitive-space-5);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}@media (width>=48rem){.portfolio-heading[data-astro-cid-lh2ppch2]{grid-template-columns:minmax(0,1.15fr) minmax(22rem,.85fr)}.project-grid[data-astro-cid-lh2ppch2]{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card[data-astro-cid-lh2ppch2]:first-child,.project-card[data-astro-cid-lh2ppch2]:nth-child(2),.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]:nth-child(3){grid-column:span 2}}@media (width>=64rem){.project-grid[data-astro-cid-lh2ppch2]{grid-template-columns:repeat(6,minmax(0,1fr))}.project-card[data-astro-cid-lh2ppch2]{grid-column:span 2}.project-card[data-astro-cid-lh2ppch2]:first-child{grid-column:span 6}.project-card[data-astro-cid-lh2ppch2]:nth-child(2),.project-card[data-astro-cid-lh2ppch2]:nth-child(3){grid-column:span 3}.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]{grid-column:span 2}.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]:first-child,.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]:nth-child(2),.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]:nth-child(3){grid-column:span 6}.project-grid--pairs[data-astro-cid-lh2ppch2] .project-card[data-astro-cid-lh2ppch2]:nth-child(n+4){grid-column:span 3}}
