.items-list-container { min-height: 100vh; padding-bottom: 2rem; } .list-toolbar { position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); .toolbar-title { font-size: 1.25rem; font-weight: 500; } .toolbar-spacer { flex: 1; } } .filters-bar { display: flex; gap: 1rem; padding: 1.5rem 2rem; background: #fafafa; border-bottom: 2px solid #e0e0e0; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); flex-wrap: wrap; align-items: center; .search-field { flex: 1; min-width: 250px; } .filter-field { width: 150px; } .bulk-actions { display: flex; gap: 0.5rem; align-items: center; margin-left: auto; .selection-count { font-size: 0.875rem; color: #666; margin-right: 0.5rem; } button { display: flex; align-items: center; gap: 0.25rem; } } } .items-header { display: flex; align-items: center; gap: 1rem; padding: 1rem 2rem; background: white; border-bottom: 1px solid #e0e0e0; .items-count { font-size: 0.875rem; color: #666; } } .items-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; padding: 2rem; } .item-card { position: relative; background: white; border: 2px solid #e0e0e0; border-radius: 12px; padding: 1rem; cursor: pointer; transition: all 0.2s; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); &:hover { box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15); transform: translateY(-4px); border-color: #1976d2; .delete-btn { opacity: 1; } } .item-card-actions { position: absolute; top: 0.5rem; left: 0.5rem; right: 0.5rem; z-index: 10; display: flex; justify-content: space-between; align-items: center; mat-checkbox { background-color: rgba(255, 255, 255, 0.9); border-radius: 4px; padding: 4px; } .delete-btn { opacity: 0; transition: opacity 0.2s; background-color: rgba(255, 255, 255, 0.95); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } } .item-checkbox { position: absolute; top: 0.5rem; left: 0.5rem; z-index: 10; } .item-image { width: 100%; height: 180px; margin-bottom: 1rem; border-radius: 4px; overflow: hidden; background: #f5f5f5; display: flex; align-items: center; justify-content: center; img { width: 100%; height: 100%; object-fit: cover; } .no-image { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; color: #ccc; mat-icon { font-size: 48px; width: 48px; height: 48px; } } } .item-info { h3 { margin: 0 0 0.5rem 0; font-size: 1rem; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .item-details { display: flex; justify-content: space-between; margin-bottom: 0.5rem; font-size: 0.875rem; .price { font-weight: 600; color: #1976d2; } .quantity { color: #666; } } .item-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; font-size: 0.75rem; color: #999; mat-icon { font-size: 18px; width: 18px; height: 18px; &.visible { color: #4caf50; } &.hidden { color: #f44336; } } } .item-tags { display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: center; mat-chip { font-size: 0.75rem; height: 24px; } .more-tags { font-size: 0.75rem; color: #666; } } } } .loading-more { display: flex; flex-direction: column; align-items: center; gap: 1rem; padding: 2rem; span { color: #666; font-size: 0.875rem; } } .end-message { text-align: center; padding: 2rem; color: #999; font-size: 0.875rem; } .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 4rem 2rem; color: #999; mat-icon { font-size: 64px; width: 64px; height: 64px; margin-bottom: 1rem; } p { font-size: 1.125rem; margin: 0; } } .scroll-sentinel { height: 4px; width: 100%; }