@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-30px)}70%{transform:translateY(-15px)}90%{transform:translateY(-4px)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes progress-shine{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes logoFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes logoSlideIn{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}@keyframes logoRotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes logoBounce{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-20px)}70%{transform:translateY(-10px)}90%{transform:translateY(-4px)}}@keyframes logoGlow{0%,to{text-shadow:0 0 5px rgba(255,107,53,.5)}50%{text-shadow:0 0 20px rgba(255,107,53,.8),0 0 30px rgba(255,107,53,.6)}}@keyframes buttonPress{0%{transform:scale(1)}50%{transform:scale(.95)}to{transform:scale(1)}}@keyframes buttonHover{0%{transform:translateY(0)}to{transform:translateY(-2px)}}@keyframes buttonRipple{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(4)}}@keyframes modalBackdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalContentSlideIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalContentSlideOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.9) translateY(-20px)}}@keyframes notificationSlideIn{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes notificationSlideOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes notificationBounce{0%,20%,53%,80%,to{transform:translateX(0)}40%,43%{transform:translateX(-10px)}70%{transform:translateX(-5px)}90%{transform:translateX(-2px)}}@keyframes loadingDots{0%,20%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}80%,to{opacity:1;transform:scale(1)}}@keyframes loadingWave{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.5)}}@keyframes loadingPulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes modelRotate{0%{transform:rotateY(0deg)}to{transform:rotateY(1turn)}}@keyframes modelFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes modelScale{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes modelHighlight{0%,to{box-shadow:0 0 0 0 rgba(255,107,53,.7)}50%{box-shadow:0 0 0 10px rgba(255,107,53,0)}}@keyframes pageTransitionIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pageTransitionOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}@keyframes sectionSlideIn{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}@keyframes sectionSlideOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes materialPreviewHover{0%{transform:scale(1) rotate(0deg)}to{transform:scale(1.1) rotate(5deg)}}@keyframes materialPreviewSelect{0%{box-shadow:0 0 0 0 rgba(255,107,53,.7);transform:scale(1)}50%{box-shadow:0 0 0 5px rgba(255,107,53,.3);transform:scale(1.05)}to{box-shadow:0 0 0 0 rgba(255,107,53,0);transform:scale(1)}}@keyframes progressBarFill{0%{width:0}to{width:100%}}@keyframes progressBarPulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes textTyping{0%{width:0}to{width:100%}}@keyframes textFadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes textFadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes iconRotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes iconBounce{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-10px)}70%{transform:translateY(-5px)}90%{transform:translateY(-2px)}}@keyframes iconPulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes backgroundGradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes backgroundParticles{0%{opacity:1;transform:translateY(0) rotate(0deg)}to{opacity:0;transform:translateY(-100vh) rotate(1turn)}}@keyframes scrollIndicator{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}@keyframes scrollReveal{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes focusRing{0%{box-shadow:0 0 0 0 rgba(255,107,53,.7)}70%{box-shadow:0 0 0 10px rgba(255,107,53,0)}to{box-shadow:0 0 0 0 rgba(255,107,53,0)}}@keyframes focusPulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes errorShake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}@keyframes errorFlash{0%,to{background-color:transparent}50%{background-color:rgba(220,53,69,.1)}}@keyframes successCheckmark{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@keyframes successGlow{0%,to{box-shadow:0 0 0 0 rgba(40,167,69,.7)}50%{box-shadow:0 0 0 10px rgba(40,167,69,0)}}@keyframes modelLoadProgress{0%{width:0}to{width:100%}}@keyframes modelLoadPulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes cameraMove{0%{transform:translateX(0) translateY(0) translateZ(0)}25%{transform:translateX(10px) translateY(-5px) translateZ(5px)}50%{transform:translateX(-5px) translateY(10px) translateZ(-5px)}75%{transform:translateX(-10px) translateY(-5px) translateZ(5px)}to{transform:translateX(0) translateY(0) translateZ(0)}}@keyframes cameraZoom{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes arScan{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}@keyframes arPulse{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes performanceWarning{0%,to{background-color:transparent}50%{background-color:rgba(255,193,7,.1)}}@keyframes performanceCritical{0%,to{background-color:transparent}50%{background-color:rgba(220,53,69,.1)}}@keyframes themeTransition{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes themeSlide{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes responsiveBreakpoint{0%{transform:scale(1)}50%{transform:scale(.95)}to{transform:scale(1)}}@keyframes responsiveSlide{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes accessibilityFocus{0%{outline:2px solid transparent}to{outline:2px solid var(--color-accent)}}@keyframes accessibilityAnnounce{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}