/* === GRID VIEW === */ .grid-view { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 16px; padding: 20px; overflow-y: auto; height: 100%; } .card { width: var(--card-width); flex-shrink: 0; flex-grow: 0; background: var(--bg-card); border-radius: 10px; border: 1px solid var(--border); overflow: hidden; cursor: pointer; transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; position: relative; } .card:hover { border-color: var(--accent); transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0,0,0,0.3); } .card.selected { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(124, 138, 255, 0.4); } .card-checkbox { position: absolute; top: 10px; left: 10px; width: 24px; height: 24px; border-radius: 6px; background: rgba(0,0,0,0.7); border: 2px solid var(--border); display: none; align-items: center; justify-content: center; z-index: 5; transition: all 0.15s ease; } .card-checkbox.visible { display: flex; } .card-checkbox.checked { background: var(--accent); border-color: var(--accent); } .card-checkbox.checked::after { content: "\2713"; color: #fff; font-size: 14px; font-weight: bold; } .card-image { width: var(--card-width); height: var(--card-img-height); background: linear-gradient(145deg, #1a1a24 0%, #0a0a0f 100%); position: relative; overflow: hidden; } .card-placeholder { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 2.5em; font-weight: 700; color: var(--accent); opacity: 0.5; text-transform: uppercase; pointer-events: none; } .card-img { width: 100%; height: 100%; object-fit: cover; position: relative; z-index: 1; } .card-body { padding: 12px; } .card-ref { font-size: 0.75em; color: var(--accent); font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; } .card-name { font-size: 0.85em; color: var(--text); margin-top: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.3; }