:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f7f8fa;--border: #eceef1;--border-strong: #dfe3e8;--text-primary: #17181c;--text-secondary: #6b7280;--text-tertiary: #9ca3af;--accent: #0fa68f;--accent-strong: #0c8f7b;--accent-soft: rgba(15, 166, 143, .1);--expense: #e5484d;--expense-soft: rgba(229, 72, 77, .08);--income: #1d9e63;--income-soft: rgba(29, 158, 99, .1);--warning: #f5a623;--shadow-card: 0 1px 2px rgba(16, 24, 40, .04), 0 2px 8px rgba(16, 24, 40, .04);--shadow-pop: 0 12px 32px rgba(16, 24, 40, .18), 0 2px 8px rgba(16, 24, 40, .08);--radius-card: 16px;--radius-control: 12px;--radius-chip: 999px;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-2xl: 26px;--fs-3xl: 34px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--page-max: 480px;--content-max: 1080px;--tabbar-h: 60px;--ease: cubic-bezier(.2, 0, 0, 1);--dur: .18s}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text-primary);font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit;touch-action:manipulation}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--accent);text-decoration:none}.num{font-variant-numeric:tabular-nums}.no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.no-scrollbar::-webkit-scrollbar{display:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-shell{display:flex;min-height:100vh}.page-container{width:100%;max-width:var(--page-max);margin:0 auto;padding:16px 16px calc(var(--tabbar-h) + 28px)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.page-title{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.3px}.page-sub{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:2px}.section-title{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.2px}.card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.metric-scroll{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:0 16px 4px}.metric-card{flex:0 0 138px;scroll-snap-align:start;background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:14px 14px 12px;min-height:84px;display:flex;flex-direction:column;justify-content:space-between}.metric-label{font-size:var(--fs-sm);color:var(--text-secondary)}.metric-value{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-hint{font-size:var(--fs-xs);color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:none}.list-icon{width:38px;height:38px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700}.list-main{flex:1;min-width:0}.list-title{font-size:var(--fs-md);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-sub{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-amount{font-size:var(--fs-md);font-weight:600;flex-shrink:0}.cat-row{display:flex;align-items:center;gap:10px;padding:10px 0}.cat-dot{width:10px;height:10px;border-radius:999px;flex-shrink:0}.cat-name{flex:1;min-width:0;font-size:var(--fs-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-amt{font-size:var(--fs-sm);font-weight:600;flex-shrink:0}.cat-pct{font-size:var(--fs-xs);color:var(--text-tertiary);width:46px;text-align:right;flex-shrink:0}.cat-bar-wrap{flex-basis:100%;height:5px;border-radius:999px;background:var(--surface-2);overflow:hidden;margin-top:4px}.cat-bar{height:100%;border-radius:999px}.segmented{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px;gap:2px;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.segmented::-webkit-scrollbar{display:none}.segmented button{padding:8px 18px;border-radius:999px;font-size:var(--fs-sm);font-weight:400;color:var(--text-secondary);background:transparent;transition:all var(--dur) var(--ease);white-space:nowrap}.segmented button.on{background:#fff;font-weight:600;box-shadow:0 1px 3px #1018281a}.segmented.lg button{padding:10px 26px;font-size:var(--fs-md)}.mobile-tabbar{position:fixed;bottom:0;left:0;right:0;z-index:200;display:flex;background:#ffffffeb;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);max-width:640px;margin:0 auto}.mobile-tabbar .tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 0 9px;min-height:var(--tabbar-h);color:var(--text-tertiary);font-size:11px;font-weight:400;transition:color var(--dur) var(--ease)}.mobile-tabbar .tab.on{color:var(--accent);font-weight:600}.mobile-tabbar .tab-icon{width:26px;height:26px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-tabbar .tab-icon svg{width:24px;height:24px;display:block}@media(min-width:1024px){.mobile-tabbar{display:none}}.desktop-sidebar{display:none}@media(min-width:1024px){.desktop-sidebar{display:flex;flex-direction:column;width:232px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh}.page-container{max-width:var(--content-max);padding:28px 40px 80px}}@media(min-width:1366px){.page-container{max-width:1280px}}@media(min-width:1600px){.page-container{max-width:1440px}}@media(min-width:1920px){.page-container{max-width:1680px}}@media(min-width:768px)and (max-width:1023px){.page-container{max-width:720px;padding:24px 24px calc(var(--tabbar-h) + 32px)}.metric-card{flex-basis:160px}}.sheet-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#17181c73;z-index:300;animation:fade-in .2s var(--ease)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:301;background:var(--surface);border-radius:20px 20px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto;max-height:86vh;overflow-y:auto;animation:sheet-up .28s var(--ease);box-shadow:var(--shadow-pop)}.sheet-handle{width:40px;height:4px;border-radius:999px;background:var(--border-strong);margin:4px auto 16px}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.input{width:100%;padding:13px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface);font-size:var(--fs-md);transition:border-color var(--dur) var(--ease);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text-tertiary)}.amount-display{font-size:var(--fs-3xl);font-weight:700;letter-spacing:-1px;text-align:center;border-bottom:2px solid var(--border);padding-bottom:10px;margin-bottom:14px}.amount-display input{border:none;outline:none;background:transparent;font-size:inherit;font-weight:700;text-align:center;color:inherit;width:60%;min-width:140px}.amount-display .cur{font-size:var(--fs-2xl);margin-right:6px;font-weight:500}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:20px}.quick-grid button{padding:11px 0;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);font-size:var(--fs-md);font-weight:500;color:var(--text-secondary);transition:all var(--dur) var(--ease)}.quick-grid button:active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);transform:scale(.96)}.btn{border-radius:var(--radius-control);font-size:var(--fs-md);font-weight:600;padding:12px 20px;transition:filter var(--dur) var(--ease),transform var(--dur) var(--ease),opacity var(--dur) var(--ease)}.btn:hover{filter:brightness(.97)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-block{width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d3d7dc;border-radius:4px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{border-radius:8px;background:linear-gradient(90deg,#eceef0 25%,#f4f5f7 37%,#eceef0 63%);background-size:800px 100%;animation:shimmer 1.4s ease infinite}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.toast{position:fixed;bottom:calc(var(--tabbar-h) + 24px);left:50%;transform:translate(-50%);background:#17181ceb;color:#fff;padding:11px 22px;border-radius:999px;font-size:var(--fs-md);z-index:1000;animation:toast-in .18s var(--ease);max-width:88vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fade-up .24s var(--ease)}.acct-grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:768px){.acct-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.acct-grid{grid-template-columns:repeat(3,1fr)}}.date-note-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-bottom:18px}@media(min-width:1024px){.date-note-grid{grid-template-columns:220px 1fr}}.summary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}.stat-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:16px}.two-col{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:16px}.range-scroll{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.range-scroll::-webkit-scrollbar{display:none}.range-scroll .segmented{display:flex;width:100%}.range-scroll .segmented button{flex:1;padding:9px 6px;font-size:var(--fs-sm);white-space:nowrap}@media(min-width:768px){.summary-grid{grid-template-columns:repeat(4,1fr)}.two-col{grid-template-columns:1fr 1fr}}@media(min-width:1024px){.narrow-page{max-width:800px;margin:0 auto}}@media(min-width:1600px){.narrow-page{max-width:900px}}.dash-section{margin-bottom:16px}.dash-charts{display:grid;grid-template-columns:1fr;gap:16px}.dash-cats{display:flex;flex-direction:column}.hero-card{position:relative;background:linear-gradient(135deg,#0fa68f,#0b8f7b);border-radius:var(--radius-card);padding:20px 20px 16px;color:#fff;margin-bottom:12px;overflow:hidden}.hero-card:after{content:"";position:absolute;right:-40px;top:-50px;width:160px;height:160px;border-radius:50%;background:#ffffff14}.hero-card:before{content:"";position:absolute;right:30px;bottom:-60px;width:120px;height:120px;border-radius:50%;background:#ffffff0f}.hero-label{font-size:var(--fs-sm);color:#ffffffd1;margin-bottom:6px;position:relative;z-index:1}.hero-value{font-size:30px;font-weight:700;letter-spacing:-.8px;line-height:1.15;position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hero-sub{position:relative;z-index:1;margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.18);display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-sm);color:#ffffffd1}.hero-sub .num{color:#fff;font-weight:600}.pair-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.pair-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:14px 16px;min-height:76px;display:flex;flex-direction:column;justify-content:space-between}.pair-label{font-size:var(--fs-sm);color:var(--text-secondary)}.pair-value{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-overview{display:block}.desktop-metrics{display:none}@media(min-width:1024px){.mobile-overview{display:none}.desktop-metrics{display:flex}}@media(min-width:1024px){.metric-scroll{flex-wrap:wrap;overflow:visible;margin:0;padding:0;scroll-snap-type:none}.metric-card{flex:1 1 0}.dash-charts{grid-template-columns:1.6fr 1fr}.dash-cats{display:none!important}.dash-pie{display:block!important}}
