.touch-target{min-height:44px;min-width:44px}.touch-target-lg{min-height:48px;min-width:48px}.safe-area-top{padding-top:env(safe-area-inset-top)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-area-left{padding-left:env(safe-area-inset-left)}.safe-area-right{padding-right:env(safe-area-inset-right)}.safe-area-all{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}@media (max-width:640px){.mobile-h1{font-size:1.875rem;line-height:2.25rem;font-weight:800}.mobile-h2{font-size:1.5rem;line-height:2rem;font-weight:700}.mobile-h3{font-size:1.25rem;line-height:1.75rem;font-weight:600}.mobile-body{font-size:.9375rem;line-height:1.5rem}.mobile-small{font-size:.8125rem;line-height:1.25rem}}.no-scroll-x{overflow-x:hidden;max-width:100vw}.mobile-stack{display:flex;flex-direction:column;gap:1rem}@media (min-width:768px){.mobile-stack{flex-direction:row}}.mobile-card{padding:1rem;border-radius:.75rem}@media (min-width:640px){.mobile-card{padding:1.5rem;border-radius:1rem}}@media (min-width:1024px){.mobile-card{padding:2rem;border-radius:1.5rem}}.mobile-input{font-size:16px!important;min-height:44px;padding:.75rem 1rem}.mobile-input:focus{outline:none;ring:2px solid currentColor}.bottom-sheet{position:fixed;bottom:0;left:0;right:0;max-height:90vh;background:#fff;border-top-left-radius:1.5rem;border-top-right-radius:1.5rem;box-shadow:0 -4px 20px rgba(0,0,0,.1);transform:translateY(100%);transition:transform .3s ease-out;z-index:1000;overflow-y:auto;-webkit-overflow-scrolling:touch}.bottom-sheet.open{transform:translateY(0)}.bottom-sheet-handle{width:40px;height:4px;background:#ccc;border-radius:2px;margin:12px auto 8px}.mobile-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #e5e7eb;padding-bottom:env(safe-area-inset-bottom);z-index:50}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:.5rem;min-height:56px;color:#6b7280;text-decoration:none;transition:color .2s}.mobile-nav-item.active{color:#3b82f6}.mobile-nav-item:active{background:#f3f4f6}.swipeable{touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pull-to-refresh{position:absolute;top:-60px;left:50%;transform:translateX(-50%);width:40px;height:40px;transition:top .3s}.pull-to-refresh.active{top:10px}@media (max-width:640px){.mobile-table{display:block}.mobile-table thead{display:none}.mobile-table tbody,.mobile-table tr{display:block}.mobile-table tr{margin-bottom:1rem;border:1px solid #e5e7eb;border-radius:.5rem;padding:.75rem}.mobile-table td{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #f3f4f6}.mobile-table td:last-child{border-bottom:none}.mobile-table td:before{content:attr(data-label);font-weight:600;margin-right:1rem}}.mobile-header-sticky{position:sticky;top:0;z-index:40;background:hsla(0,0%,100%,.95);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.mobile-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width:640px){.mobile-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.mobile-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem}}.no-select-touch{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}@media (max-width:640px){.mobile-px{padding-left:1rem;padding-right:1rem}.mobile-py{padding-top:1rem;padding-bottom:1rem}.mobile-p{padding:1rem}.mobile-mt{margin-top:1rem}.mobile-mb{margin-bottom:1rem}.mobile-gap{gap:.75rem}}.mobile-skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:.5rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.mobile-fab{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));right:1rem;width:56px;height:56px;border-radius:50%;background:#3b82f6;color:#fff;border:none;box-shadow:0 4px 12px rgba(59,130,246,.4);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s,box-shadow .2s;z-index:40}.mobile-fab:active{transform:scale(.95);box-shadow:0 2px 8px rgba(59,130,246,.3)}.ios-switch{position:relative;display:inline-block;width:51px;height:31px}.ios-switch input{opacity:0;width:0;height:0}.ios-switch-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s;border-radius:31px}.ios-switch-slider:before{position:absolute;content:"";height:23px;width:23px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}.ios-switch input:checked+.ios-switch-slider{background-color:#3b82f6}.ios-switch input:checked+.ios-switch-slider:before{transform:translateX(20px)}.responsive-container{width:100%;padding-left:1rem;padding-right:1rem;margin-left:auto;margin-right:auto}@media (min-width:640px){.responsive-container{max-width:640px;padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:768px){.responsive-container{max-width:768px}}@media (min-width:1024px){.responsive-container{max-width:1024px}}@media (min-width:1280px){.responsive-container{max-width:1280px}}@media (prefers-color-scheme:dark){.bottom-sheet,.mobile-nav{background:#1f2937}.mobile-nav{border-top-color:#374151}.mobile-header-sticky{background:rgba(31,41,55,.95)}.mobile-skeleton{background:linear-gradient(90deg,#374151 25%,#4b5563 50%,#374151 75%);background-size:200% 100%}}.haptic-feedback{animation:haptic .1s ease-in-out}@keyframes haptic{0%{transform:scale(1)}50%{transform:scale(.95)}to{transform:scale(1)}}.mobile-img{max-width:100%;height:auto;display:block}.mobile-img-cover{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.button,[role=button],button{touch-action:manipulation}.mobile-toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));left:1rem;right:1rem;background:#1f2937;color:#fff;padding:1rem 1.25rem;border-radius:.75rem;box-shadow:0 4px 12px rgba(0,0,0,.2);z-index:9999;animation:slide-up .3s ease-out}@keyframes slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width:640px){a,button,input[type=checkbox],input[type=radio],select{min-height:44px;min-width:44px}}