@keyframes selection-bounce{0%{transform:scale(1)}50%{transform:scale(.95)}to{transform:scale(1)}}.animate-selection-bounce{animation:selection-bounce .2s ease-out}@keyframes checkmark-appear{0%{transform:scale(0);opacity:0}50%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.animate-checkmark{animation:checkmark-appear .2s ease-out forwards}@keyframes heart-burst{0%{transform:scale(1)}25%{transform:scale(1.3)}50%{transform:scale(.9)}to{transform:scale(1)}}.animate-heart-burst{animation:heart-burst .4s ease-out}@keyframes bookmark-bounce{0%{transform:scale(1)}30%{transform:scale(1.2) translateY(-2px)}50%{transform:scale(.9)}70%{transform:scale(1.05)}to{transform:scale(1)}}.animate-bookmark-bounce{animation:bookmark-bounce .4s ease-out}@keyframes heart-particle{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-x, 20px),var(--particle-y, -20px)) scale(0);opacity:0}}.heart-particle{animation:heart-particle .6s ease-out forwards}.heart-particle-1{--particle-x: -15px;--particle-y: -20px}.heart-particle-2{--particle-x: 15px;--particle-y: -20px}.heart-particle-3{--particle-x: -20px;--particle-y: -5px}.heart-particle-4{--particle-x: 20px;--particle-y: -5px}.heart-particle-5{--particle-x: -10px;--particle-y: -25px}.heart-particle-6{--particle-x: 10px;--particle-y: -25px}@keyframes photo-hover-in{0%{transform:scale(1);box-shadow:0 1px 3px #0000001a}to{transform:scale(1.02);box-shadow:0 4px 12px #00000026}}@keyframes photo-hover-out{0%{transform:scale(1.02);box-shadow:0 4px 12px #00000026}to{transform:scale(1);box-shadow:0 1px 3px #0000001a}}.photo-card-hover-in{animation:photo-hover-in .15s ease-out forwards}.photo-card-hover-out{animation:photo-hover-out .15s ease-out forwards}@keyframes quick-actions-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-quick-actions{animation:quick-actions-fade-in .15s ease-out forwards}@keyframes delete-shrink-fade{0%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}.animate-delete{animation:delete-shrink-fade .3s ease-out forwards}@keyframes privacy-badge-transition{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.animate-privacy-change{animation:privacy-badge-transition .3s ease-out}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.dark .animate-shimmer{background:linear-gradient(90deg,#2d2d2d 25%,#3d3d3d,#2d2d2d 75%);background-size:200% 100%}@keyframes staggered-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-staggered-fade-in{animation:staggered-fade-in .2s ease-out forwards;opacity:0}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-float{animation:float 3s ease-in-out infinite}@keyframes view-crossfade-in{0%{opacity:0}to{opacity:1}}@keyframes view-crossfade-out{0%{opacity:1}to{opacity:0}}.animate-view-in{animation:view-crossfade-in .25s ease-out forwards}.animate-view-out{animation:view-crossfade-out .25s ease-out forwards}@keyframes blurhash-fade{0%{opacity:1}to{opacity:0}}.animate-blurhash-fade{animation:blurhash-fade .2s ease-out forwards}@keyframes toast-slide-in{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes toast-slide-out{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.animate-toast-in{animation:toast-slide-in .2s ease-out forwards}.animate-toast-out{animation:toast-slide-out .2s ease-in forwards}@keyframes scroll-indicator-fade-in{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes scroll-indicator-fade-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(10px)}}.animate-scroll-indicator-in{animation:scroll-indicator-fade-in .15s ease-out forwards}.animate-scroll-indicator-out{animation:scroll-indicator-fade-out .15s ease-in forwards}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.animate-selection-bounce,.animate-heart-burst,.animate-float,.animate-shimmer{animation:none!important}.photo-card-hover-in,.photo-card-hover-out{animation:none!important;transition:opacity .01ms!important}.animate-quick-actions{animation:none!important;opacity:1!important}.animate-delete{animation:none!important;opacity:0!important}.animate-staggered-fade-in{animation:none!important;opacity:1!important}}@keyframes fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fade-in .2s ease-out forwards}@keyframes slide-up{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.animate-slide-up{animation:slide-up .25s ease-out forwards}@keyframes ripple{0%{width:0;height:0;opacity:.5}to{width:200px;height:200px;opacity:0}}.animate-ripple{animation:ripple .4s ease-out forwards}@keyframes long-press-indicator{0%{transform:translate(-50%,-50%) scale(0);opacity:.8}to{transform:translate(-50%,-50%) scale(1);opacity:0}}.animate-long-press{animation:long-press-indicator .3s ease-out forwards}@keyframes swipe-reveal{0%{transform:translate(0)}to{transform:translate(-100%)}}.animate-swipe-reveal{animation:swipe-reveal .2s ease-out forwards}@keyframes bottom-sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes bottom-sheet-slide-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}.animate-bottom-sheet-up{animation:bottom-sheet-slide-up .3s ease-out forwards}.animate-bottom-sheet-down{animation:bottom-sheet-slide-down .3s ease-in forwards}@keyframes backdrop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes backdrop-fade-out{0%{opacity:1}to{opacity:0}}.animate-backdrop-in{animation:backdrop-fade-in .2s ease-out forwards}.animate-backdrop-out{animation:backdrop-fade-out .2s ease-in forwards}.animation-delay-50{animation-delay:50ms}.animation-delay-100{animation-delay:.1s}.animation-delay-150{animation-delay:.15s}.animation-delay-200{animation-delay:.2s}.animation-delay-250{animation-delay:.25s}.animation-delay-300{animation-delay:.3s}.animation-delay-350{animation-delay:.35s}.animation-delay-400{animation-delay:.4s}.animation-delay-450{animation-delay:.45s}.animation-delay-500{animation-delay:.5s}.animation-fill-forwards{animation-fill-mode:forwards}.animation-fill-backwards{animation-fill-mode:backwards}.animation-fill-both{animation-fill-mode:both}@keyframes viewer-expand{0%{opacity:.8;border-radius:8px}to{opacity:1;border-radius:0}}@keyframes viewer-shrink{0%{opacity:1;border-radius:0}to{opacity:.8;border-radius:8px}}.animate-viewer-expand{animation:viewer-expand .3s cubic-bezier(.4,0,.2,1) forwards}.animate-viewer-shrink{animation:viewer-shrink .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes slide-in-left{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-in-right{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0}}@keyframes slide-out-right{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.animate-slide-in-left{animation:slide-in-left .3s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-in-right{animation:slide-in-right .3s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-out-left{animation:slide-out-left .3s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-out-right{animation:slide-out-right .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes viewer-backdrop-in{0%{background-color:#0000}to{background-color:#000}}@keyframes viewer-backdrop-out{0%{background-color:#000}to{background-color:#0000}}.animate-viewer-backdrop-in{animation:viewer-backdrop-in .3s ease-out forwards}.animate-viewer-backdrop-out{animation:viewer-backdrop-out .3s ease-in forwards}@keyframes indicator-pulse{0%,to{opacity:.5}50%{opacity:1}}.animate-indicator-pulse{animation:indicator-pulse 2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.animate-viewer-expand,.animate-viewer-shrink,.animate-slide-in-left,.animate-slide-in-right,.animate-slide-out-left,.animate-slide-out-right,.animate-viewer-backdrop-in,.animate-viewer-backdrop-out{animation:none!important}.animate-viewer-expand,.animate-slide-in-left,.animate-slide-in-right,.animate-viewer-backdrop-in{opacity:1!important}.animate-viewer-shrink,.animate-slide-out-left,.animate-slide-out-right,.animate-viewer-backdrop-out{opacity:0!important}}
