*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}@media all and (display-mode:standalone){body{-webkit-user-select:none;user-select:none}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border, #d9d9d9);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary, #8c8c8c)}:focus-visible{outline:2px solid var(--ant-color-primary, #1677ff);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.text-income{color:var(--color-income, #52c41a)}.text-expense{color:var(--color-expense, #ff4d4f)}.text-transfer{color:var(--color-transfer, #1677ff)}.bg-income{background-color:var(--color-income-bg, #f6ffed)}.bg-expense{background-color:var(--color-expense-bg, #fff2f0)}.bg-transfer{background-color:var(--color-transfer-bg, #e6f4ff)}input,textarea,select{font-size:16px}.bottom-nav-spacer{height:calc(56px + env(safe-area-inset-bottom))}.ptr-container{overflow-y:auto;-webkit-overflow-scrolling:touch}.swipeable-item{touch-action:pan-y}button,a,[role=button]{transition:opacity .15s ease,transform .1s ease}button:active,a:active,[role=button]:active{transform:scale(.97)}.ant-card-hoverable:active{transform:scale(.98)}.skip-link{position:absolute;top:-40px;left:0;background:var(--ant-color-primary, #1677ff);color:#fff;padding:8px 16px;z-index:9999;font-size:14px;transition:top .2s}.skip-link:focus{top:0}@media all and (display-mode:standalone){.ant-card,.ant-btn,nav,header{-webkit-user-select:none;user-select:none}}@media(pointer:coarse){button:not(.ant-switch):not(.ant-switch-inner),a,[role=button]:not([role=switch]),.ant-btn{min-height:44px;min-width:44px}}main{animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:.9}to{opacity:1}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200px 100%;animation:shimmer 1.5s infinite}
