@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fallback-image-container{position:relative;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.fallback-image-container:hover{transform:translateY(-2px);box-shadow:0 8px 25px -8px rgba(var(--color-primary-500-rgb),.3),0 0 0 1px rgba(var(--color-primary-500-rgb),.1)}.fallback-image-container .loading-skeleton{background:linear-gradient(90deg,rgba(var(--color-surface-300-rgb),.8) 25%,rgba(var(--color-surface-400-rgb),.6) 50%,rgba(var(--color-surface-300-rgb),.8) 75%);background-size:200% 100%;animation:shimmer 2s ease-in-out infinite}.progress-container{position:relative;overflow:hidden}.progress-container:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);animation:progressGlow 2s infinite}@keyframes progressGlow{0%{left:-100%}to{left:100%}}.fallback-image-container.error{border:1px solid rgba(var(--color-error-500-rgb),.2);background-color:rgba(var(--color-error-50-rgb),.05)}.error-icon{width:24px;height:24px;color:var(--color-error-500);animation:fadeIn .3s ease-out}.fallback-image-container.loaded{animation:fadeIn .5s ease-out}@media (max-width:640px){.fallback-image-container{border-radius:6px}.fallback-image-container:hover{transform:none;box-shadow:none}}@media (prefers-contrast:high){.fallback-image-container{border:2px solid var(--border-color)}.loading-skeleton{background:var(--color-surface-400)!important}}@media (prefers-reduced-motion:reduce){.fallback-image-container,.fallback-image-container img,.loading-skeleton,.progress-container:before{animation:none!important;transition:none!important}.fallback-image-container:hover{transform:none}}@media (prefers-color-scheme:dark){.fallback-image-container{background-color:var(--color-surface-100);border:1px solid rgba(var(--color-surface-300-rgb),.2)}.fallback-image-container:hover{box-shadow:0 8px 25px -8px rgba(var(--color-primary-400-rgb),.4),0 0 0 1px rgba(var(--color-primary-400-rgb),.15)}}@media print{.fallback-image-container{-moz-column-break-inside:avoid;break-inside:avoid;box-shadow:none!important;border:1px solid #ccc}.loading-overlay,.progress-container{display:none!important}}.fallback-image-container:focus-within{outline:2px solid var(--color-primary-500);outline-offset:2px}.progress-area::-webkit-scrollbar{width:4px}.progress-area::-webkit-scrollbar-track{background:var(--color-surface-200)}.progress-area::-webkit-scrollbar-thumb{background:var(--color-primary-400);border-radius:2px}.progress-area::-webkit-scrollbar-thumb:hover{background:var(--color-primary-500)}.loading-text{text-shadow:0 1px 2px rgba(0,0,0,.1);letter-spacing:.5px}.blur-placeholder{filter:blur(10px);transform:scale(1.1);transition:all .3s ease}.blur-placeholder.loaded{filter:blur(0);transform:scale(1)}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.aspect-photo{aspect-ratio:4/3}.size-xs{width:40px;height:40px}.size-sm{width:64px;height:64px}.size-md{width:96px;height:96px}.size-lg{width:128px;height:128px}.size-xl{width:192px;height:192px}.rounded-sm{border-radius:4px}.rounded-md{border-radius:8px}.rounded-lg{border-radius:12px}.rounded-xl{border-radius:16px}.rounded-full{border-radius:9999px}.shadow-soft{box-shadow:0 2px 8px -2px rgba(var(--color-surface-500-rgb),.1),0 4px 16px -4px rgba(var(--color-surface-500-rgb),.1)}.shadow-medium{box-shadow:0 4px 12px -2px rgba(var(--color-surface-500-rgb),.15),0 8px 24px -4px rgba(var(--color-surface-500-rgb),.1)}.shadow-strong{box-shadow:0 8px 24px -4px rgba(var(--color-surface-500-rgb),.2),0 16px 48px -8px rgba(var(--color-surface-500-rgb),.15)}