@keyframes spring-up{0%{transform:translateY(100px);opacity:0}60%{transform:translateY(-10px);opacity:1}to{transform:translateY(0);opacity:1}}@keyframes photo-reveal{0%{opacity:0;transform:scale(.9) translateY(10px);filter:blur(10px)}to{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}}@keyframes skeleton-pulse{0%,to{background-color:#f3f4f699}50%{background-color:#e5e7ebcc}}@keyframes pulse-ring{0%{transform:scale(.95);box-shadow:0 0 #4f46e5b3}70%{transform:scale(1);box-shadow:0 0 0 10px #4f46e500}to{transform:scale(.95);box-shadow:0 0 #4f46e500}}.animate-spring-up{animation:spring-up .6s cubic-bezier(.34,1.56,.64,1)}.animate-photo-reveal{animation:photo-reveal .8s cubic-bezier(.22,1,.36,1) forwards}.animate-skeleton{animation:skeleton-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-placement-pulse{animation:pulse-ring 2s infinite}.glass{background:#ffffffd9;backdrop-filter:blur(25px) saturate(180%);-webkit-backdrop-filter:blur(25px) saturate(180%);border:1px solid rgba(255,255,255,.5)}.calendar-page-container{box-shadow:0 40px 100px -20px #0000001f}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.snap-container{display:flex;flex-direction:column;align-items:center;width:100%}.snap-page{flex-shrink:0;width:100%;display:flex;flex-direction:column;align-items:center;overflow:hidden;padding-bottom:2rem}.panning-viewport{width:100%;max-width:100vw;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;display:flex;justify-content:flex-start}@media (min-width: 1024px){.snap-page{padding-bottom:4rem}.panning-viewport{overflow-x:visible;width:auto;max-width:none;display:block}}.sticky-pan-indicator{position:sticky;top:6rem;z-index:40}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(70px + env(safe-area-inset-bottom));background:#ffffffe6;backdrop-filter:blur(20px);border-top:1px solid rgba(0,0,0,.05);display:flex;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom);z-index:100}
