.home-container { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; } .projects-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 2rem; margin-top: 2rem; } .project-card { background: var(--white); border-radius: 1.25rem; overflow: hidden; border: 1px solid var(--border); transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; flex-direction: column; &:hover { transform: translateY(-8px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1); } .project-image { width: 100%; height: 200px; background: #eef2ff; overflow: hidden; img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; } } &:hover .project-image img { transform: scale(1.05); } .project-content { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; h3 { margin: 0 0 0.75rem 0; font-size: 1.25rem; color: var(--text-main); } p { margin: 0 0 1.5rem 0; color: var(--text-light); font-size: 0.95rem; line-height: 1.6; flex: 1; } } .project-links { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; a { text-decoration: none; padding: 0.6rem; border-radius: 0.75rem; font-size: 0.85rem; font-weight: 600; text-align: center; transition: all 0.2s; } .btn-download { background: var(--primary); color: white; &:hover { background: var(--primary-dark); } } .btn-code { background: #f1f5f9; color: var(--text-main); &:hover { background: #e2e8f0; } } } } .loading-trigger { display: flex; justify-content: center; align-items: center; min-height: 150px; padding-bottom: 50px; color: var(--text-light); p { font-size: 0.9rem; opacity: 0.7; } } .spinner { width: 40px; height: 40px; border: 3px solid rgba(99, 102, 241, 0.1); border-top-color: var(--primary); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } @media (max-width: 640px) { .projects-grid { grid-template-columns: 1fr; } .home-hero h1 { font-size: 2.5rem; } }