.image-skeleton {
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, #eee 30%, #f8f8f8 48%, #eee 66%);
  background-size: 260% 100%;
  animation: portfolio-shimmer 1.35s ease-in-out infinite;
}

@keyframes portfolio-shimmer {
  to { background-position-x: -200%; }
}

.dynamic-image-shell { position: relative; overflow: hidden; background: #eee; }
.dynamic-image-shell .dynamic-image {
  opacity: 0;
  transform: scale(1);
  filter: grayscale(0);
  transition: opacity .45s ease, transform .9s cubic-bezier(.2,.65,.25,1), filter .75s ease;
  will-change: transform, filter;
}
.dynamic-image-shell.is-loaded .dynamic-image { opacity: 1; }
.dynamic-image-shell.is-loaded .image-skeleton { opacity: 0; pointer-events: none; transition: opacity .25s ease; }
.dynamic-image-shell.is-empty { aspect-ratio: 1; background:#efede9; }
.empty-album-placeholder { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:13px; color:#8b8780; text-align:center; transition:color .45s ease,transform .7s cubic-bezier(.2,.65,.25,1); }
.empty-album-placeholder svg { width:58px; height:58px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.empty-album-placeholder span { font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; }
.item-portfolio-holder-v2:hover .empty-album-placeholder,
.item-portfolio-holder-v2:focus-within .empty-album-placeholder { color:#595650; transform:scale(1.04); }
.item-portfolio-holder-v2:hover .dynamic-image-shell .dynamic-image,
.item-portfolio-holder-v2:focus-within .dynamic-image-shell .dynamic-image {
  transform: scale(1.1);
  filter: grayscale(1);
}
.item-text-holder-v2 .portfolio-categ-v2 li {
  color: rgba(255,255,255,.96);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  text-shadow: 0 1px 5px rgba(0,0,0,.8), 0 0 14px rgba(0,0,0,.45);
}
.square-skeleton { position: relative; aspect-ratio: 1; }
.album-card-skeleton { padding: 0 15px 35px; }
.album-card-skeleton .text-skeleton { width: 70%; height: 18px; margin: 18px auto 0; background: #ededed; }

.album-hero {
  position: relative;
  height: min(78vh, 900px);
  min-height: 460px;
  overflow: hidden;
  background: #171717;
}
.album-hero::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.28); z-index: 1; }
.album-hero .image-skeleton { z-index: 0; background: linear-gradient(100deg, #222 30%, #333 48%, #222 66%); background-size: 260% 100%; }
.album-hero img { width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .55s ease; }
.album-hero.is-loaded img { opacity: 1; }
.album-hero.is-loaded .image-skeleton { opacity: 0; }
.album-hero-empty { position:absolute; inset:0; z-index:1; display:none; flex-direction:column; align-items:center; justify-content:center; gap:16px; color:#a8a49d; background:#242321; text-align:center; }
.album-hero-empty svg { width:72px; height:72px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.album-hero-empty span { font-size:12px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.album-hero.is-empty .album-hero-empty { display:flex; }
.album-hero.is-empty .image-skeleton { display:none; }
.album-hero .inner-desc { z-index: 2; }

.album-masonry { display: grid; gap: 30px; align-items: start; }
.album-masonry-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.album-masonry-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.album-masonry-1 { grid-template-columns: 1fr; }
.album-masonry-column { display: flex; flex-direction: column; gap: 30px; min-width: 0; }
.album-photo { width: 100%; }
.album-photo a, .album-photo img { display: block; width: 100%; height: 100%; }
.album-photo img { object-fit: cover; }
.album-photo:hover .dynamic-image,
.album-photo:focus-within .dynamic-image {
  transform: scale(1.06);
  filter: grayscale(1);
}
.album-empty { grid-column: 1 / -1; padding: 60px 0; text-align: center; }
.album-page .prev-next-gallery { display: none; }
.album-page .gallery-container { padding-bottom: clamp(64px, 8vw, 112px); }

@media (max-width: 991px) {
  .album-hero { height: 68vh; min-height: 400px; }
  .album-masonry, .album-masonry-column { gap: 20px; }
}
@media (max-width: 639px) {
  .album-hero { height: 60vh; min-height: 360px; }
  .album-masonry, .album-masonry-column { gap: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .image-skeleton { animation: none; }
  .dynamic-image-shell .dynamic-image { transition: none; }
  .item-portfolio-holder-v2:hover .dynamic-image-shell .dynamic-image,
  .item-portfolio-holder-v2:focus-within .dynamic-image-shell .dynamic-image,
  .album-photo:hover .dynamic-image,
  .album-photo:focus-within .dynamic-image { transform: none; filter: none; }
}
