/* gallery.css – Phase 2 */ .gallery-grid {display: grid;grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));gap: 12px;} .gallery-grid a {position: relative;overflow: hidden;border-radius: 8px;box-shadow: 0 2px 6px var(--shadow);background: #000;} .thumb {width: 100%;height: auto;opacity: 0;transition: opacity .4s ease;} .thumb.loaded {opacity: 1;} .download-link {display: inline-block;margin-top: 8px;background: var(--accent);color: #fff;padding: 8px 16px;border-radius: 8px;text-decoration: none;} .download-link:hover {background: var(--accentHover);} .exif {margin-top: 8px;font-size: 13px;color: var(--muted);} .hidden {display: none;} .gdesc-inner {background: var(--card);} .gdesc-inner .gslide-title {color: dimgray !important;} .gdesc-inner .exif {column-count: 2;column-gap: 2em;margin-top: 0.75em;font-size: 0.9em;line-height: 1.5;max-width: 600px;} .gdesc-inner .exif br {content: "";display: block;margin-bottom: 0.2em;} .gdesc-inner .exif span.label {font-weight: 600;color: #444;} .gdesc-inner .exif span.value {color: #666;}