/* ─────────────────────────────────────────────────────────────────────────────
   Shared card-grid layout — Library, Members, Proposals, Meetings.
   The cover block is generated from data (file-type icon, initials, theme
   colour) rather than an uploaded image, because none of these records carry
   one. If image fields are added later, drop an <img> into .cardv-cover and
   the rest of the card is unchanged.
   Every card takes its accent from a --cv-accent / --cv-tint pair set inline
   per card, so one stylesheet serves four differently colour-coded modules.
   ───────────────────────────────────────────────────────────────────────────── */

.cardv-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(290px,1fr));
  gap:16px;
  align-items:start;
}

.cardv{
  --cv-accent:#6e7891;
  --cv-tint:#f0efec;
  background:var(--card,#fff);
  border:2px solid var(--cv-accent);
  border-radius:14px;
  padding:16px;
  display:flex;
  flex-direction:column;
  gap:11px;
  cursor:pointer;
  text-decoration:none;
  color:inherit;
  transition:box-shadow .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1);
}
.cardv:hover{ box-shadow:0 6px 20px rgba(13,17,23,.10); transform:translateY(-2px); }
.cardv:focus-visible{ outline:2px solid var(--cv-accent); outline-offset:2px; }

.cardv-head{ display:flex; gap:13px; align-items:flex-start; }

/* Generated cover — icon, initials or short label on a tinted panel */
.cardv-cover{
  width:62px; height:82px; flex:none;
  border-radius:8px;
  background:var(--cv-tint);
  color:var(--cv-accent);
  display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:4px;
  overflow:hidden;
}
.cardv-cover-icon{ font-size:22px; line-height:1; }
.cardv-cover-initials{ font-family:var(--font-d,Georgia,serif); font-size:20px; line-height:1; letter-spacing:.5px; }
.cardv-cover-label{ font-size:9.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; }
.cardv-cover img{ width:100%; height:100%; object-fit:cover; }

.cardv-headtext{ min-width:0; flex:1; }

/* Ringed category label, as on the OCP cards */
.cardv-cat{ display:flex; align-items:center; gap:7px; margin-bottom:6px; }
.cardv-ring{ width:12px; height:12px; border-radius:50%; border:2.5px solid var(--cv-accent); flex:none; }
.cardv-cat-text{ font-size:10.5px; font-weight:700; letter-spacing:.7px; text-transform:uppercase; color:var(--cv-accent); }

.cardv-title{
  font-size:14.5px; font-weight:600; line-height:1.35;
  color:var(--ink,#0d1117);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical;
  overflow:hidden; word-break:break-word;
}

.cardv-desc{
  font-size:12.5px; line-height:1.6; color:var(--ink-muted,#6e7891);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical;
  overflow:hidden; word-break:break-word;
}

.cardv-foot{
  margin-top:auto;
  border-top:1px solid var(--border,#e2ddd5);
  padding-top:9px;
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  font-size:11.5px; color:var(--ink-muted,#6e7891);
}
.cardv-foot-meta{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; min-width:0; }
.cardv-pill{
  font-size:10.5px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  padding:2px 8px; border-radius:20px;
  background:var(--cv-tint); color:var(--cv-accent);
}

@media(max-width:640px){
  .cardv-grid{ grid-template-columns:1fr; }
}
