:root{--vh:1vh;--safe-area-inset-top:env(safe-area-inset-top,0px);--safe-area-inset-right:env(safe-area-inset-right,0px);--safe-area-inset-bottom:env(safe-area-inset-bottom,0px);--safe-area-inset-left:env(safe-area-inset-left,0px);--pwa-status-bar-height:44px;--pwa-safe-area-top:max(var(--safe-area-inset-top),var(--pwa-status-bar-height))}.min-h-screen{min-height:100dvh;min-height:calc(var(--vh,1vh)*100)}.h-screen{height:100dvh;height:calc(var(--vh,1vh)*100)}.supports-safe-area{padding-top:var(--safe-area-inset-top);padding-right:var(--safe-area-inset-right);padding-bottom:var(--safe-area-inset-bottom);padding-left:var(--safe-area-inset-left)}.standalone-mode{--header-offset:0px}.standalone-mode .fixed.top-0{top:var(--safe-area-inset-top)}#bottom-nav .nav-inner{padding-top:.5rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));padding-left:.5rem;padding-right:.5rem}@media (display-mode:standalone){#bottom-nav{bottom:calc(.25rem + env(safe-area-inset-bottom)*.5)!important}#bottom-nav .nav-inner{padding:.4rem .5rem!important}#bottom-nav>div{padding:0!important}}.standalone-mode #bottom-nav{bottom:calc(.25rem + env(safe-area-inset-bottom)*.5)!important}.standalone-mode #bottom-nav .nav-inner{padding:.4rem .5rem!important}.standalone-mode #bottom-nav>div{padding:0!important}html,body{margin:0;padding:0;overflow-x:hidden}.standalone-mode body{margin-bottom:0!important;padding-bottom:0!important}.native-scroll{-webkit-overflow-scrolling:touch;scroll-behavior:smooth;overscroll-behavior:contain}.no-body-scroll{width:100%;height:100dvh;height:calc(var(--vh,1vh)*100);position:fixed;overflow:hidden}.main-scroll-container{height:100dvh;height:calc(var(--vh,1vh)*100);-webkit-overflow-scrolling:touch;scroll-behavior:smooth;overscroll-behavior:contain;padding-bottom:8rem;overflow:hidden auto}@media (display-mode:standalone){.main-scroll-container{padding-bottom:calc(3.5rem + env(safe-area-inset-bottom))}}.standalone-mode .main-scroll-container{padding-bottom:calc(3.5rem + env(safe-area-inset-bottom))}.chart-container{contain:layout style;will-change:transform}.standalone-mode .chart-container{min-height:calc(40vh - var(--safe-area-inset-top))}.card-grid{gap:12px;padding:16px}.standalone-mode .card-grid{gap:8px;padding:12px}input:focus,textarea:focus,select:focus{font-size:16px;transform:translateZ(0)}.prevent-pull-refresh{overscroll-behavior-y:contain}.loading-skeleton{background:linear-gradient(90deg,#ffffff1a 0%,#fff3 50%,#ffffff1a 100%) 0 0/200% 100%;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{background-position:200% 0}50%{background-position:-200% 0}}.install-banner{bottom:calc(var(--safe-area-inset-bottom) + 100px);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;z-index:1000;background:#3b82f6f2;border-radius:12px;max-width:calc(448px - 1.5rem);margin:0 auto;padding:16px;animation:.3s ease-out slideUp;display:none;position:fixed;left:12px;right:12px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.standalone-mode .install-banner{display:none!important}@media (display-mode:standalone){.install-banner{display:none!important}}@media (max-width:640px){.install-banner{bottom:calc(var(--safe-area-inset-bottom) + 90px)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.standalone-mode .container{padding-left:max(16px,var(--safe-area-inset-left));padding-right:max(16px,var(--safe-area-inset-right))}.standalone-mode .main-scroll-container{height:calc(100dvh - 90px);height:calc(var(--vh,1vh)*100 - 90px)}}@media (orientation:landscape) and (max-height:500px){.standalone-mode .mobile-bottom-nav{padding-top:4px;padding-bottom:calc(var(--safe-area-inset-bottom) + 4px)}.standalone-mode .main-scroll-container{height:calc(100dvh - 60px);height:calc(var(--vh,1vh)*100 - 60px);padding-bottom:calc(var(--safe-area-inset-bottom) + 10px)}}@media (prefers-color-scheme:dark){.install-banner{background:#111827f2;border:1px solid #4b55634d}}@media (prefers-contrast:high){.mobile-bottom-nav{background:#000000f2;border-top:2px solid}}@media (prefers-reduced-motion:reduce){.native-scroll{scroll-behavior:auto}.loading-skeleton{background:#ffffff1a;animation:none}.install-banner{animation:none}}
