.cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 48px;
}

.article-card {
  border-radius: 16px;
  border: 2px solid var(--border);
  overflow: hidden;
  background: white;
  transition: transform 0.25s cubic-bezier(0.16,1,0.3,1),
              box-shadow 0.25s cubic-bezier(0.16,1,0.3,1),
              border-color 0.25s;
}
.article-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 32px rgba(0,0,0,0.10), 0 2px 8px rgba(0,0,0,0.04);
  border-color: var(--border2);
}

.card-link { text-decoration: none; color: inherit; display: block; }

/* Thumbnail */
.card-thumb {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
}

.card-thumb-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
.article-card:hover .card-thumb-img {
  transform: scale(1.05);
}

/* Placeholder for articles without cover image */
.card-thumb-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Physics — blueprint graph paper */
.card-thumb-placeholder.phys {
  background:
    linear-gradient(rgba(21,101,192,0.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(21,101,192,0.07) 1px, transparent 1px),
    linear-gradient(rgba(21,101,192,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(21,101,192,0.03) 1px, transparent 1px),
    linear-gradient(150deg, #D6EEFF 0%, #B3D4F5 100%);
  background-size: 24px 24px, 24px 24px, 6px 6px, 6px 6px, 100% 100%;
}

/* Chemistry — dot matrix (molecular) */
.card-thumb-placeholder.chem {
  background:
    radial-gradient(circle, rgba(106,27,154,0.14) 1.5px, transparent 1.5px),
    linear-gradient(150deg, #EEE0FF 0%, #D9B8EE 100%);
  background-size: 22px 22px, 100% 100%;
}

/* Domain badge — frosted glass pill floating over thumbnail */
.card-domain-badge {
  position: absolute;
  bottom: 10px;
  left: 10px;
  font-size: 11px;
  font-weight: 800;
  border-radius: 20px;
  padding: 3px 10px;
  background: rgba(255,255,255,0.88);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 1px 6px rgba(0,0,0,0.14), 0 0 0 1px rgba(255,255,255,0.4);
}
.card-domain-badge.chem { color: var(--chem-text); }
.card-domain-badge.phys { color: var(--phys-text); }

/* Body */
.card-body { padding: 14px 16px 16px; }

.card-title {
  font-family: 'Quicksand', sans-serif;
  font-size: 16px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
  line-height: 1.3;
}

.card-desc {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
  margin-bottom: 10px;
}

.card-tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.card-tag {
  font-size: 11px;
  font-weight: 800;
  border-radius: 20px;
  padding: 3px 10px;
}

/* Tag colors — domain */
.card-tag.chem { background: var(--chem-bg); color: var(--chem-text); }
.card-tag.phys { background: var(--phys-bg); color: var(--phys-text); }

/* Tag colors — level */
.card-tag.young { background: var(--young-bg); color: var(--young-text); }
.card-tag.all   { background: var(--all-bg);   color: var(--all-text);   }
.card-tag.adv   { background: var(--adv-bg);   color: var(--adv-text);   }
