:root{--bg: #FFF6EC;--card: #FFFDF9;--card-shadow: 0 6px 20px rgba(200, 160, 110, .14), 0 2px 6px rgba(200, 160, 110, .08);--primary: #E8956B;--primary-deep: #D97E4A;--text: #5B4632;--text-soft: #A08B72;--line: #F3E7D8;--expense: #E8735A;--income: #5FA97C;--danger: #E85D5D;--radius: 20px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Segoe UI,Microsoft YaHei,sans-serif;font-variant-numeric:tabular-nums;min-height:100dvh}#root{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;position:relative}.app{display:flex;flex-direction:column;min-height:100dvh}.app-header{display:flex;align-items:baseline;gap:10px;padding:calc(14px + env(safe-area-inset-top)) 20px 10px}.app-logo{font-size:20px;font-weight:800;letter-spacing:1px}.app-slogan{font-size:12px;color:var(--text-soft)}.app-main{flex:1;padding:4px 16px calc(96px + env(safe-area-inset-bottom));overflow-y:auto}.page{display:flex;flex-direction:column;gap:14px}.page-title{font-size:17px;margin:4px 0 0}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:16px;display:flex;flex-direction:column;gap:10px}.card-label{font-size:13px;color:var(--text-soft);font-weight:600}.empty-hint{font-size:12.5px;color:var(--text-soft);margin:0;line-height:1.6}.hero{display:flex;justify-content:center;padding:6px 0 0}.today-card{align-items:center;padding:18px 16px}.today-amount{font-size:38px;font-weight:800;letter-spacing:.5px}.today-meta{font-size:12px;color:var(--text-soft)}.budget-head{display:flex;justify-content:space-between;align-items:center}.remain{font-size:13px;color:var(--text-soft)}.remain b{color:var(--primary-deep);font-size:15px}.remain.over b{color:var(--danger)}.progress-track{height:14px;border-radius:999px;background:var(--line);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#F2B04A,var(--primary));transition:width .5s cubic-bezier(.22,1,.36,1)}.progress-fill.over{background:linear-gradient(90deg,#F08A6E,var(--danger))}.budget-foot{display:flex;justify-content:space-between;font-size:12px;color:var(--text-soft)}.link-btn{border:none;background:none;color:var(--primary-deep);font-size:13px;font-weight:600;cursor:pointer;padding:0}.shiba-wrap{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.shiba{filter:drop-shadow(0 10px 18px rgba(200,160,110,.35));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.shiba-wrap:active .shiba{transform:scale(.94) rotate(-2deg)}.shiba-bubble{position:absolute;top:-10px;left:50%;transform:translate(-50%);background:var(--card);border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:700;white-space:nowrap;box-shadow:var(--card-shadow);z-index:2;animation:floaty 3s ease-in-out infinite}.shiba-bubble.mood-hustle{color:var(--danger)}.shiba-bubble.mood-broke{color:#7a8ba8}.shiba-quote{position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:max-content;max-width:240px;background:#5b4632e0;color:#fff6ec;font-size:12px;padding:8px 12px;border-radius:12px;z-index:3;animation:pop-in .3s cubic-bezier(.34,1.56,.64,1);text-align:center;line-height:1.5}.shiba-heart{position:absolute;top:30%;font-size:18px;animation:heart-up 1.4s ease-out forwards;pointer-events:none;z-index:3}@keyframes floaty{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-5px)}}@keyframes pop-in{0%{opacity:0;transform:translate(-50%) scale(.8)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes heart-up{0%{opacity:0;transform:translateY(0) scale(.5) rotate(0)}20%{opacity:1}to{opacity:0;transform:translateY(-90px) translate(var(--drift, 0)) scale(1.2) rotate(20deg)}}.head-bob{animation:head-bob 3.5s ease-in-out infinite;transform-origin:100px 100px}@keyframes head-bob{0%,to{transform:translateY(0) rotate(0)}30%{transform:translateY(1.5px) rotate(.6deg)}60%{transform:translateY(-1px) rotate(-.6deg)}}.tail-wag{animation:wag .6s ease-in-out infinite;transform-origin:148px 118px}@keyframes wag{0%,to{transform:rotate(0)}50%{transform:rotate(-12deg)}}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:#fffdf9f0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);display:grid;grid-template-columns:1fr 1fr auto 1fr 1fr;align-items:end;padding:6px 8px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line);z-index:10}.tab-btn{border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--text-soft);font-size:11px;padding:6px 4px;cursor:pointer}.tab-btn .tab-icon{font-size:22px;transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.tab-btn.on{color:var(--primary-deep);font-weight:700}.tab-btn.on .tab-icon{transform:translateY(-3px) scale(1.12)}.add-btn{border:none;background:linear-gradient(135deg,#F2B04A,var(--primary-deep));color:#fff;font-size:11px;font-weight:700;border-radius:22px;padding:8px 14px 7px;display:flex;flex-direction:column;align-items:center;gap:3px;box-shadow:0 8px 18px #d97e4a73;cursor:pointer;transform:translateY(-14px);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.add-btn:active{transform:translateY(-10px) scale(.96)}.bone{display:flex;align-items:center;filter:drop-shadow(0 1px 1px rgba(0,0,0,.15))}.bone i{background:#fff;display:block}.bone-l,.bone-r{width:9px;height:9px;border-radius:50%;position:relative}.bone-l:before,.bone-l:after,.bone-r:before,.bone-r:after{content:"";position:absolute;width:7px;height:7px;background:#fff;border-radius:50%}.bone-l:before{top:-4px;left:-1px}.bone-l:after{bottom:-4px;left:-1px}.bone-r:before{top:-4px;right:-1px}.bone-r:after{bottom:-4px;right:-1px}.bone-bar{width:22px;height:6px;border-radius:3px;margin:0 -2px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#5b463266;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:50;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .2s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:480px;background:var(--card);border-radius:26px 26px 0 0;padding:18px 18px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;animation:slide-up .3s cubic-bezier(.22,1,.36,1);max-height:92dvh;overflow-y:auto}@keyframes slide-up{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.seg{display:flex;background:var(--line);border-radius:12px;padding:3px;gap:3px}.seg button{flex:1;border:none;border-radius:10px;padding:8px 0;font-size:14px;font-weight:600;background:none;color:var(--text-soft);cursor:pointer;transition:all .2s}.seg button.on{background:var(--card);color:var(--text);box-shadow:0 2px 6px #c8a06e33}.seg button.on.expense{color:var(--expense)}.seg button.on.income{color:var(--income)}.seg.small button{padding:6px 10px;font-size:13px}.amount-display{display:flex;align-items:baseline;justify-content:center;gap:6px;padding:6px 0}.currency{font-size:22px;color:var(--text-soft);font-weight:700}.currency.big{font-size:26px}.amount-num{font-size:44px;font-weight:800;min-width:120px;text-align:right;letter-spacing:1px}.cat-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.cat-row::-webkit-scrollbar{display:none}.cat-chip{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:3px;border:2px solid var(--line);background:var(--card);border-radius:14px;padding:8px 12px;font-size:12px;color:var(--text-soft);cursor:pointer;transition:all .2s;min-width:60px}.cat-chip .cat-icon{font-size:22px}.cat-chip.on{border-color:var(--cat-color, var(--primary));color:var(--text);background:color-mix(in srgb,var(--cat-color, var(--primary)) 12%,white);font-weight:700}.sub-row{display:flex;flex-wrap:wrap;gap:8px}.sub-chip{border:1.5px solid var(--line);background:none;border-radius:999px;padding:6px 14px;font-size:13px;color:var(--text-soft);cursor:pointer;transition:all .2s}.sub-chip.on{border-color:var(--cat-color, var(--primary));color:var(--text);background:color-mix(in srgb,var(--cat-color, var(--primary)) 14%,white);font-weight:700}.meta-row{display:flex;gap:8px}.note-input,.date-input{border:1.5px solid var(--line);border-radius:12px;padding:9px 12px;font-size:14px;color:var(--text);background:var(--bg);outline:none}.note-input:focus,.date-input:focus{border-color:var(--primary)}.note-input{flex:1}.date-input{width:150px}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.key{border:none;background:var(--bg);border-radius:14px;padding:13px 0;font-size:21px;font-weight:700;color:var(--text);cursor:pointer;box-shadow:0 2px 0 var(--line);transition:transform .08s}.key:active{transform:translateY(1px);background:var(--line)}.save-btn{border:none;border-radius:16px;padding:14px 0;font-size:16px;font-weight:800;color:#fff;background:linear-gradient(135deg,#F2B04A,var(--primary-deep));box-shadow:0 6px 16px #d97e4a66;cursor:pointer}.save-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.edit-actions{display:flex;gap:10px}.edit-actions .save-btn{flex:1.6}.del-btn{flex:1;border:1.5px solid var(--danger);background:none;color:var(--danger);border-radius:16px;font-size:14.5px;font-weight:700;cursor:pointer;padding:14px 0}.del-btn.armed{background:var(--danger);color:#fff;animation:shake .35s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:10px}.month-select,.cat-select{border:1.5px solid var(--line);border-radius:12px;padding:8px 10px;font-size:14px;color:var(--text);background:var(--card);outline:none;cursor:pointer}.cat-select{flex:1;max-width:190px}.month-total{font-size:12.5px;color:var(--text-soft);white-space:nowrap}.month-total b{font-size:14px}.sep{margin:0 4px}.day-group{background:var(--card);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:12px 16px;display:flex;flex-direction:column;gap:4px}.day-head{display:flex;justify-content:space-between;font-size:13px;color:var(--text-soft);font-weight:600;padding-bottom:6px;border-bottom:1px dashed var(--line)}.day-sum{font-size:12px}.tx-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.tx-item{display:flex;align-items:center;gap:12px;padding:10px 0;cursor:pointer;position:relative}.tx-item+.tx-item{border-top:1px solid var(--line)}.tx-icon{width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.tx-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.tx-cat{font-size:14.5px;font-weight:600}.tx-sub{font-style:normal;font-size:12px;color:var(--text-soft);font-weight:400}.tx-note{font-size:12px;color:var(--text-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-amount{font-size:16px;font-weight:800}.tx-amount.expense{color:var(--text)}.tx-amount.income{color:var(--income)}.tx-del{border:none;background:none;color:#d8c7b2;font-size:14px;cursor:pointer;padding:6px;visibility:hidden}.tx-item:hover .tx-del{visibility:visible}.tx-del:hover{color:var(--danger)}.expense-text{color:var(--expense)}.income-text{color:var(--income)}.over{color:var(--danger)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:40px 20px;color:var(--text-soft);font-size:14px}.empty-state.slim{padding:20px}.empty-emoji{font-size:40px}.dialog{background:var(--card);border-radius:22px;padding:24px;width:min(320px,calc(100vw - 60px));margin:auto;display:flex;flex-direction:column;gap:8px;animation:pop-in-center .25s cubic-bezier(.34,1.56,.64,1)}@keyframes pop-in-center{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.overlay:not(:has(.sheet)){align-items:center}.dialog-text{margin:0;font-size:16px;font-weight:700;text-align:center}.dialog-sub{margin:0 0 8px;font-size:13px;color:var(--text-soft);text-align:center}.dialog-btns{display:flex;gap:10px}.dialog-btns button{flex:1;border:none;border-radius:14px;padding:11px 0;font-size:14.5px;font-weight:700;cursor:pointer}.btn-ghost{background:var(--line);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-primary{background:var(--primary-deep);color:#fff}.overview-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.card.stat{align-items:center;padding:14px 8px;gap:4px}.stat-num{font-size:16px;font-weight:800}.week-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.week-item{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-radius:14px;background:var(--bg)}.week-item.now{background:color-mix(in srgb,var(--primary) 16%,white);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--primary) 45%,white)}.week-item.future{opacity:.5}.week-info{display:flex;flex-direction:column;gap:1px}.week-label{font-size:13.5px;font-weight:700}.now-tag{font-style:normal;font-size:10.5px;color:var(--primary-deep);background:#fff;border-radius:999px;padding:1.5px 8px;margin-left:6px;font-weight:700}.week-range{font-size:11px;color:var(--text-soft)}.week-right{display:flex;align-items:baseline;gap:8px}.week-spent{font-size:14px;font-weight:800}.week-count{font-size:11px;color:var(--text-soft)}.week-total{font-size:12px;color:var(--text-soft)}.donut-wrap{display:flex;align-items:center;gap:14px}.donut-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;flex:1;min-width:0}.donut-legend li{display:flex;align-items:center;gap:7px;font-size:13px}.donut-legend .dot,.trend-legend .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.donut-legend .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend .val{color:var(--text-soft);font-size:12px}.top-subs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}.top-subs li{display:flex;align-items:center;gap:8px;font-size:13px}.top-subs .rank{width:18px;height:18px;border-radius:50%;background:var(--line);color:var(--text-soft);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.top-subs li:first-child .rank{background:#f2b04a;color:#fff}.top-subs .name{width:118px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}.top-subs .bar-track{flex:1}.top-subs .val{font-weight:700;flex-shrink:0}.budget-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}.budget-bar-item{display:flex;flex-direction:column;gap:5px}.bar-head{display:flex;justify-content:space-between;font-size:13px}.bar-name{font-weight:600}.bar-nums{color:var(--text-soft);font-size:12px}.bar-nums.over{color:var(--danger);font-weight:700}.bar-track{height:10px;border-radius:999px;background:var(--line);overflow:hidden}.bar-track.slim{height:7px}.bar-fill{height:100%;border-radius:999px;transition:width .6s cubic-bezier(.22,1,.36,1)}.trend-wrap{display:flex;flex-direction:column;gap:6px}.trend-legend{display:flex;gap:16px;justify-content:center;font-size:12px;color:var(--text-soft)}.trend-legend span{display:flex;align-items:center;gap:5px}.total-input-row{display:flex;align-items:baseline;gap:6px;border-bottom:2px solid var(--line);padding-bottom:6px}.total-input{border:none;background:none;font-size:34px;font-weight:800;color:var(--text);width:100%;outline:none}.budget-edit-list,.sub-manage-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.budget-edit-item{display:flex;justify-content:space-between;align-items:center;padding:10px 0;gap:10px}.budget-edit-item+.budget-edit-item,.sub-manage-item+.sub-manage-item{border-top:1px solid var(--line)}.be-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}.over-tag{font-style:normal;font-size:10.5px;color:#fff;background:var(--danger);padding:1.5px 7px;border-radius:999px;font-weight:700}.be-right{display:flex;align-items:center;gap:10px}.be-spent{font-size:11.5px;color:var(--text-soft);white-space:nowrap}.be-input-wrap{display:flex;align-items:baseline;gap:3px;border:1.5px solid var(--line);border-radius:10px;padding:5px 10px;font-size:13px;color:var(--text-soft)}.be-input-wrap input{border:none;outline:none;background:none;font-size:15px;font-weight:700;color:var(--text);width:72px;text-align:right}.be-input-wrap:focus-within{border-color:var(--primary)}.add-cat-form{display:flex;flex-direction:column;gap:8px}.add-cat-form input:not([type=color]){border:1.5px solid var(--line);border-radius:12px;padding:9px 12px;font-size:14px;outline:none;color:var(--text);background:var(--bg)}.add-cat-form input:focus{border-color:var(--primary)}.add-cat-row{display:flex;gap:8px;align-items:center}.add-cat-row .short{width:90px}.add-cat-row input[type=color]{width:44px;height:38px;border:1.5px solid var(--line);border-radius:10px;background:none;padding:2px;cursor:pointer}.add-cat-row .btn-primary{border:none;border-radius:12px;padding:10px 18px;font-size:14px;cursor:pointer;margin-left:auto}.sub-manage-item{padding:10px 0;display:flex;flex-direction:column;gap:7px}.sm-name{font-size:13.5px;font-weight:600}.sm-subs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sub-tag{font-size:12px;background:var(--bg);border-radius:999px;padding:4px 11px;color:var(--text-soft)}.sub-add-input{border:1.5px dashed var(--line);border-radius:999px;padding:3.5px 11px;font-size:12px;width:72px;outline:none;color:var(--text-soft);background:none}.sub-add-input:focus{border-color:var(--primary);color:var(--text)}.data-btns{display:flex;gap:8px;flex-wrap:wrap}.data-btns .btn-ghost{border-radius:12px;padding:9px 14px;font-size:13px;cursor:pointer}.import-area{display:flex;flex-direction:column;gap:6px;font-size:13px}.warn-text{color:var(--danger);font-size:12px;margin:0}.import-msg{font-size:13px;color:var(--income);font-weight:600;margin:0}
