.proj-head{padding-bottom:var(--space-8)}.proj-head h1{font-family:var(--font-display);font-size:var(--text-3xl);letter-spacing:var(--tracking-display);margin:var(--space-3) 0 var(--space-4);max-width:20ch}.proj-head .lead{color:var(--fg-muted);font-size:var(--text-md);max-width:60ch}.proj-head .hstats{gap:var(--space-3) var(--space-8);margin-top:var(--space-8);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-faint);letter-spacing:var(--tracking-mono);flex-wrap:wrap;display:flex}.proj-head .hstats b{color:var(--fg);font-weight:var(--weight-medium)}.cat{font-family:var(--font-mono);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--radius-full);align-items:center;gap:6px;padding:4px 10px;font-size:10px;display:inline-flex}.cat.client{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.cat.oss{color:var(--success);border-color:color-mix(in oklab, var(--success) 45%, transparent);background:var(--success-soft)}.card .ctop{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.card .ctop .yr{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-faint)}.card h3.pt{margin-top:var(--space-4)}.plink{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-muted);margin-top:var(--space-4);transition:color var(--dur);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.plink svg{stroke:currentColor;fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.plink:hover{color:var(--accent)}.feat{border:1px solid var(--border-strong);border-radius:var(--radius-2xl);background:var(--surface);margin-bottom:var(--space-5);grid-template-columns:1.05fr .95fr;display:grid;overflow:hidden}.feat .ft-copy{padding:var(--space-10);flex-direction:column;display:flex}.feat .ft-tag{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.feat .ft-tag .lead-k{font-family:var(--font-mono);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-faint);font-size:10px}.feat h2{font-family:var(--font-display);font-size:var(--text-2xl);margin:0 0 var(--space-2)}.feat .role{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);letter-spacing:var(--tracking-mono)}.feat p{color:var(--fg-muted);font-size:var(--text-md);line-height:var(--leading-normal);margin:var(--space-4) 0 var(--space-5);max-width:46ch}.feat .tags{gap:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.feat .ft-vis{border-left:1px solid var(--border);padding:var(--space-8);background:linear-gradient(180deg, color-mix(in oklab, var(--accent) 7%, var(--surface)), var(--bg-sunken));flex-direction:column;justify-content:center;display:flex}.flowp .fl-k{font-family:var(--font-mono);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-faint);margin-bottom:var(--space-4);font-size:10px}.flowp .fl{gap:var(--space-2);flex-direction:column;display:flex}.flowp .fl-step{align-items:center;gap:var(--space-3);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--fg);display:flex}.flowp .fl-step .n{width:24px;height:24px;color:var(--accent);border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:50%;flex:none;place-items:center;font-size:10px;display:grid}.flowp .fl-step .d{color:var(--fg-muted)}.flowp .fl-conn{background:var(--border-strong);width:1px;height:12px;margin-left:11px}.flowp .fl-step .d b{color:var(--accent);font-weight:var(--weight-medium)}.flowp .fl-foot{align-items:center;gap:var(--space-2);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.flowp .fl-foot .pk-label{font-family:var(--font-mono);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-faint);font-size:10px}.flowp .fl-foot .pk{font-family:var(--font-mono);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--radius-full);padding:4px 9px;font-size:10px}.cat.dev{color:var(--fg-muted);border-color:var(--border-strong)}.cat.dev:before{content:"";background:var(--accent);border-radius:50%;flex:none;width:7px;height:7px}@media (prefers-reduced-motion:no-preference){.cat.dev:before{animation:2.4s ease-in-out infinite devpulse}@keyframes devpulse{0%,to{box-shadow:0 0 0 0 color-mix(in oklab, var(--accent) 55%, transparent)}50%{box-shadow:0 0 0 5px color-mix(in oklab, var(--accent) 0%, transparent)}}}.feat .ft-own{font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-normal);color:var(--fg-muted);margin:0 0 var(--space-2);max-width:46ch}.feat .ft-own b{color:var(--fg);font-weight:var(--weight-medium)}.card.stub{border-style:dashed}.card.stub .role,.card.stub p{color:var(--fg-faint)}.os-cta{align-items:center;gap:var(--space-4);margin-top:var(--space-6);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-faint);flex-wrap:wrap;display:flex}@media (max-width:760px){.feat{grid-template-columns:1fr}.feat .ft-copy{padding:var(--space-8)}.feat .ft-vis{border-left:0;border-top:1px solid var(--border)}}
