.gallery-wrap{margin-top:24px}.gallery-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start}.gallery-item{position:relative;border-radius:18px;overflow:hidden;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);aspect-ratio:16/9;cursor:pointer;will-change:transform;transform:translateY(4px);opacity:0;transition:transform .2s cubic-bezier(.2,0,.2,1),opacity .2s ease,box-shadow .25s ease,border-color .25s ease}.gallery-item.visible{transform:translateY(0);opacity:1}@media(hover:hover)and (pointer:fine){html:not([data-hover=off]) .gallery-item:hover{transform:translateY(var(--hover-y));border-color:#ffffff47;box-shadow:0 10px 28px #00000059,0 0 0 1px #ffffff14 inset;z-index:2}html[data-hover=off] .gallery-item:hover{border-color:#ffffff47;box-shadow:0 10px 28px #00000059,0 0 0 1px #ffffff14 inset;z-index:2}}.thumb-container{position:relative;width:100%;height:100%;overflow:hidden;display:grid;place-items:center;background:radial-gradient(circle at top left,rgba(255,255,255,.14),transparent 45%),linear-gradient(135deg,#ffffff0d,#ffffff1a)}.thumb-container:before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,#ffffff0d 18%,#ffffff24,#ffffff0f,#ffffff1f,#ffffff0d 82%);background-size:220% 100%;pointer-events:none;z-index:2;opacity:.92;-webkit-animation:skeleton-sweep 1.2s linear infinite;animation:skeleton-sweep 1.2s linear infinite}.thumb-container:after{content:"";position:absolute;inset:0;background:-webkit-linear-gradient(120deg,transparent 40%,rgba(240,240,255,.45) 50%,transparent 60%);background:linear-gradient(120deg,transparent 40%,rgba(240,240,255,.45) 50%,transparent 60%);width:100%;height:100%;opacity:1;pointer-events:none;z-index:3;-webkit-animation:shimmer-diagonal .85s linear infinite;animation:shimmer-diagonal .85s linear infinite;transition:opacity .3s ease}.thumb-container.loaded:after{opacity:0}.thumb-container.loaded:before{opacity:0}@-webkit-keyframes shimmer-diagonal{0%{-webkit-transform:translateX(-100%) skewX(-18deg);transform:translate(-100%) skew(-18deg)}to{-webkit-transform:translateX(100%) skewX(-18deg);transform:translate(100%) skew(-18deg)}}@keyframes shimmer-diagonal{0%{-webkit-transform:translateX(-100%) skewX(-18deg);transform:translate(-100%) skew(-18deg)}to{-webkit-transform:translateX(100%) skewX(-18deg);transform:translate(100%) skew(-18deg)}}@-webkit-keyframes skeleton-sweep{0%{background-position:200% 0}to{background-position:-20% 0}}@keyframes skeleton-sweep{0%{background-position:200% 0}to{background-position:-20% 0}}.thumb{width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition:opacity .2s ease,transform 0s;display:block}.thumb.loaded{opacity:1}.thumb-placeholder{position:absolute;inset:0;z-index:1;display:flex;align-items:flex-end;padding:18px 20px;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.thumb-placeholder-inner{width:min(72%,220px);display:grid;gap:10px}.thumb-placeholder .skeleton-line{background:linear-gradient(90deg,#ffffff1f,#ffffff38,#ffffff1f);background-size:200% 100%;-webkit-animation:skeleton-sweep 1.2s linear infinite;animation:skeleton-sweep 1.2s linear infinite}.thumb-placeholder .skeleton-line:last-child{width:58%}.thumb-container.loaded .thumb-placeholder{opacity:0;transform:scale(1.02)}.gallery-item:hover .thumb.loaded{transform:scale(calc(1 + ((var(--hover-scale) - 1) * 1.8)))}.item-caption{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.92) 0%,transparent 60%);display:flex;align-items:flex-end;justify-content:space-between;padding:18px 20px;opacity:0;transition:opacity .25s ease;pointer-events:none}.gallery-item:hover .item-caption{opacity:1}.caption-text{font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.5);font-size:14px;max-width:70%}.dl-btn{pointer-events:auto;background:#ffffff29;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.28);color:#fff;text-decoration:none;font-size:12px;font-weight:600;padding:6px 12px;border-radius:20px;transition:background .2s,transform .2s,border-color .2s;white-space:nowrap}.dl-btn:hover{background:#ffffff52;border-color:#fff;transform:translateY(-1px)}html[data-hover=off] .gallery-item:hover,html[data-hover=off] .gallery-item:hover .thumb.loaded,html[data-hover=off] .lb-btn:hover,html[data-hover=off] .lb-btn:active,html[data-hover=off] .lb-download:hover,html[data-hover=off] .dl-btn:hover{transform:none!important}html[data-hover=off] .lb-prev,html[data-hover=off] .lb-next,html[data-hover=off] .lb-prev:hover,html[data-hover=off] .lb-next:hover,html[data-hover=off] .lb-prev:active,html[data-hover=off] .lb-next:active{transform:translateY(-50%)!important}@media(max-width:768px){.gallery-grid{grid-template-columns:1fr;gap:20px}.item-caption{opacity:1;background:linear-gradient(to top,rgba(0,0,0,.85),transparent);pointer-events:auto}.gallery-item:hover{transform:none;box-shadow:none}}.lightbox-overlay{position:fixed;inset:0;z-index:9999;background:#050505f2;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .32s ease}.lightbox-overlay.active{opacity:1;pointer-events:auto}.lightbox-inner{position:relative;max-width:90vw;max-height:88vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;overflow:hidden;isolation:isolate}.lightbox-stage{position:relative;display:grid;place-items:center;max-width:90vw;max-height:80vh}.lightbox-image{grid-area:1 / 1;position:relative;z-index:1;max-width:90vw;max-height:80vh;border-radius:16px;box-shadow:0 0 50px #000000a6;object-fit:contain;background:radial-gradient(circle at top,rgba(255,255,255,.08),transparent 55%);opacity:0;transform:scale(.98);transition:opacity .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1);cursor:default;-webkit-user-select:none;user-select:none;will-change:opacity,transform}.lightbox-image.visible{opacity:1;transform:scale(1)}.lightbox-image.is-exiting-next{opacity:0;transform:translate(-54px) scale(.985)}.lightbox-image.is-exiting-prev,.lightbox-image.is-entering-next{opacity:0;transform:translate(54px) scale(.985)}.lightbox-image.is-entering-prev{opacity:0;transform:translate(-54px) scale(.985)}.lightbox-image.visible.is-entering-next,.lightbox-image.visible.is-entering-prev{opacity:1;transform:translate(0) scale(1)}.lightbox-swap-ghost{position:absolute;z-index:1;pointer-events:none;border-radius:16px;object-fit:contain;box-shadow:0 0 50px #000000a6;background:radial-gradient(circle at top,rgba(255,255,255,.08),transparent 55%);opacity:1;will-change:transform,opacity;transition:transform .46s cubic-bezier(.22,1,.36,1),opacity .46s cubic-bezier(.22,1,.36,1)}.lightbox-swap-ghost.is-swiping-next{transform:translate(-96px) scale(.985);opacity:0}.lightbox-swap-ghost.is-swiping-prev{transform:translate(96px) scale(.985);opacity:0}.lightbox-image--incoming{z-index:2;pointer-events:none}.lightbox-ui{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .22s ease}.lightbox-ui.ui-visible{opacity:1;pointer-events:auto}.lb-meta{position:absolute;left:50%;bottom:22px;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:8px 16px;border-radius:999px;background:#0a0a0cd9;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);max-width:min(92vw,560px);flex-wrap:wrap;justify-content:center;opacity:0;pointer-events:none;transition:opacity .22s ease}.lb-meta.ui-visible{opacity:1;pointer-events:auto}.lb-caption{color:#fff;font-size:13px;font-weight:500;white-space:nowrap}.lb-download{border:none;outline:none;background:#ffffff2e;color:#fff;font-size:13px;font-weight:600;padding:6px 14px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:4px;transition:all .18s ease}.lb-download:hover{background:#ffffff4d;transform:translateY(-1px)}@media(max-width:768px){.lb-meta{bottom:16px;padding:7px 14px}.lb-caption{font-size:12px}.lb-download{font-size:12px;padding:5px 12px}}.lb-btn{pointer-events:auto;position:absolute;width:56px;height:56px;border-radius:50%;background:#121214b3;border:1px solid rgba(255,255,255,.16);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 22px #0000003d;transition:transform .2s cubic-bezier(.22,1,.36,1),background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease}.lb-btn:hover,.lb-btn:focus-visible{background:#ffffff42;border-color:#ffffff80;box-shadow:0 14px 30px #00000057}.lb-btn:active{transform:scale(.95);box-shadow:0 8px 18px #0000003d}.lb-prev:active,.lb-next:active{transform:translateY(-50%) scale(.96)}.lb-close:active{transform:scale(.96)}.lb-btn svg{width:36px;height:36px;display:block;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:none;transition:transform .2s cubic-bezier(.22,1,.36,1)}.lb-close{top:22px;right:22px}.lb-prev,.lb-next{top:50%;transform:translateY(-50%)}.lb-prev{left:22px}.lb-next{right:22px}.lb-close:hover,.lb-close:focus-visible{transform:scale(1.08)}.lb-prev:hover,.lb-next:hover,.lb-prev:focus-visible,.lb-next:focus-visible{transform:translateY(-50%) scale(1.08)}.lb-prev:hover,.lb-next:hover,.lb-prev:focus-visible,.lb-next:focus-visible{background:#ffffff42;border-color:#ffffff80;box-shadow:0 14px 30px #00000057}@media(max-width:768px){.lb-btn{width:48px;height:48px}.lb-btn svg{width:32px;height:32px}.lb-close{top:14px;right:14px}.lb-prev{left:10px}.lb-next{right:10px}}.anim-ghost{position:fixed;z-index:10000;pointer-events:none;transform-origin:top left;border-radius:18px;box-shadow:0 10px 30px #0009;will-change:transform,width,height,top,left;object-fit:cover}html[data-hover=off] .gallery-item:hover,html[data-hover=off] .dl-btn:hover,html[data-hover=off] .lb-download:hover,html[data-hover=off] .lb-btn:hover{transform:none}html[data-hover=off] .lb-prev:hover,html[data-hover=off] .lb-next:hover,html[data-hover=off] .lb-prev:active,html[data-hover=off] .lb-next:active,html[data-hover=off] .lb-prev:focus-visible,html[data-hover=off] .lb-next:focus-visible{transform:translateY(-50%)!important}.lb-prev svg{margin-left:-5px}.lb-next svg{margin-right:-5px}html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:hover,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:active,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:focus-visible,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-download:hover,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-download:active,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-download:focus-visible{transform:none!important}html:is([data-hover=off],[data-hover-intensity=zero]) .lb-prev,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-next,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-prev:hover,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-next:hover,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-prev:active,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-next:active,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-prev:focus-visible,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-next:focus-visible{transform:translateY(-50%)!important}html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:hover svg,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:active svg,html:is([data-hover=off],[data-hover-intensity=zero]) .lb-btn:focus-visible svg{transform:none!important}
