.prevgen-wrap{scroll-margin-top:96px}
.prevgen-grid{display:grid;gap:1.25rem;align-items:stretch;grid-template-columns:1fr}
@media (min-width:1200px){.prevgen-grid{grid-template-columns:1fr 1fr}}
.prevgen-card{--pad:clamp(1rem,2vw,1.5rem);--figure-h-collapsed:clamp(200px,24vh,320px);--figure-h-expanded:clamp(280px,32vh,420px);background:#fff;border:1px solid var(--igem-stroke);box-shadow:var(--igem-shadow);border-radius:1.25rem;overflow:hidden;display:flex;flex-direction:column;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,min-height .35s ease}
.prevgen-card:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(16,24,40,.12)}
.prevgen-figure{height:var(--figure-h-collapsed);background:radial-gradient(80% 80% at 50% 50%,rgba(0,0,0,.04),transparent 60%);transition:height .35s ease}
.prevgen-grid.any-expanded .prevgen-figure{height:var(--figure-h-expanded)}
.prevgen-figure img{width:100%;height:100%;object-fit:cover;display:block}
.prevgen-body{padding:var(--pad);display:flex;flex-direction:column;gap:.75rem;color:var(--igem-text)}
.meta-line{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;font-size:.95rem;color:var(--igem-text);opacity:.95}
.badge-igem{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border-radius:999px;background:var(--igem-accent-weak);border:1px dashed var(--igem-stroke);font-weight:600;font-size:.85rem}
.prevgen-title{margin:.25rem 0 .25rem;color:var(--igem-text);line-height:1.25}
.desc{overflow:hidden;max-height:0;opacity:0;transition:max-height .35s ease,opacity .25s ease;will-change:max-height,opacity}
.prevgen-card[aria-expanded=true] .desc{opacity:1}
.desc p{margin-bottom:.9rem;line-height:1.6}
.desc .muted{color:#475569;font-size:.92rem}
.prevgen-actions{display:flex;gap:.5rem;margin-top:auto}
.prevgen-actions .btn{border-radius:999px;font-weight:600}
.btn-cta{background:var(--igem-accent);border-color:var(--igem-accent);color:#111}
.expand-hint{font-size:.8rem;opacity:.7;user-select:none}
.pg-header{text-align:center}