@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.gallery-item-enter{animation:fadeInUp .3s ease-out}@keyframes viewerFadeIn{0%{opacity:0}to{opacity:1}}.viewer-overlay{animation:viewerFadeIn .2s ease-out}.zoom-image{transition:transform .2s ease-out;will-change:transform}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(59,130,246,.5)}70%{box-shadow:0 0 0 6px rgba(59,130,246,0)}to{box-shadow:0 0 0 0 rgba(59,130,246,0)}}.selection-indicator-active{animation:pulse-ring 1.5s ease-out infinite}.gallery-thumbnail{transition:all .2s ease}.gallery-thumbnail:hover{transform:scale(1.02);box-shadow:0 4px 12px rgba(0,0,0,.3)}.gallery-thumbnail:active{transform:scale(.98)}@keyframes spin{to{transform:rotate(1turn)}}.spinner{animation:spin 1s linear infinite}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.skeleton{background:linear-gradient(90deg,rgba(255,255,255,.05),rgba(255,255,255,.1) 50%,rgba(255,255,255,.05));background-size:1000px 100%;animation:shimmer 2s infinite}.tab-indicator{transition:all .3s cubic-bezier(.4,0,.2,1)}.viewer-nav-button{transition:all .2s ease}.viewer-nav-button:hover{transform:scale(1.1);background-color:rgba(0,0,0,.8)}.viewer-nav-button:active{transform:scale(.95)}.gallery-scroll{scroll-behavior:smooth}.gallery-no-select,.gallery-no-select *{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}.gallery-no-select img{-webkit-user-drag:none;pointer-events:none}.gallery-scroll::-webkit-scrollbar{width:8px;height:8px}.gallery-scroll::-webkit-scrollbar-track{background:rgba(255,255,255,.05);border-radius:4px}.gallery-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:4px}.gallery-scroll::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3)}@keyframes play-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}.video-play-icon{animation:play-pulse 2s ease-in-out infinite}@media (max-width:768px){*{animation-duration:.2s!important}.touch-target{min-width:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.gallery-action-button:focus-visible,.gallery-thumbnail:focus-visible,.viewer-nav-button:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}@keyframes checkmark{0%{transform:scale(0) rotate(45deg)}to{transform:scale(1) rotate(45deg)}}.checkmark-animation{animation:checkmark .2s ease-out}.viewer-backdrop{backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5)}.gallery-grid{transition:gap .3s ease}@keyframes badge-slide-in{0%{transform:translateX(-20px);opacity:0}to{transform:translateX(0);opacity:1}}.uploader-badge{animation:badge-slide-in .3s ease-out}.image-loading{position:relative;overflow:hidden}.image-loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:shimmer 1.5s infinite}.fade-enter{opacity:0}.fade-enter-active{opacity:1;transition:opacity .3s ease-in}.fade-exit{opacity:1}.fade-exit-active{opacity:0;transition:opacity .2s ease-out}