@keyframes slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slide-up .3s cubic-bezier(.4,0,.2,1)}@keyframes slide-down{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-down{animation:slide-down .2s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in .2s ease-out forwards}@keyframes scale-in{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.animate-scale-in{animation:scale-in .2s cubic-bezier(.34,1.56,.64,1)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-bounce{animation:bounce 1s ease-in-out}.mobile-drawer{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--memorial-900,#1a1a1a);border-top-left-radius:1.5rem;border-top-right-radius:1.5rem;box-shadow:0 -10px 40px rgba(0,0,0,.3);transition:transform .3s ease-out,height .3s ease-out}.drawer-handle{width:3rem;height:.375rem;background:var(--memorial-600,#4a4a4a);border-radius:9999px;margin:.5rem auto;cursor:grab}.drawer-handle:active{cursor:grabbing}.drawer-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);z-index:40;transition:opacity .3s ease-out}.fab-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:30}.fab-button{width:3.5rem;height:3.5rem;border-radius:9999px;box-shadow:0 10px 25px rgba(0,0,0,.3);transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center}.fab-button:hover{transform:scale(1.1);box-shadow:0 15px 30px rgba(0,0,0,.4)}.fab-button:active{transform:scale(.95)}.fab-actions{position:absolute;bottom:5rem;right:0;display:flex;flex-direction:column-reverse;gap:.75rem}.fab-action{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:9999px;box-shadow:0 4px 12px rgba(0,0,0,.2);transition:all .2s ease-out;white-space:nowrap}.fab-action:hover{transform:scale(1.05);box-shadow:0 6px 16px rgba(0,0,0,.3)}@media (max-width:768px){.touchable,a,button{min-height:44px;min-width:44px}.icon-button{padding:.75rem}}.dragging,.dragging *{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.touch-scroll{-webkit-overflow-scrolling:touch;overflow-y:auto}@media (max-width:768px){.editor-toolbar{padding:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.toolbar-button{padding:.5rem;font-size:.875rem}.toolbar-separator{margin:0 .25rem}}@media (min-width:769px){.editor-toolbar{padding:.75rem 1rem}.toolbar-button{padding:.5rem 1rem}}.canvas-container{touch-action:none;position:relative;overflow:hidden}.canvas-container,.canvas-container canvas{background:transparent!important}.pinch-indicator{position:absolute;top:1rem;right:1rem;background:rgba(0,0,0,.7);color:#fff;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;pointer-events:none;z-index:10}.safe-area-top{padding-top:env(safe-area-inset-top,0)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0)}.safe-area-left{padding-left:env(safe-area-inset-left,0)}.safe-area-right{padding-right:env(safe-area-inset-right,0)}.safe-area{padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}.snap-indicators{display:flex;gap:.25rem;justify-content:center;padding:.5rem 0}.snap-indicator{width:.375rem;height:.375rem;border-radius:9999px;background:var(--memorial-600,#4a4a4a);transition:all .2s ease-out;cursor:pointer}.snap-indicator.active{width:1.5rem;background:#fff}.snap-indicator:hover{background:var(--memorial-500,#5a5a5a)}.skeleton{background:linear-gradient(90deg,var(--memorial-800,#2a2a2a) 0,var(--memorial-700,#3a3a3a) 50%,var(--memorial-800,#2a2a2a) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{border:2px solid hsla(0,0%,100%,.3);border-top-color:#fff;border-radius:9999px;animation:spin .8s linear infinite}.tooltip{position:absolute;background:rgba(0,0,0,.9);color:#fff;padding:.5rem .75rem;border-radius:.375rem;font-size:.75rem;white-space:nowrap;pointer-events:none;z-index:9999;opacity:0;transition:opacity .2s ease-out}.tooltip.show{opacity:1}.tooltip:after{content:"";position:absolute;border:4px solid transparent}.tooltip.top:after{bottom:-8px;left:50%;transform:translateX(-50%);border-top-color:rgba(0,0,0,.9)}.tooltip.bottom:after{top:-8px;left:50%;transform:translateX(-50%);border-bottom-color:rgba(0,0,0,.9)}.focus-visible:focus{outline:2px solid var(--memorial-500,#5a5a5a);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (prefers-contrast:high){.touchable,button{border:2px solid}}@media (max-width:768px){.hide-mobile{display:none!important}}@media (min-width:769px){.hide-desktop{display:none!important}}.no-scroll{overflow:hidden}.backdrop-blur{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.glass{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}