.objects-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; padding: 20px; } .object-card { border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; transition: transform 0.3s, box-shadow 0.3s; background: #fff; } .object-card:hover { transform: translateY(-5px); box-shadow: 0 5px 20px rgba(0,0,0,0.1); } .object-image { height: 200px; overflow: hidden; } .object-image img { width: 100%; height: 100%; object-fit: cover; } .object-info { padding: 15px; } .object-title { margin: 0 0 10px; font-size: 18px; font-weight: 600; color: #333; } .object-price { font-size: 20px; font-weight: 700; color: #2c3e50; margin-bottom: 10px; } .object-details { display: flex; gap: 15px; margin-bottom: 15px; color: #666; } .detail-item { display: flex; align-items: center; gap: 5px; } .object-details-btn { width: 100%; padding: 10px; background: #3498db; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; transition: background 0.3s; } .object-details-btn:hover { background: #2980b9; } .loader { text-align: center; padding: 40px; font-size: 16px; color: #666; } .error-message { text-align: center; padding: 40px; color: #e74c3c; background: #fdf3f2; border-radius: 4px; } .no-objects { text-align: center; padding: 40px; color: #666; } /* Иконки (можно заменить на свои) */ .icon-area:before { content: "????"; } .icon-rooms:before { content: "????️"; }