.touch-target{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center}.touch-friendly{padding:.75rem;border-radius:.5rem;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.touch-friendly:active{transform:scale(.98);opacity:.8}.btn-touch{min-height:48px;padding:.75rem 1.5rem;font-weight:500;position:relative;overflow:hidden;border-radius:.5rem;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.btn-touch:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(255,255,255,.2) 0,transparent 70%);transform:scale(0);transition:transform .3s ease}.btn-touch:active:before{transform:scale(1)}.card-mobile{padding:.75rem;border-radius:.5rem;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:pointer;position:relative;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.card-mobile:active{transform:translateY(1px) scale(.99)}.card-mobile:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px}.swipeable{position:relative;touch-action:pan-x pan-y}.swipeable:after{content:"";position:absolute;top:50%;right:8px;width:4px;height:20px;background:linear-gradient(to bottom,hsl(var(--muted-foreground)/.3),hsl(var(--muted-foreground)/.1));border-radius:2px;transform:translateY(-50%);opacity:0;transition:opacity .2s ease}.swipeable:hover:after{opacity:1}.mobile-spacing{padding:1rem}.mobile-margin{margin:.5rem}.smooth-scroll{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.pull-to-refresh{position:relative;overflow:hidden}.pull-indicator{position:absolute;top:-40px;left:50%;transform:translateX(-50%);width:24px;height:24px;border:2px solid hsl(var(--primary));border-top:2px solid transparent;border-radius:50%;animation:spin 1s linear infinite;opacity:0;transition:all .3s ease}.pull-indicator.active{opacity:1;top:10px}.fab{position:fixed;bottom:24px;right:24px;z-index:1000;width:56px;height:56px;border-radius:50%;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:none;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1)}.fab:hover{transform:scale(1.1);box-shadow:0 6px 16px rgba(0,0,0,.2)}.fab:active{transform:scale(.95)}.safe-area-inset{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.safe-area-bottom{padding-bottom:max(1rem,env(safe-area-inset-bottom))}.safe-area-top{padding-top:max(1rem,env(safe-area-inset-top))}.mobile-nav{position:fixed;bottom:0;left:0;right:0;height:calc(60px + env(safe-area-inset-bottom));background:hsl(var(--background)/.95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid hsl(var(--border));display:flex;align-items:flex-start;justify-content:space-around;padding:8px 0 env(safe-area-inset-bottom);z-index:50}.mobile-nav-item{min-height:44px;min-width:60px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;color:hsl(var(--muted-foreground));font-size:.75rem;transition:color .2s ease;text-align:center}.mobile-nav-item.active{color:hsl(var(--primary))}.mobile-nav-item:hover{color:hsl(var(--foreground))}.mobile-header{position:sticky;top:0;z-index:40;height:calc(56px + env(safe-area-inset-top));background:hsl(var(--background)/.95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid hsl(var(--border));padding:0 1rem 8px}.mobile-header,.mobile-modal{display:flex;align-items:flex-end}.mobile-modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);justify-content:center;padding:0 1rem;opacity:0;animation:fadeIn .3s ease forwards}.mobile-modal-content{background:hsl(var(--background));border-radius:1rem 1rem 0 0;width:100%;max-width:600px;max-height:80vh;overflow:hidden;transform:translateY(100%);animation:slideUp .3s ease forwards;animation-delay:.1s}.mobile-form{padding:1rem;gap:1rem}.mobile-form,.mobile-form-group{display:flex;flex-direction:column}.mobile-form-group{gap:.5rem}.mobile-input{padding:.75rem;border-radius:.5rem;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:48px;font-size:16px;border:1px solid hsl(var(--border));background:hsl(var(--background));color:hsl(var(--foreground))}.mobile-input:focus{outline:none;border-color:hsl(var(--primary));box-shadow:0 0 0 2px hsl(var(--primary)/.2)}.mobile-card-list{display:flex;flex-direction:column;gap:.5rem;padding:1rem}.mobile-card-item{padding:1rem;border-radius:.5rem;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:pointer;position:relative;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid hsl(var(--border));background:hsl(var(--card))}.mobile-chart{width:100%;height:200px;padding:.5rem;overflow:hidden}@media (min-width:640px){.mobile-chart{height:300px}}.gesture-feedback{position:absolute;width:8px;height:8px;background:hsl(var(--primary));border-radius:50%;pointer-events:none;opacity:0;transform:scale(0);animation:ripple .6s ease-out}@keyframes ripple{to{transform:scale(4);opacity:0}}@media (max-width:640px){.responsive-stack{display:flex!important;flex-direction:column!important;gap:1rem!important}.responsive-padding{padding:1rem!important}.mobile-hidden{display:none!important}.responsive-touch{min-height:48px!important;padding:.75rem!important}}@media (max-width:480px){.mobile-text-sm{font-size:.875rem!important}.mobile-text-xs{font-size:.75rem!important}.mobile-compact{margin:.25rem!important;padding:.5rem!important}}@media (prefers-reduced-motion:reduce){.btn-touch,.card-mobile,.touch-friendly{transition:none!important;animation:none!important}.pull-indicator{animation:none!important}}@media (prefers-contrast:high){.card-mobile{border-width:2px!important}.mobile-nav{border-top-width:2px!important}.mobile-header{border-bottom-width:2px!important}}.chart-container,.interactive-chart{transition:all .2s ease-in-out}.chart-container{position:relative;background:white;border-radius:.5rem;border:1px solid #e5e7eb}.chart-container:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);border-color:#d1d5db}.chart-header{justify-content:space-between;margin-bottom:1rem}.chart-header,.chart-header h3{display:flex;align-items:center}.chart-header h3{font-size:1.125rem;font-weight:600;color:#111827;gap:.5rem}.chart-header p{font-size:.875rem;color:#6b7280;margin-top:.25rem}.chart-controls{display:flex;align-items:center;gap:.5rem}.chart-controls button{padding:.5rem;border-radius:.25rem;border:none;background:transparent;cursor:pointer;transition:all .2s ease-in-out}.chart-controls button:hover{background:#f3f4f6}.chart-content{position:relative;width:100%;overflow:hidden}.chart-point{transition:all .2s ease-in-out;cursor:pointer}.chart-point:hover{r:6!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.chart-bar{transition:all .2s ease-in-out;cursor:pointer}.chart-bar:hover{opacity:.8!important;filter:brightness(1.1)}.chart-slice{transition:all .2s ease-in-out;cursor:pointer;transform-origin:center}.chart-slice:hover{opacity:.8!important;transform:scale(1.05);filter:brightness(1.1)}.chart-tooltip{position:fixed;z-index:1000;background:rgba(0,0,0,.9);color:white;padding:.5rem .75rem;border-radius:.375rem;font-size:.75rem;line-height:1.4;pointer-events:none;box-shadow:0 10px 15px -3px rgba(0,0,0,.1);max-width:200px;word-wrap:break-word}.chart-tooltip:before{content:"";position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(0,0,0,.9)}.chart-loading{display:flex;align-items:center;justify-content:center;background:#f9fafb;border-radius:.375rem}.chart-loading .animate-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.chart-error{justify-content:center;background:#fef2f2;border:1px solid #fecaca;border-radius:.375rem;color:#dc2626}.chart-error,.chart-footer{display:flex;align-items:center}.chart-footer{margin-top:.5rem;font-size:.75rem;color:#6b7280;justify-content:space-between}.chart-footer button{background:none;border:none;color:#3b82f6;cursor:pointer;text-decoration:none;font-size:inherit}.chart-footer button:hover{text-decoration:underline}@media (max-width:768px){.chart-container{padding:.75rem}.chart-header h3{font-size:1rem}.chart-header p{font-size:.8125rem}.chart-content{height:auto!important;min-height:200px}.chart-tooltip{font-size:.6875rem;padding:.375rem .5rem;max-width:150px}}@media (max-width:640px){.chart-header{flex-direction:column;align-items:flex-start;gap:.5rem}.chart-controls{align-self:flex-end}.chart-content{min-height:180px}}@media (hover:none){.chart-bar:hover,.chart-point:hover,.chart-slice:hover{opacity:1;transform:none;filter:none}.chart-point{r:6}}@media (prefers-contrast:high){.chart-container{border-width:2px;border-color:#000}.chart-tooltip{background:#000;border:1px solid #fff}}@media (prefers-reduced-motion:reduce){.chart-bar,.chart-container,.chart-point,.chart-slice,.interactive-chart{transition:none}.chart-loading .animate-spin{animation:none}}@media print{.chart-container{break-inside:avoid;border:1px solid #000;box-shadow:none}.chart-controls,.chart-footer{display:none}.interactive-chart{filter:grayscale(100%)}}@media (prefers-color-scheme:dark){.chart-container{background:#1f2937;border-color:#374151}.chart-container:hover{border-color:#4b5563;box-shadow:0 4px 6px -1px rgba(0,0,0,.3)}.chart-header h3{color:#f9fafb}.chart-header p{color:#9ca3af}.chart-loading{background:#111827;color:#e5e7eb}.chart-error{background:#1f1917;border-color:#451a03;color:#f87171}.chart-footer{color:#9ca3af}.chart-footer button{color:#60a5fa}.chart-controls button:hover{background:#374151}}.chart-mini{padding:.75rem}.chart-mini .chart-header h4{font-size:.875rem;font-weight:500;margin:0}.chart-mini .chart-content{margin-top:.5rem}.chart-mini .interactive-chart{width:100%;height:100%}.chart-grid-1{display:grid;grid-template-columns:1fr;gap:1.5rem}.chart-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.chart-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.chart-grid-4{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}@media (min-width:1024px){.chart-grid-4{grid-template-columns:repeat(4,1fr)}}@media (max-width:768px){.chart-grid-2,.chart-grid-3,.chart-grid-4{grid-template-columns:1fr;gap:1rem}}.chart-fade-in{animation:fadeIn .5s ease-in-out}.chart-slide-up{animation:slideUp .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.chart-container:focus-within{outline:2px solid #3b82f6;outline-offset:2px}.chart-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.chart-container *{will-change:auto}.chart-container:hover *{will-change:transform,opacity}.interactive-chart{contain:layout style paint}