.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.5rem; } .skeletonCard { background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1.5rem; } .skeleton { background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: 4px; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .title { height: 1.5rem; width: 80%; margin-bottom: 1rem; } .meta { display: flex; gap: 0.5rem; margin-bottom: 1rem; } .tag { height: 1.5rem; width: 5rem; } .metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 1.5rem; padding: 1rem; background: #f9fafb; border-radius: 6px; } .metric { height: 3rem; } .actions { display: flex; gap: 0.75rem; } .button { flex: 1; height: 2.5rem; } /* List skeleton */ .list { display: flex; flex-direction: column; gap: 1rem; } .skeletonListItem { background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1.5rem; } .listTitle { height: 1.5rem; width: 60%; margin-bottom: 0.75rem; } .listText { height: 1rem; width: 40%; } /* Text skeleton */ .textContainer { display: flex; flex-direction: column; gap: 0.75rem; } .text { height: 1rem; width: 100%; } .text:last-child { width: 70%; } @media (max-width: 640px) { .grid { grid-template-columns: 1fr; } .metrics { grid-template-columns: 1fr; } }