.safe-area-inset-top{padding-top:env(safe-area-inset-top)}.safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-area-inset-left{padding-left:env(safe-area-inset-left)}.safe-area-inset-right{padding-right:env(safe-area-inset-right)}.safe-area-pb{padding-bottom:calc(env(safe-area-inset-bottom) + 2rem)}.touch-target{min-height:44px;min-width:44px}.touch-no-select{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.smooth-scroll{-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.no-tap-highlight{-webkit-tap-highlight-color:transparent}.touch-feedback:active{transform:scale(.95);transition:transform .1s ease}body,html{overflow-x:hidden;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}input[type=email],input[type=number],input[type=password],input[type=text],textarea{font-size:16px!important}.button-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(44px,1fr))}.swipe-hint{position:relative}.swipe-hint:after{content:"";position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);width:30px;height:3px;background:rgba(59,130,246,.3);border-radius:2px;animation:swipe-hint 2s infinite}@keyframes swipe-hint{0%,to{opacity:.3;transform:translateX(-50%) scaleX(.5)}50%{opacity:.8;transform:translateX(-50%) scaleX(1)}}.haptic-pulse{animation:haptic-pulse .15s ease-out}@keyframes haptic-pulse{0%{transform:scale(1)}50%{transform:scale(.98)}to{transform:scale(1)}}.pull-refresh{position:relative;padding-top:60px;margin-top:-60px;transition:margin-top .3s ease}.pull-refresh.pulling{margin-top:0}.pull-refresh-icon{position:absolute;top:20px;left:50%;transform:translateX(-50%);width:24px;height:24px;border:2px solid #3b82f6;border-top-color:transparent;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:translateX(-50%) rotate(1turn)}}.mobile-keyboard-up{padding-bottom:300px}.mobile-card{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:box-shadow .2s ease,transform .1s ease}.mobile-card:active{box-shadow:0 2px 4px -1px rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.06)}.native-scroll{scrollbar-width:none;-ms-overflow-style:none}.native-scroll::-webkit-scrollbar{display:none}.focus-ring:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.no-bounce{overscroll-behavior:none;-webkit-overflow-scrolling:touch}