.sidebar-gradient-bg{background:linear-gradient(180deg,hsl(var(--background)) 0,hsl(var(--background)/.95) 100%)}.sidebar-item-hover{transition:all .2s cubic-bezier(.4,0,.2,1)}.sidebar-item-hover:hover{background:linear-gradient(90deg,hsl(var(--primary)/.1) 0,hsl(var(--primary)/.05) 100%);transform:translateX(2px)}.sidebar-item-active{background:linear-gradient(90deg,hsl(var(--primary)/.15) 0,hsl(var(--primary)/.05) 100%);color:hsl(var(--primary));font-weight:500}.sidebar-badge-pulse{animation:badge-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.7;transform:scale(1.05)}}.sidebar-section-divider{background:linear-gradient(90deg,transparent 0,hsl(var(--border)) 50%,transparent 100%);height:1px}.sidebar-scroll::-webkit-scrollbar{width:6px}.sidebar-scroll::-webkit-scrollbar-track{background:transparent}.sidebar-scroll::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground)/.2);border-radius:3px}.sidebar-scroll::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground)/.3)}.sidebar-mobile-overlay{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.sidebar-logo-glow{box-shadow:0 0 20px hsl(var(--primary)/.3)}.sidebar-active-indicator{box-shadow:0 0 10px hsl(var(--primary)/.5)}.touch-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.touch-target{min-height:44px;min-width:44px}@media (max-width:768px){*{-webkit-overflow-scrolling:touch}}*{-webkit-tap-highlight-color:transparent}.touch-feedback{transition:transform .1s ease-in-out}.touch-feedback:active{transform:scale(.97)}.swipeable{touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){input,select,textarea{font-size:16px!important}}.mobile-sticky-header{position:sticky;top:0;z-index:10;background:var(--background);border-bottom:1px solid var(--border)}.mobile-safe-bottom{padding-bottom:env(safe-area-inset-bottom)}.pull-to-refresh{overscroll-behavior:contain}.mobile-drawer-overlay{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.mobile-card-spacing{padding:1rem;margin:.5rem}}.scroll-snap-x{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.scroll-snap-x>*{scroll-snap-align:start}@media (max-width:768px){.mobile-table-responsive{display:block;overflow-x:auto;white-space:nowrap}}