.photo-page{max-width:1200px;margin:0 auto;padding:0 2rem 2rem}.photo-header{margin-bottom:2rem}.photo-label{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.5rem}.photo-title{font-size:2rem}.photo-header-row{display:flex;align-items:baseline;gap:1rem}.photo-count{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-muted)}.photo-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.search-bar{flex-shrink:0}.search-input{width:220px;padding:.5rem .875rem;font-family:var(--font-sans);font-size:.8rem;border:1px solid var(--border);border-radius:20px;background:var(--surface);color:var(--ink);transition:border-color .2s}.search-input:focus{border-color:var(--ink-muted);outline:none}.search-input::placeholder{color:var(--ink-faint)}.filter-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.filter-tab{padding:.375rem 1rem;font-family:var(--font-sans);font-size:.8rem;border:1px solid var(--border);border-radius:20px;background:transparent;color:var(--ink-muted);cursor:pointer;transition:all .2s}.filter-tab:hover{border-color:var(--ink-muted);color:var(--ink)}.filter-tab.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.filter-count{font-size:.65rem;margin-left:.25rem;opacity:.6}.masonry-grid{column-count:4;column-gap:1rem}.masonry-item{display:block;width:100%;margin-bottom:1rem;page-break-inside:avoid;break-inside:avoid;border:none;padding:0;background:none;cursor:pointer;position:relative;border-radius:8px;overflow:hidden}.masonry-img{width:100%;display:block;background:var(--border);background-size:cover;background-position:50%;transition:transform .3s ease;min-height:150px}.masonry-img[src]{min-height:auto}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.masonry-item:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--surface),transparent);background-size:200% 100%;animation:shimmer 1.5s infinite;z-index:1;opacity:1;transition:opacity .3s;pointer-events:none}.masonry-item.loaded:before{opacity:0}.masonry-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.6),transparent);opacity:0;transition:opacity .3s ease;display:flex;align-items:flex-end;padding:1rem}.masonry-item:hover .masonry-img{transform:scale(1.03)}.masonry-item:hover .masonry-overlay{opacity:1}.masonry-title{color:#fff;font-size:.875rem;font-weight:500}.masonry-empty{text-align:center;color:var(--ink-muted);padding:4rem 0;font-size:1rem}.lightbox{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;animation:lightbox-fade .3s ease}@keyframes lightbox-fade{0%{opacity:0}to{opacity:1}}.lightbox-close{position:absolute;top:1rem;right:1.5rem;background:none;border:none;color:#fff;font-size:2rem;cursor:pointer;z-index:201;opacity:.7;transition:opacity .2s}.lightbox-close:hover{opacity:1}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;color:#fff;font-size:3rem;cursor:pointer;z-index:201;opacity:.5;transition:opacity .2s;padding:1rem}.lightbox-nav:hover{opacity:1}.lightbox-prev{left:1rem}.lightbox-next{right:1rem}.lightbox-content{display:flex;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;position:relative}.lightbox-placeholder{position:absolute;width:100%;height:100%;object-fit:contain;filter:blur(20px);transform:scale(1.1)}.lightbox-img{max-width:90vw;max-height:75vh;object-fit:contain;opacity:0;transition:opacity .3s;animation:lightbox-scale .3s ease}.lightbox-img.loaded{opacity:1}@keyframes lightbox-scale{0%{transform:scale(.95)}to{transform:scale(1)}}.lightbox-info{margin-top:1rem;text-align:center}.lightbox-title{color:#fff;font-size:1.125rem;font-family:var(--font-serif);margin-bottom:.5rem}.lightbox-exif{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;color:rgba(255,255,255,.6);font-family:var(--font-mono);font-size:.75rem}@media (max-width:1024px){.masonry-grid{column-count:3}}@media (max-width:768px){.masonry-grid{column-count:2}.lightbox-nav{font-size:2rem;padding:.5rem}}@media (max-width:480px){.masonry-grid{column-count:1}}