.filters{flex-wrap:wrap;gap:.5rem;max-width:1200px;margin:0 auto;padding:2rem 3rem 1rem;display:flex}.fb{font-family:var(--mono);border:1px solid var(--faint);color:var(--muted);cursor:pointer;letter-spacing:.04em;background:0 0;border-radius:100px;padding:.4rem 1rem;font-size:.73rem;transition:all .2s;position:relative;overflow:hidden}.fb:before{content:"";background:var(--blue);z-index:0;border-radius:100px;transition:transform .3s cubic-bezier(.22,1,.36,1);position:absolute;inset:0;transform:scale(0)}.fb span{z-index:1;position:relative}.fb:hover,.fb.active{color:#fff;border-color:var(--blue)}.fb:hover:before,.fb.active:before{transform:scale(1)}.fb:hover{box-shadow:0 4px 14px #2563eb40}.projects{grid-template-columns:repeat(2,1fr);gap:1.5rem;max-width:1200px;margin:0 auto;padding:1.5rem 3rem 6rem;display:grid}.pc{background:var(--surface);border:1px solid var(--faint);border-radius:12px;transition:all .3s cubic-bezier(.22,1,.36,1);animation:.6s both fadeUp;overflow:hidden}.pc:hover{border-color:var(--blue-m);transform:translateY(-4px);box-shadow:0 18px 50px #2563eb24}.pc:first-child{animation-delay:50ms}.pc:nth-child(2){animation-delay:.1s}.pc:nth-child(3){animation-delay:.15s}.pc:nth-child(4){animation-delay:.2s}.pc.feat{grid-column:span 2;grid-template-columns:1fr 1fr;display:grid}.preview{background:var(--blue-l);border-bottom:1px solid var(--faint);justify-content:center;align-items:center;height:200px;display:flex;position:relative;overflow:hidden}.pc.feat .preview{border-bottom:none;border-right:1px solid var(--faint);height:auto}.preview-inner{background:var(--surface);border:1px solid var(--faint);border-radius:8px;flex-direction:column;width:82%;height:72%;display:flex;overflow:hidden;box-shadow:0 4px 16px #2563eb1a}.pb{border-bottom:1px solid var(--faint);background:#f5f6fa;align-items:center;gap:4px;height:22px;padding:0 8px;display:flex}.pd{border-radius:50%;width:5px;height:5px}.pbd{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex}.ph{background:linear-gradient(90deg,var(--blue),var(--blue-d));border-radius:4px;height:28px;margin-bottom:4px}.pl{background:var(--faint);border-radius:3px;height:6px}.pl.s{width:65%}.pbk{grid-template-columns:repeat(3,1fr);gap:4px;margin-top:auto;display:grid}.pbc{background:var(--blue-l);border:1px solid var(--faint);border-radius:3px;height:24px}.feat-badge{font-family:var(--mono);background:var(--blue);color:#fff;letter-spacing:.06em;border-radius:100px;padding:.2rem .65rem;font-size:.65rem;position:absolute;top:12px;right:12px}.pinfo{padding:1.5rem}.ptags{flex-wrap:wrap;gap:.4rem;margin-bottom:1.25rem;display:flex}.ptag{font-family:var(--mono);color:var(--blue);background:var(--blue-l);border-radius:4px;padding:.2rem .55rem;font-size:.65rem}.pname{font-family:var(--display);letter-spacing:-.01em;margin-bottom:.5rem;font-size:1.1rem;font-weight:700}.pdesc{color:var(--muted);margin-bottom:1rem;font-size:.875rem;font-weight:300;line-height:1.65}.plinks{flex-wrap:wrap;gap:.5rem .75rem;display:flex}.plinks-sec{align-items:baseline;margin-top:.75rem}.plinks-label{font-family:var(--mono);color:var(--muted);font-size:.7rem}.pnote{color:var(--muted);background:var(--blue-l);border-radius:8px;margin:1rem 0 1.25rem;padding:.6rem .8rem;font-size:.8rem;line-height:1.6}.pnote strong{color:var(--ink);font-family:var(--mono);font-weight:500}.plink{font-family:var(--mono);color:var(--blue);border-bottom:1px solid var(--blue-m);padding-bottom:1px;font-size:.75rem;text-decoration:none;transition:all .2s;position:relative}.plink:before{content:"";background:var(--blue);height:1px;transition:transform .2s;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.plink:hover:before{transform:scaleX(1)}.plink:hover{color:var(--blue-d)}@media (width<=900px){.filters{padding:1.5rem 1.25rem .5rem}.projects{grid-template-columns:1fr;padding:1.25rem 1.25rem 4rem}.pc.feat{grid-column:span 1;display:block}.pc.feat .preview{border-right:none;border-bottom:1px solid var(--faint);height:180px}}.project-shot{object-fit:cover;object-position:top;width:100%;height:100%}.pname a{color:inherit;text-decoration:none}.pc.feat .preview{min-height:240px}.pc.feat .preview .project-shot{position:absolute;inset:0}
