.gallery-section{width:100%}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:28px;margin-top:30px;padding:8px 4px 12px;display:grid}.gallery-item{cursor:pointer;background-color:#fff;border:none;border-radius:16px;flex-direction:column;transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden;box-shadow:0 2px 4px #0000000a,0 6px 16px #00000014,0 18px 40px #0000001a}.gallery-item:hover{transform:translateY(-6px)scale(1.01);box-shadow:0 4px 8px #0000000f,0 12px 28px #0000001f,0 32px 60px #00000024}.gallery-img-wrapper{aspect-ratio:4/3;background-color:#0a1628;width:100%;position:relative;overflow:hidden}.gallery-thumbnail{object-fit:cover;width:100%;height:100%;transition:transform .6s cubic-bezier(.16,1,.3,1)}.gallery-item:hover .gallery-thumbnail{transform:scale(1.08)}.gallery-hover-overlay{opacity:0;background:linear-gradient(#0a162800 0%,#0a162833 40%,#0a1628d9 100%);flex-direction:column;justify-content:center;align-items:center;padding:20px;transition:opacity .35s;display:flex;position:absolute;inset:0}.gallery-item:hover .gallery-hover-overlay{opacity:1}.zoom-icon{color:var(--color-accent);margin-bottom:12px;transition:transform .35s cubic-bezier(.16,1,.3,1);transform:scale(.8)}.gallery-item:hover .zoom-icon{transform:scale(1)}.gallery-hover-tag{color:#fff;text-transform:uppercase;letter-spacing:.15em;border-radius:var(--radius-sm);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1b4f9ecc;padding:4px 10px;font-size:.8rem;font-weight:600}.gallery-meta{border-top:1px solid #0a16280d;flex-direction:column;flex-grow:1;gap:4px;padding:16px 20px;display:flex}.gallery-meta h4{font-family:var(--font-serif);color:var(--color-primary);margin:0;font-size:1.15rem;font-weight:600;line-height:1.3}.gallery-meta p{color:var(--color-text-muted);letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:500}.lightbox-overlay{z-index:9999;background-color:#060e1af5;justify-content:center;align-items:center;animation:.3s forwards fadeIn;display:flex;position:fixed;inset:0}.lightbox-close-btn{color:#ffffffb3;cursor:pointer;z-index:10001;background:0 0;border:none;padding:10px;transition:color .2s,transform .2s;position:absolute;top:30px;right:30px}.lightbox-close-btn:hover{color:var(--color-accent);transform:scale(1.1)}.lightbox-nav-btn{color:#fff9;cursor:pointer;z-index:10001;background:0 0;border:none;padding:15px;transition:color .2s,transform .2s;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav-btn:hover{color:var(--color-accent)}.lightbox-nav-btn.prev{left:20px}.lightbox-nav-btn.prev:hover{transform:translateY(-50%)translate(-4px)}.lightbox-nav-btn.next{right:20px}.lightbox-nav-btn.next:hover{transform:translateY(-50%)translate(4px)}.lightbox-content-container{flex-direction:column;align-items:center;max-width:85vw;max-height:80vh;display:flex;position:relative}.lightbox-image-wrapper{border-radius:var(--radius-md);justify-content:center;align-items:center;max-height:70vh;display:flex;overflow:hidden;box-shadow:0 25px 50px -12px #00000080}.lightbox-image{object-fit:contain;max-width:100%;max-height:70vh;animation:.35s cubic-bezier(.16,1,.3,1) forwards scaleUp}.lightbox-caption{color:#fff;justify-content:space-between;align-items:flex-start;gap:20px;width:100%;padding-top:20px;display:flex}.caption-text h3{font-family:var(--font-serif);color:#fff;margin:0 0 4px;font-size:1.4rem;font-weight:500}.caption-region{color:var(--color-accent);text-transform:uppercase;letter-spacing:.1em;font-size:.8rem;font-weight:600}.caption-counter{border-radius:var(--radius-full);white-space:nowrap;letter-spacing:.05em;background-color:#ffffff1a;padding:6px 12px;font-size:.85rem;font-weight:500}@media (max-width:768px){.lightbox-nav-btn{display:none}.lightbox-content-container{max-width:95vw}.lightbox-close-btn{top:15px;right:15px}.caption-text h3{font-size:1.1rem}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:.5;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
