/* Job Photos Styles */ .photo-card { position: relative; cursor: pointer; border-radius: 0.5rem; overflow: hidden; aspect-ratio: 4/3; background: var(--bs-secondary-bg); box-shadow: 0 2px 4px rgba(0,0,0,0.1); transition: transform 0.3s, box-shadow 0.3s; } .photo-card:hover { transform: translateY(-4px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); } .photo-thumbnail { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; } .photo-card:hover .photo-thumbnail { transform: scale(1.05); } .photo-overlay { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, rgba(0,0,0,0.8), transparent); padding: 1rem; color: white; opacity: 0; transition: opacity 0.3s; } .photo-card:hover .photo-overlay { opacity: 1; } .photo-type-badge { position: absolute; top: 0.5rem; right: 0.5rem; font-size: 0.75rem; font-weight: 600; opacity: 0; transition: opacity 0.3s; } .photo-card:hover .photo-type-badge { opacity: 1; } .photo-caption { margin: 0.5rem 0 0 0; font-size: 0.875rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .drop-zone { border: 2px dashed var(--bs-border-color); border-radius: 0.5rem; padding: 2rem; text-align: center; cursor: pointer; transition: all 0.3s; background: var(--bs-body-bg); } .drop-zone:hover, .drop-zone.drag-over { border-color: var(--bs-primary); background: var(--bs-secondary-bg); } #viewPhotoImage { object-fit: contain; width: 100%; } #photoDetails { text-align: left; background: var(--bs-secondary-bg); padding: 1rem; border-radius: 0.5rem; margin-top: 1rem; } /* Dark mode adjustments */ [data-bs-theme="dark"] .photo-card { background: #2d3748; } [data-bs-theme="dark"] .drop-zone { border-color: #4a5568; } [data-bs-theme="dark"] .drop-zone:hover, [data-bs-theme="dark"] .drop-zone.drag-over { border-color: var(--bs-primary); background: #2d3748; } /* Mobile responsiveness */ @media (max-width: 768px) { .photo-overlay { opacity: 1; padding: 0.5rem; background: linear-gradient(to top, rgba(0,0,0,0.9), transparent); } .photo-type-badge { opacity: 1; } .photo-caption { font-size: 0.75rem; } }