/* Tarjetas reutilizables */
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:0 1px 0 rgba(0,0,0,.02);transition:transform .12s ease,box-shadow .12s ease}
.card-link{display:block;text-decoration:none;color:inherit;height:100%}
.card:hover{transform:translateY(-2px);box-shadow:0 4px 18px rgba(0,0,0,.08)}
.card:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.card-media{aspect-ratio:16/9;background:linear-gradient(135deg,rgba(0,0,0,.08),rgba(0,0,0,.02));display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;margin:0;width:100%}
.card-media img{width:100%;height:100%;display:block;flex:1 1 auto;/*object-fit:cover*/}
.card-body{padding:12px}
.card-title{font-size:16px;line-height:1.25;margin:0 0 6px;max-height:2.6em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.card-summary,.card-desc{font-size:14px;line-height:1.35;color:var(--muted);margin:0 0 8px;max-height:4.1em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.card-summary:last-child,.card-desc:last-child{margin-bottom:0}
.card-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;line-height:1.3;color:var(--muted);margin:0 0 8px}
.card-meta:last-child{margin-bottom:0}
.meta-badge,.pill{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg);white-space:nowrap}