.dpfh-projects{--dpfh-gap:18px;--dpfh-radius:12px;width:100%}.dpfh-toolbar{align-items:center;display:flex;gap:18px;justify-content:space-between;margin-bottom:20px}.dpfh-filters{display:flex;flex-wrap:wrap;gap:8px}.dpfh-filter{appearance:none;background:#fff;border:1px solid #000;border-radius:999px;color:#000;cursor:pointer;font-size:12px;font-weight:700;line-height:1;padding:8px 14px;transition:background-color .16s ease,color .16s ease,transform .16s ease}.dpfh-filter:hover,.dpfh-filter:focus-visible,.dpfh-filter.is-active{background:#000;color:#fff}.dpfh-filter:focus-visible,.dpfh-search input:focus-visible,.dpfh-card-link:focus-visible{outline:2px solid #000;outline-offset:3px}.dpfh-search{flex:0 0 180px}.dpfh-search input{border:1px solid #cfcfcf;border-radius:999px;font-size:12px;min-height:34px;padding:8px 12px;width:100%}.dpfh-grid{display:grid;gap:var(--dpfh-gap);grid-template-columns:repeat(var(--dpfh-columns),minmax(0,1fr))}.dpfh-card{min-width:0}.dpfh-card[hidden]{display:none}.dpfh-card-link{border-radius:var(--dpfh-radius);color:inherit;display:block;overflow:hidden;position:relative;text-decoration:none}.dpfh-image-wrap{aspect-ratio:1/1;background:#f1f1f1;display:block;overflow:hidden;position:relative}.dpfh-image{display:block;height:100%;inset:0;object-fit:cover;position:absolute;transition:opacity .22s ease,transform .22s ease;width:100%}.dpfh-image-main{opacity:1;z-index:1}.dpfh-image-hover{opacity:0;z-index:2}.dpfh-card.has-hover-image .dpfh-card-link:hover .dpfh-image-main,.dpfh-card.has-hover-image .dpfh-card-link:focus-visible .dpfh-image-main{opacity:0}.dpfh-card.has-hover-image .dpfh-card-link:hover .dpfh-image-hover,.dpfh-card.has-hover-image .dpfh-card-link:focus-visible .dpfh-image-hover{opacity:1}.dpfh-card-link:hover .dpfh-image,.dpfh-card-link:focus-visible .dpfh-image{transform:scale(1.02)}.dpfh-image-placeholder{background:linear-gradient(135deg,#f4f4f4,#ddd)}.dpfh-empty,.dpfh-error{margin-top:20px}@media (max-width:980px){.dpfh-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.dpfh-toolbar{align-items:stretch;flex-direction:column}.dpfh-search{flex-basis:auto}.dpfh-grid{grid-template-columns:1fr}}