.album-view{cursor:grab;background-color:#000}.album-view:active{cursor:grabbing}.navigation-hint{animation:pulse 2s infinite}.absolute,.rounded-lg,.album-image{backface-visibility:hidden;transform-style:preserve-3d;will-change:transform,opacity;transform:translateZ(0)}.absolute{isolation:isolate}.photo-container{display:flex;justify-content:center;align-items:center;min-width:320px;min-height:240px;background-size:400% 400%;animation:gradientBg 4s ease infinite;position:relative;box-shadow:0 10px 30px -5px #00000080;perspective:1000px;transition:all .8s cubic-bezier(.22,1,.36,1)}.album-image{max-width:100%;max-height:80vh;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;display:block;transition:all .7s ease!important;position:relative;z-index:1;box-shadow:0 5px 15px -8px #0000004d;filter:brightness(.95) contrast(1)}.album-image:hover{transform:scale(1.04)!important;box-shadow:0 8px 20px -5px #0006;filter:brightness(1) contrast(1.2)}img[lazy=loading]{opacity:0}img[lazy=loaded]{opacity:1;transition:all .7s ease!important}img[lazy=error]{opacity:.5;filter:grayscale(1)}.rounded-lg{overflow:hidden}.preload-container{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;opacity:.01}.preload-image{position:absolute;width:1px;height:1px;opacity:.01}.masonry-container{padding:80px 200px 20px 20px;height:100vh;overflow-y:auto;overflow-x:hidden;position:relative;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.masonry-container::-webkit-scrollbar{width:8px}.masonry-container::-webkit-scrollbar-track{background:transparent}.masonry-container::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:10px}.masonry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:20px;grid-auto-flow:dense;width:100%;margin:0 auto;max-width:calc(100% - 180px)}.masonry-item{position:relative;overflow:hidden;border-radius:12px;box-shadow:0 10px 30px -15px #0000004d;cursor:pointer;background:#1e1e1e80;perspective:1000px;transform-style:preserve-3d;-moz-column-break-inside:avoid;break-inside:avoid;transition:all .5s cubic-bezier(.25,1,.5,1)}.masonry-item:before{content:"";display:block;padding-bottom:100%;grid-area:1 / 1 / 2 / 2}.masonry-item.wide{grid-column:span 2}.masonry-item.tall{grid-row:span 2}.masonry-item.wide.tall{grid-column:span 2;grid-row:span 2}.masonry-item:hover{transform:translateY(-5px) scale(1.03);box-shadow:0 15px 35px -10px #00000080;z-index:10}.masonry-item img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:12px;transition:all .6s cubic-bezier(.2,1,.3,1);filter:brightness(.95) contrast(1.05)}.masonry-item:hover img{transform:scale(1.1);filter:brightness(1.05) contrast(1.1)}.masonry-item .item-overlay{position:absolute;bottom:0;left:0;right:0;padding:20px;background:linear-gradient(to top,#000000b3,#0000001a);color:#fff;opacity:0;border-radius:0 0 12px 12px;transform:translateY(10px);transition:all .4s ease}.masonry-item:hover .item-overlay{opacity:1;transform:translateY(0)}.load-more{grid-column:1 / -1;text-align:center;padding:30px;color:#ffffffb3;font-size:14px;display:flex;flex-direction:column;align-items:center;gap:10px}.load-more-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin 1s ease-in-out infinite}.masonry-item .loading-indicator{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#282828b3;border-radius:12px;z-index:1}.ripple{display:inline-block;position:relative;width:64px;height:64px}.ripple div{position:absolute;border:4px solid #fff;opacity:1;border-radius:50%;animation:ripple 1s cubic-bezier(0,.2,.8,1) infinite}.ripple div:nth-child(2){animation-delay:-.5s}.back-to-top{position:fixed;bottom:30px;right:30px;width:50px;height:50px;border-radius:50%;background:#ffffff26;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 15px #0003;transition:all .3s ease;z-index:100;transform:translateY(100px);opacity:0}.back-to-top.visible{transform:translateY(0);opacity:1}.back-to-top:hover{background:#ffffff40;transform:translateY(-5px)}.fade-transform-enter-active,.fade-transform-leave-active{transition:all .5s cubic-bezier(.3,.7,.4,1)}.fade-transform-enter-from{opacity:0;transform:translateY(30px)}.fade-transform-leave-to{opacity:0;transform:translateY(-30px)}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.masonry-item{animation:fadeIn .6s both;animation-delay:calc(var(--animation-order) * .1s)}@keyframes pulse{0%,to{opacity:.6}50%{opacity:.3}}@keyframes gradientBg{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes fadeSlideUp{0%{opacity:.5;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeSlideDown{0%{opacity:.5;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ripple{0%{top:28px;left:28px;width:0;height:0;opacity:1}to{top:-1px;left:-1px;width:58px;height:58px;opacity:0}}@media (max-width: 768px){.masonry-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:10px;max-width:100%}.masonry-container{padding-right:20px}.view-mode-toggle-btn{top:70px;right:10px;padding:8px 12px;font-size:.9em}}@media (min-width: 1200px){.masonry-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}@media (prefers-color-scheme: dark){.masonry-item{box-shadow:0 10px 30px -15px #00000080}}.masonry-item.highlight-item{z-index:20;transform:scale(1.05);box-shadow:0 0 25px #ffffff80;outline:2px solid rgba(255,255,255,.7);transition:all .5s ease}.masonry-item.highlight-item:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:12px;background:radial-gradient(circle,#fff3,#fff0 70%);animation:pulse-highlight 1s ease-in-out infinite alternate}@keyframes pulse-highlight{0%{opacity:1}to{opacity:.3}}
