.album-grid,.photo-gallery{columns:2;column-gap:var(--gutter)}.album-grid .album-card{display:block;break-inside:avoid;margin:0 0 var(--gutter)}.photo-gallery figure{display:block}.album-card,.photo-card{overflow:hidden;border-radius:var(--radius);background:var(--bg-elev);box-shadow:none;transition:transform 180ms ease}.album-card,.album-card:hover,.album-card:focus-visible,.photo-card:hover,.photo-card:focus-visible{color:#fff}.album-card:hover,.album-card:focus-visible{transform:translateY(-2px)}.card-media{position:relative;background-color:var(--bg-elev);background-image:linear-gradient(90deg,color-mix(in srgb,var(--fg) 5%,var(--bg-elev)) 0%,color-mix(in srgb,var(--fg) 10%,var(--bg-elev)) 50%,color-mix(in srgb,var(--fg) 5%,var(--bg-elev)) 100%);background-size:200% 100%;animation:photo-skeleton 1.2s ease infinite}.card-media img{display:block;width:100%;height:auto;margin:0;opacity:0;transition:opacity 220ms ease}.photo-card img{display:block;width:100%;height:auto;margin:0}.card-media img.is-loaded,.photo-card img.is-loaded{opacity:1}.card-media:has(img.is-loaded),.card-media:has(.album-placeholder){animation:none;background-image:none}.album-placeholder{display:grid;place-items:center;min-height:12rem;color:var(--muted);font-size:var(--text-ui)}.album-count{position:absolute;z-index:1;top:10px;right:10px;padding:3px 8px;border-radius:999px;background:rgba(0,0,0,.65);color:#fff;font-size:.75rem;font-variant-numeric:tabular-nums}.album-caption{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:2.4rem .75rem .75rem;background:linear-gradient(transparent,rgba(0,0,0,.68))}.album-caption h2{margin:0;color:#fff;font-size:var(--text-ui);font-weight:var(--weight-title);line-height:1.35}.album-caption time,.album-meta{color:var(--muted);font-size:var(--text-meta)}.album-caption time{display:block;margin-top:2px;color:rgba(255,255,255,.82)}.album-meta{margin:.5rem 0 0;font-variant-numeric:tabular-nums}.photo-gallery .photo-item{position:relative;break-inside:avoid;margin:0 0 var(--gutter);overflow:hidden;border-radius:var(--radius)}.photo-gallery .photo-card{display:block;width:100%;height:auto;padding:0;border:0;border-radius:0;background:0 0;box-shadow:none;text-align:left;cursor:zoom-in;aspect-ratio:auto;animation:none}.photo-gallery .photo-card:hover,.photo-gallery .photo-card:focus-visible{transform:none;box-shadow:none}.photo-item figcaption{position:absolute;z-index:1;right:0;bottom:0;left:0;margin:0;padding:2.4rem .75rem .75rem;background:linear-gradient(transparent,rgba(0,0,0,.68));color:#fff;font-size:var(--text-meta);line-height:1.45;opacity:0;pointer-events:none;transition:opacity 180ms ease}.photo-item:hover figcaption,.photo-item:focus-within figcaption{opacity:1}.image-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:max(16px,env(safe-area-inset-top))max(16px,env(safe-area-inset-right))max(16px,env(safe-area-inset-bottom))max(16px,env(safe-area-inset-left));overflow:hidden;border:0;background:rgba(0,0,0,.94);color:#fff}.image-dialog::backdrop{background:rgba(0,0,0,.94)}.image-dialog[open]{display:flex;align-items:center;justify-content:center}.image-dialog-frame{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-width:0;min-height:0}.image-dialog-frame img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.image-dialog-close{position:absolute;z-index:1;top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));display:grid;place-items:center;min-width:44px;min-height:44px;border:0;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-size:1.6rem;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent}.image-dialog-close:hover{background:rgba(255,255,255,.22)}.image-dialog-close:focus,.image-dialog-close:focus-visible,.image-dialog-close:active{outline:none;box-shadow:none}@media(max-width:560px){.album-grid,.photo-gallery{columns:1}}@media(hover:none){.photo-item figcaption{opacity:1}}@keyframes photo-skeleton{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.album-card,.photo-card{transition:none}.card-media,.photo-card{animation:none}.card-media img,.photo-card img{opacity:1;transition:none}}