.pb-safe{padding-bottom:env(safe-area-inset-bottom)}.pt-safe{padding-top:env(safe-area-inset-top)}.px-safe{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}html{height:100%;height:-webkit-fill-available}body{min-height:100%;min-height:-webkit-fill-available}.mobile-touch-target{min-height:44px;min-width:44px}.mobile-no-select{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.mobile-scroll{-webkit-overflow-scrolling:touch;overflow-y:auto}.mobile-no-bounce{position:fixed;width:100%;height:100%;overflow:hidden}.mobile-hardware-accelerated{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-reduced-motion:reduce){.mobile-animation{animation:none!important;transition:none!important}}.voice-pulse{animation:voice-pulse 2s ease-in-out infinite}@keyframes voice-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}to{transform:scale(1);opacity:1}}.bottom-sheet-enter{transform:translateY(100%)}.bottom-sheet-enter-active{transform:translateY(0);transition:transform .3s cubic-bezier(.4,0,.2,1)}.bottom-sheet-exit{transform:translateY(0)}.bottom-sheet-exit-active{transform:translateY(100%);transition:transform .2s cubic-bezier(.4,0,.2,1)}.swipe-indicator{width:40px;height:4px;background-color:rgba(156,163,175,.5);border-radius:2px;margin:0 auto 8px}@media (max-width:768px){.scrollbar-thin::-webkit-scrollbar{width:4px}.scrollbar-thin::-webkit-scrollbar-track{background:transparent}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:rgba(107,114,128,.3);border-radius:2px}}.haptic-light{-webkit-tap-highlight-color:transparent}.voice-waveform{display:flex;align-items:center;justify-content:center;gap:2px}.voice-waveform-bar{width:3px;background-color:rgba(167,139,250,.6);border-radius:1.5px;animation:waveform 1s ease-in-out infinite}@keyframes waveform{0%,to{height:8px}50%{height:24px}}.lazy-image{background-color:rgba(31,41,55,.5);transition:opacity .3s ease-in-out}.lazy-image.loaded{opacity:1}.touch-ripple{position:relative;overflow:hidden}.touch-ripple:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.2);transform:translate(-50%,-50%);transition:width .3s,height .3s}.touch-ripple:active:after{width:100%;height:100%}