@charset "UTF-8";
:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#343e34;background:#faf8f3;font-synthesis:none;--paper:#faf8f3;--green:#dceacb;--deep:#426348;--muted:#898b7e;--line:#edece4;--pink:#f5ded6;--orange:#ba765b;--radius:25px}
*{box-sizing:border-box}body{margin:0;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible{outline:3px solid #7c9f73;outline-offset:3px}button{color:inherit;border:0;background:none;min-height:44px}a{color:var(--deep)}input,select,textarea{width:100%;min-height:48px;font-size:16px;border:1px solid #e3e5d9;border-radius:14px;padding:12px;background:#fffefa;color:#343e34;outline:none}input:focus,select:focus,textarea:focus{border-color:#739468;box-shadow:0 0 0 3px #e4ecd9}textarea{resize:vertical;min-height:78px}input[type=checkbox]{width:22px;min-height:22px;accent-color:var(--deep)}form{margin:0}label{display:grid;gap:8px;font-size:13px;font-weight:600;color:#66705f;margin:16px 0}h1,h2,h3,p{margin:0}h1{font-size:24px;letter-spacing:.4px}h2{font-size:18px}h3{font-size:15px}p{line-height:1.7}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#89947c}.layout{width:min(100%,480px);margin:auto;padding:calc(env(safe-area-inset-top) + 24px) 23px calc(env(safe-area-inset-bottom) + 108px)}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.brand-row{display:flex;gap:10px;align-items:center}.brand-mark{width:40px;height:40px}.brand-text{font-weight:700;font-size:16px;letter-spacing:.5px}.brand-text small{font-size:9px;display:block;letter-spacing:2px;font-weight:500;color:var(--muted);margin-top:4px}.icon-btn{width:44px;height:44px;display:grid;place-items:center;background:#fffefa;border:1px solid #eeece2;border-radius:50%;flex:none}.icon{height:21px;width:21px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.welcome{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:22px}.welcome h1{font-size:25px;line-height:1.5;margin-top:6px}.welcome p{font-size:12px;color:var(--muted);margin-top:5px}.avatars{display:flex;align-items:center;padding-top:18px}.avatar{width:37px;height:37px;border-radius:50%;background:#eeded2;display:grid;place-items:center;border:3px solid var(--paper);font-size:16px;font-weight:600}.avatar+.avatar{margin-left:-8px;background:#dce8cd}.invite-avatar{background:#efeee5!important;color:#8d967e;border-style:dashed;font-size:20px}.hero{background:#dfeacd;border-radius:var(--radius);padding:23px 23px 19px;position:relative;overflow:hidden;min-height:206px}.hero-head{display:flex;align-items:center;justify-content:space-between;gap:5px}.month-btn{font-size:12px;min-height:28px;display:flex;align-items:center;gap:5px;padding:0}.pill{font-size:10px;background:#f9fcf0a8;padding:6px 9px;border-radius:20px;display:flex;align-items:center;gap:5px;color:#61754d;white-space:nowrap}.dot{display:inline-block;width:5px;height:5px;background:#72955b;border-radius:100%}.balance-label{margin-top:21px;font-size:12px;color:#617157}.balance{font-size:42px;font-weight:700;letter-spacing:-1.5px;line-height:1.35;margin:3px 0 19px;position:relative;z-index:1}.balance .currency{font-size:22px;margin-right:7px;font-weight:400}.hero-bottom{display:flex;gap:35px;position:relative;z-index:1}.hero-bottom p{font-size:11px;color:#6c7d60}.hero-bottom strong{display:block;font-size:17px;margin-top:5px;font-weight:600}.mini-arrow{font-size:10px;display:inline-grid;place-items:center;width:17px;height:17px;background:#f5f8eb;border-radius:50%;margin-right:4px;color:#74915d}.mini-arrow.out{color:#ae7c5c;background:#f8eee0}.cat-scene{position:absolute;width:126px;height:122px;right:8px;bottom:0;opacity:.95}.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:23px 0 27px}.quick-actions button{display:flex;flex-direction:column;align-items:center;gap:9px;font-size:11px;color:#696c5f}.quick-icon{width:49px;height:49px;display:grid;place-items:center;border-radius:18px;background:#f1e8d9;color:#8e7d58}.quick-actions button:nth-child(2) .quick-icon{background:#e5ebdf;color:#6f8a60}.quick-actions button:nth-child(3) .quick-icon{background:#f2e3df;color:#b38572}.quick-actions button:nth-child(4) .quick-icon{background:#e3e9ed;color:#7b919d}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:25px 0 14px}.section-heading h2{font-size:16px;display:flex;gap:8px;align-items:center}.section-heading small{font-size:10px;color:#95978b;font-weight:400}.text-btn{font-size:12px;color:#838a77;padding:0 4px}.budget-card{border:1px solid #e9e8dd;background:#fffdf7;border-radius:20px;padding:17px 18px}.budget-top{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px}.budget-top strong{font-size:14px}.budget-top span{color:var(--muted);font-size:11px}progress{appearance:none;-webkit-appearance:none;width:100%;height:7px;border:0;border-radius:10px;overflow:hidden;display:block;background:#eeeee5;margin:13px 0 9px}progress::-webkit-progress-bar{background:#eeeee5}progress::-webkit-progress-value{background:#9ab384;border-radius:10px}progress::-moz-progress-bar{background:#9ab384;border-radius:10px}.budget-foot{font-size:10px;color:#939784;display:flex;justify-content:space-between}.budget-foot .warn{color:#ae684e}.journal{background:#fffefa;border-radius:21px;border:1px solid #eeede5;padding:0 15px}.transaction{width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:15px 0;min-height:74px;border-bottom:1px dashed #eeede5}.transaction:last-child{border-bottom:0}.category-icon{width:43px;height:43px;display:grid;place-items:center;border-radius:15px;background:#f4ebdd;font-size:22px;flex:none}.transaction:nth-child(3n+2) .category-icon{background:#e8eddf}.transaction:nth-child(3n) .category-icon{background:#f1e3de}.tx-info{flex:1;min-width:0}.tx-info strong{font-size:13px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-info p{font-size:10px;color:#96998d;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-amount{text-align:right;flex:none;max-width:45%;overflow-wrap:anywhere}.tx-amount strong{font-size:14px;font-variant-numeric:tabular-nums}.tx-amount small{display:block;color:#989b90;font-size:9px;margin-top:6px}.income{color:#60855b}.expense{color:#5c6357}.refund{color:#ad8062}.day-title{font-size:11px;color:#8e9483;margin:19px 3px 9px}.empty{text-align:center;padding:27px 16px;color:#939686;font-size:12px}.empty .empty-icon{display:block;font-size:34px;margin-bottom:9px}.empty strong{display:block;color:#69745f;font-size:13px;margin:5px}.empty button{margin-top:10px}.footer-note{font-size:10px;color:#b2b5a6;text-align:center;letter-spacing:1px;margin:29px 0 4px}.nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);z-index:20;display:grid;grid-template-columns:1fr 1fr 76px 1fr 1fr;align-items:center;padding:8px 12px calc(env(safe-area-inset-bottom) + 10px);background:#fffef9f5;border-top:1px solid #ecece3;backdrop-filter:blur(18px)}.nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:9px;color:#a2a595;height:48px;padding:0}.nav button.active{color:#5f7b4d}.nav .add-button{height:53px;width:57px;justify-self:center;background:#cadfb2;color:#3f5a36;border-radius:20px;box-shadow:0 5px 11px #c8d6ba55;transform:translateY(-11px)}.add-button .icon{width:27px;height:27px;stroke-width:2}.nav button.active .icon{stroke-width:2.2}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:19px}.page-head h1{font-size:25px}.month-nav{display:flex;align-items:center;gap:7px;margin-bottom:18px}.month-nav input{flex:1;min-width:0;background:transparent;border:0;font-size:17px;font-weight:600;padding:4px;min-height:44px}.search{position:relative;margin:15px 0}.search input{background:#fffefa;padding-left:15px;font-size:14px}.filters{display:flex;gap:8px;overflow:auto;padding-bottom:8px;scrollbar-width:none}.filters button{border:1px solid #e9e9df;background:#fffdf8;border-radius:16px;padding:0 13px;font-size:11px;min-height:35px;white-space:nowrap}.filters button.selected{background:#dceacb;border-color:#dceacb;color:#4a6941}.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}.filter-grid select{font-size:12px;min-height:40px;padding:9px}.summary-strip{display:flex;justify-content:space-between;gap:12px;background:#eeefe3;border-radius:17px;padding:15px;margin:14px 0;font-size:12px}.summary-strip strong{display:block;margin-top:6px;font-size:18px}.card{background:#fffefa;border:1px solid #eeece2;border-radius:23px;padding:20px;margin:14px 0}.card p{font-size:12px;color:#8b907e}.card-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.account-card{background:#fffefa;border:1px solid #eeece2;border-radius:20px;padding:17px;text-align:left;min-height:123px}.account-card .emoji{font-size:24px;display:block;margin-bottom:13px}.account-card strong{font-size:12px;display:block;margin-bottom:7px}.account-card .value{font-size:21px;letter-spacing:-.5px}.account-card small{font-size:10px;color:#a6a78f;display:block;margin-top:6px}.net-card{background:#e5ebdc;border-radius:24px;padding:22px;margin-bottom:23px}.net-card h2{font-size:12px;color:#778469;font-weight:400}.net-card strong{display:block;font-size:34px;margin:12px 0 18px}.net-card p{font-size:11px;color:#7e8972;display:flex;justify-content:space-between}.primary{width:100%;background:#d2e4bd;color:#3e5d35;border-radius:16px;min-height:50px;font-size:15px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:7px;padding:12px}.secondary{width:100%;background:#f1f0e7;color:#758168;border-radius:15px;min-height:46px;padding:12px;font-size:13px}.danger{color:#b26958;background:#faece7}.button-row{display:flex;gap:9px;margin-top:17px}.button-row>*{flex:1}.setting-row{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;border-bottom:1px solid #f0eee5;gap:15px;padding:15px 0;min-height:58px;font-size:13px}.setting-row:last-child{border:0}.setting-row small{display:block;color:#969c89;margin-top:6px;font-size:10px}.setting-row .icon{color:#9da38e;flex:none}.setting-row .emoji{font-size:20px;flex:none}.setting-row .grow{flex:1}.auth{max-width:390px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 42px) 24px calc(env(safe-area-inset-bottom) + 25px)}.auth-logo{width:80px;height:80px;border-radius:25px;margin-bottom:22px}.auth h1{font-size:28px;margin-bottom:7px}.auth>p{font-size:13px;color:#969985;margin-bottom:27px}.auth .tabs{display:flex;gap:8px;background:#eeeee2;padding:4px;border-radius:15px;margin:25px 0 20px}.auth .tabs button{flex:1;min-height:37px;font-size:13px}.auth .tabs .selected{background:#fffdf7;border-radius:12px}.helper{font-size:11px;color:#939784;line-height:1.8;margin:12px 0}.form-error{background:#fae8e1;border:1px solid #edd0c6;color:#a25f49;border-radius:12px;padding:11px;font-size:12px;margin:12px 0}.network{position:sticky;top:0;z-index:60;font-size:12px;text-align:center;background:#f4dfba;color:#8b6a42;padding:calc(env(safe-area-inset-top) + 8px) 10px 8px}.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 100px);left:50%;transform:translateX(-50%);background:#3f4d3a;color:#fffdf4;padding:13px 20px;border-radius:16px;z-index:100;box-shadow:0 6px 20px #34402d22;width:max-content;max-width:88vw;font-size:13px;line-height:1.6}.loading{padding:20vh 20px;text-align:center;color:#8c9a7b;font-size:13px}.loading img{margin-bottom:20px}.retry{max-width:350px;margin:18vh auto;text-align:center;padding:20px}.retry h2{margin:14px}.retry p{margin:15px 0;color:#8b907d;font-size:13px}dialog{border:0;border-radius:29px 29px 0 0;padding:0;background:#faf8f3;color:#3f4939;width:min(100%,480px);max-width:480px;max-height:calc(100dvh - env(safe-area-inset-top) - 15px);margin:auto auto 0;overscroll-behavior:contain;box-shadow:0 -10px 70px #303f2922}dialog::backdrop{background:#25321c66;backdrop-filter:blur(3px)}.sheet-content{padding:10px 23px max(26px,env(safe-area-inset-bottom));overflow:auto}.handle{width:35px;height:4px;border-radius:4px;background:#d9ddcf;margin:0 auto 13px}.sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.sheet-header h2{font-size:18px}.sheet-header button{font-size:25px;width:44px;color:#909780}.type-tabs{display:flex;background:#edeedf;border-radius:16px;padding:4px;gap:2px;margin:12px 0 22px}.type-tabs button{flex:1;min-width:0;min-height:36px;font-size:12px;border-radius:12px;padding:3px}.type-tabs .selected{background:#fffefa;color:#5e7849;box-shadow:0 2px 5px #4b54310a}.money-input{display:flex;align-items:center;gap:12px;padding:8px 0 19px;border-bottom:1px solid #e6e8dc;margin-bottom:16px}.money-input span{font-size:28px}.money-input input{font-size:42px;font-weight:600;border:0;background:none;padding:0;height:57px;border-radius:0;min-width:0}.money-input input:focus{box-shadow:none}.money-input input::placeholder{color:#c7cdbd}.category-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.category-choice{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;border:1px solid transparent;border-radius:16px;padding:10px 3px;font-size:11px;min-height:72px}.category-choice span{font-size:25px}.category-choice.selected{border:1px solid #b9cea3;background:#e9f0de}.fields-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fields-row label{min-width:0}.fields-row select{font-size:14px}.detail-amount{text-align:center;font-size:40px;padding:19px 0 22px}.detail-icon{text-align:center;font-size:41px;padding-top:9px}.detail-row{display:flex;justify-content:space-between;gap:18px;border-bottom:1px dashed #e9e9dd;padding:13px 0;font-size:12px}.detail-row span:first-child{color:#929886;flex:none}.detail-row span:last-child{text-align:right;overflow-wrap:anywhere}.stat-row{display:flex;gap:12px;align-items:center;margin:18px 0;font-size:12px}.stat-row .grow{flex:1}.stat-row progress{margin:8px 0 0;height:6px}.stat-row strong{font-size:13px}.stat-member{display:flex;justify-content:space-between;align-items:center;padding:15px 0}.stat-member small{display:block;font-size:10px;color:#939a85;margin-top:5px}.subtle-banner{background:#f1eee1;border-radius:17px;padding:14px 16px;color:#8a8d71;font-size:11px;line-height:1.8;margin:17px 0}.check-label{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:400}.preview-table{overflow:auto;max-height:250px;border:1px solid #e4e7da;border-radius:10px;margin:15px 0}table{border-collapse:collapse;font-size:11px;width:100%;white-space:nowrap}td,th{padding:9px;text-align:left;border-bottom:1px solid #edeee5}th{color:#6a795c;background:#f0f3e8}.csv-map{display:grid;grid-template-columns:1fr 1fr;gap:8px}.csv-map label{font-size:11px;margin:4px 0}.csv-map select{font-size:12px;min-height:39px;padding:8px}.invite-link{font-size:12px;overflow-wrap:anywhere;padding:13px;background:#eaf0df;border-radius:12px;user-select:all;margin:15px 0}.audit-line{padding:10px 0;font-size:11px;border-bottom:1px solid #eee}.audit-line small{display:block;color:#8b957d;margin-top:5px}.update-btn{position:fixed;top:calc(env(safe-area-inset-top) + 8px);left:50%;transform:translateX(-50%);z-index:80;box-shadow:0 5px 24px #53654522;width:min(90vw,380px);background:#e3edcf;border:1px solid #b5c998;border-radius:16px;padding:12px;font-size:12px}.install-steps{padding-left:20px;font-size:13px;line-height:2.1;color:#69765d}.split-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.chart-bars{display:block;width:100%;height:auto}.chart-label{font-family:inherit;font-size:10px;fill:#98a18b}.label-inactive{color:#aaa;font-size:10px}.error-panel{padding:18px;background:#fae7e0;border-radius:15px;color:#9c604d;font-size:12px;margin:16px 0}.sync{display:flex;justify-content:center;gap:6px;align-items:center;font-size:10px;color:#a4ab99;margin-bottom:17px}.sync button{font-size:10px;color:#7c8c6d;min-height:30px}.legend{display:flex;gap:15px;font-size:10px;color:#8a957c;justify-content:flex-end}.legend i{width:7px;height:7px;display:inline-block;border-radius:2px;background:#a8c38c;margin-right:4px}.legend .pink{background:#e4bea7}
@media(min-width:700px){body{background:#efeee6}.layout,.auth{background:var(--paper);min-height:100dvh;border-left:1px solid #e6e7d9;border-right:1px solid #e6e7d9}.nav{border-left:1px solid #e6e7d9;border-right:1px solid #e6e7d9}dialog{border-radius:29px;margin:auto;max-height:90dvh}.auth{max-width:480px;padding-left:47px;padding-right:47px}}
@media(max-width:360px){.layout{padding-left:16px;padding-right:16px}.hero{padding-left:18px}.balance{font-size:35px}.hero-bottom{gap:20px}.cat-scene{width:100px}.category-grid{gap:2px}.sheet-content{padding-left:16px;padding-right:16px}}
.modal-open{overflow:hidden}dialog:has(#tx-form){overflow:hidden}.sheet-content:has(#tx-form){overflow:hidden}#tx-form{display:flex;flex-direction:column;max-height:calc(var(--visual-height,100dvh) - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 128px)}.tx-scroll{overflow-y:auto;min-height:0;padding:0 3px 5px;margin:0 -3px;overscroll-behavior:contain}.sheet-content #tx-form>.primary{flex:none;min-height:50px;margin-top:12px;position:relative;z-index:3}.welcome h1{font-size:22px;line-height:1.5}.cat-scene{width:95px;height:100px;right:4px;bottom:2px}.preview-banner{text-align:center;font-size:10px;color:#8b9479;background:#eeefdf;border-radius:12px;padding:6px;margin:-8px 0 17px}.hero-bottom{gap:26px}
.summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:15px 11px}.summary-strip strong{font-size:clamp(13px,3.8vw,17px);overflow-wrap:anywhere}.balance,.net-card strong,.account-card .value{overflow-wrap:anywhere}
@media(max-width:360px){.welcome h1{font-size:20px}.cat-scene{width:78px;right:0}.hero-bottom{gap:16px}.hero-bottom strong{font-size:15px}.hero-bottom p{font-size:10px}.balance{font-size:31px}}
@media(prefers-reduced-motion:no-preference){.hero,.card,.journal{animation:appear .25s ease-out}@keyframes appear{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}}
