/* Spökrader: grå platshållare med ett ljust svep, tills riktiga innehållet har ritats. */
.spoke { display: grid; gap: 14px; }

.spoke-bit {
  border-radius: 10px;
  background: linear-gradient(90deg, #eceef0 0%, #f6f7f8 40%, #eceef0 80%);
  background-size: 300% 100%;
  animation: svep 1.4s ease-in-out infinite;
}

.spoke-typval { height: 48px; border-radius: 999px; }

.spoke-rubrik { width: 75%; height: 36px; }

.spoke-rad { width: 90%; height: 16px; }

.spoke-rad.kort-rad { width: 55%; }

.spoke-falt { height: 46px; border-radius: 12px; }

.spoke-kortlista { display: grid; grid-template-columns: 1fr; gap: 14px; margin-top: 8px; }

.spoke-kort { display: grid; gap: 10px; padding-bottom: 14px; border: 2px solid var(--linje); border-radius: 16px; overflow: hidden; }

.spoke-kort .spoke-rad { margin-left: 14px; }

.spoke-bild { height: 120px; border-radius: 0; }

@keyframes svep {
  from { background-position: 100% 0; }
  to { background-position: 0 0; }
}

@media (min-width: 640px) {
  .spoke-kortlista { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
}
