/* ---------- Gallery ---------- */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, clamp(15rem, 19vw, 19.5rem)), 1fr)); gap: var(--space-m); }
.card {
  display: flex; flex-direction: column; border: 0; padding: 0; text-align: left; width: 100%;
  background: var(--surface); border-radius: var(--radius-card); overflow: hidden; box-shadow: var(--shadow-1);
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
  container-type: inline-size;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); }
.card:active { transform: translateY(-1px) scale(0.99); }
.media {
  position: relative; aspect-ratio: 4 / 3; overflow: hidden; width: 100%;
  background-color: var(--canvas);
  background-image: radial-gradient(circle, var(--canvas-dot) 1px, transparent 1.2px); background-size: 18px 18px;
  display: grid; place-items: center;
}
.media > img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--ease); display: block; }
.card:hover .media > img { transform: scale(1.04); }
.media .pair { position: absolute; inset: 10%; display: grid; grid-template-columns: 1fr 1fr; gap: 6%; }
.media .pair > * { min-width: 0; min-height: 0; display: grid; place-items: center; }
.media .pair img { object-fit: contain; width: 100%; height: 100%; border-radius: 6px; filter: drop-shadow(0 6px 14px rgba(0,0,0,0.12)); }
.media .wire { width: 64%; height: 76%; color: var(--ink-3); opacity: 0.85; }
.media .pair .wire { width: 92%; height: 92%; }
.badge-tr { position: absolute; top: 12px; right: 12px; }
.badge-bl { position: absolute; left: 12px; bottom: 12px; }
.pill {
  display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 999px;
  font-size: var(--step--2); font-weight: 600; white-space: nowrap; letter-spacing: 0.005em;
  background: var(--surface); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.pill .d { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.pill.pos { color: var(--pos); } .pill.neg { color: var(--neg); } .pill.mix { color: var(--mix); } .pill.run { color: var(--run); } .pill.idea { color: #8b5cf6; }
.pill.soft { box-shadow: none; background: var(--hover); color: var(--ink-2); }
.pill.soft.pos { background: var(--pos-soft); color: var(--pos); } .pill.soft.neg { background: var(--neg-soft); color: var(--neg); }
.pill.soft.mix { background: var(--mix-soft); color: var(--mix); } .pill.soft.run { background: var(--run-soft); color: var(--run); }
.pill.soft.idea { background: color-mix(in srgb, #8b5cf6 15%, transparent); color: #7c3aed; }
.card-body { padding: var(--space-s) var(--space-s) calc(var(--space-s) + 2px); display: flex; flex-direction: column; gap: 6px; flex: 1; width: 100%; }
.card-title { font-weight: 600; font-size: var(--step-0); line-height: 1.3; letter-spacing: -0.015em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.card-meta { font-size: var(--step--1); color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 6px; }
.card-meta-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.card-foot { margin-top: auto; padding-top: 6px; display: flex; align-items: center; gap: 10px; }
.meter { flex: 1; height: 4px; border-radius: 2px; background: var(--ev-track); overflow: hidden; display: block; }
.meter > i { display: block; height: 100%; border-radius: 2px; background: var(--ev); transform-origin: left; }
.meter-v { font-size: var(--step--2); color: var(--ink-2); white-space: nowrap; }
.meter-v b { color: var(--ink); font-weight: 600; }
@container (max-width: 15rem) { .badge-bl .pill { max-width: 70cqi; overflow: hidden; } }

/* Learning cards */
.lgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, clamp(17rem, 24vw, 23rem)), 1fr)); gap: var(--space-m); }
.lcard { border: 0; text-align: left; width: 100%; background: var(--surface); border-radius: var(--radius-card); box-shadow: var(--shadow-1); padding: var(--space-m); display: flex; flex-direction: column; gap: var(--space-s); transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease); }
.lcard:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); }
.lcard h3 { margin: 0; font-size: var(--step-1); font-weight: 600; letter-spacing: -0.02em; line-height: 1.25; text-wrap: balance; }
.lcard p { margin: 0; color: var(--ink-2); font-size: var(--step--1); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.lcard-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ev-big { display: flex; align-items: baseline; gap: 8px; }
.ev-big .n { font-size: var(--step-2); font-weight: 600; letter-spacing: -0.04em; }
.stack { display: flex; height: 8px; border-radius: 4px; overflow: hidden; background: var(--ev-track); gap: 2px; }
.stack i { display: block; height: 100%; }
.stack i.s { background: var(--pos); } .stack i.r { background: var(--neg); } .stack i.m { background: var(--mix); }

.empty { padding: var(--space-xl) var(--space-m); text-align: center; color: var(--ink-2); display: flex; flex-direction: column; align-items: center; gap: var(--space-s); grid-column: 1 / -1; }
.empty h3 { margin: 0; color: var(--ink); font-size: var(--step-1); font-weight: 600; letter-spacing: -0.02em; }
.empty p { margin: 0; max-width: 44ch; }
.empty svg { width: 52px; height: 52px; color: var(--ink-3); }

