.char-letter{display:inline-block;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;will-change:transform,opacity}.char-word{display:inline-block;white-space:nowrap}.tp-char-animation{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px}.char-letter.animate-ready{opacity:0;transform:translateX(100px) rotateX(90deg);transform-origin:center bottom}.char-letter.animate-complete{opacity:1;transform:translateX(0) rotateX(0deg);transform-origin:center bottom}@media (prefers-reduced-motion:reduce){.char-letter{opacity:1!important;transform:none!important;transition:none!important}.tp-char-animation{animation:none!important}}@media (prefers-contrast:high){.char-letter{text-shadow:1px 1px 2px rgba(0,0,0,.5)}}@media (prefers-color-scheme:dark){.char-letter{color:inherit}}@media (max-width:768px){.tp-char-animation{perspective:500px}.char-letter{will-change:auto}}@media print{.char-letter{opacity:1!important;transform:none!important}.tp-char-animation{animation:none!important}}.tp-char-animation.loading{opacity:.7}.tp-char-animation.loaded{opacity:1}.tp-char-animation.error{opacity:1;color:inherit}.tp-char-animation:focus-within .char-letter{outline:2px solid currentColor;outline-offset:2px}.gpu-accelerated{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;perspective:1000px}.no-animation{animation:none!important;transition:none!important}.char-animation-fade .char-letter{transform:translateY(20px)}.char-animation-slide .char-letter{transform:translateX(-100px)}.char-animation-scale .char-letter{transform:scale(.8)}.char-animation-rotate .char-letter{transform:rotateX(180deg)}@media (max-width:480px){.char-letter{transition-duration:.3s}}@media (min-width:1200px){.char-letter{transition-duration:.8s}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.animate-shimmer{animation:shimmer 2s infinite;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent)}@keyframes pulse-optimized{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse-optimized{animation:pulse-optimized 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin-optimized{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-spin-optimized{animation:spin-optimized 1s linear infinite}@keyframes ping-optimized{75%,to{transform:scale(2);opacity:0}}.animate-ping-optimized{animation:ping-optimized 1s cubic-bezier(0,0,.2,1) infinite}