:root{--paper:#f5f3eb;--card:#fffef9;--ink:#303e35;--green:#496b55;--light:#e9eee4;--muted:#82897c;--line:#e2e4d8;--red:#a55447;font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.55;cursor:wait}button,input,textarea{border-radius:12px}button{border:0}button:focus-visible,a:focus-visible{outline:3px solid #99b494;outline-offset:3px}input,textarea{width:100%;padding:13px 12px;background:var(--card);border:1px solid var(--line);color:var(--ink);min-width:0}input:focus,textarea:focus{outline:2px solid #aebda7;outline-offset:1px}label{display:block;font-size:13px}label>input,label>textarea{margin-top:8px}h1,h2,h3,p{margin:0}h2{font-size:20px;font-weight:600}h3{font-size:16px}fieldset{border:0;padding:0;margin:20px 0}legend{font-size:13px;margin-bottom:10px}a{color:var(--green)}.shell{max-width:520px;margin:auto;min-height:100dvh;padding:28px 22px 112px;position:relative}.brand{position:relative;padding:7px 0 26px}.brand:after{content:"";position:absolute;right:-12px;top:-14px;width:135px;height:185px;background:url("/plant.svg") center/contain no-repeat;opacity:.5;pointer-events:none;z-index:-1}.eyebrow{font-size:10px;letter-spacing:3px;color:var(--muted);margin-bottom:10px}.brand h1{font-family:"STKaiti","KaiTi",serif;font-size:29px;font-weight:500;letter-spacing:1px;line-height:1.5}.brand-sub{font-size:12px;color:var(--muted);margin-top:9px;letter-spacing:2px}.seal{display:inline-block;border:1px solid #af7568;color:#9b6256;font-size:11px;padding:2px 5px;border-radius:3px;letter-spacing:2px;margin-left:8px;vertical-align:middle}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.muted{color:var(--muted);font-size:12px;line-height:1.8}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;margin-bottom:20px;box-shadow:0 5px 20px #33442a03}.summary{position:relative;overflow:hidden;background:linear-gradient(125deg,#eef1e6,#f9faf3);border:1px solid #dce3d4}.summary:after{content:"";position:absolute;width:128px;height:220px;right:-25px;top:-15px;background:url("/plant.svg") center/contain no-repeat;opacity:.27;pointer-events:none}.summary>*{position:relative;z-index:1}.period{display:flex;align-items:center;gap:8px;font-size:12px;color:#62715d;margin-bottom:22px}.period span{flex:1;text-align:center}.period button{background:#ffffff80;color:var(--green);width:28px;height:28px;border-radius:50%;font-size:18px}.total-label{font-size:12px;color:#718069}.total{font-size:38px;letter-spacing:-1px;margin:8px 0 22px;font-weight:500;font-variant-numeric:tabular-nums}.total small{font-size:19px;margin-right:5px}.split{display:flex;gap:36px;border-top:1px solid #d8dfcf;padding-top:18px}.split dt{font-size:12px;color:#778470;margin-bottom:7px}.split dd{font-size:17px;margin:0}.split dl{margin:0}.primary{background:var(--green);color:white;padding:15px 20px;box-shadow:0 4px 9px #496b5512}.secondary{background:var(--light);color:var(--green);padding:12px 15px}.danger{background:#f3e6e0;color:var(--red);padding:12px 15px}.full{width:100%}.add-button{font-size:16px;letter-spacing:1px;margin-bottom:28px;display:flex;align-items:center;justify-content:center;gap:10px}.text-button{background:none;color:var(--green);padding:6px;font-size:12px}.icon-button{font-size:24px;background:none;color:var(--muted);padding:2px 8px}.section-note{font-size:11px;color:var(--muted);margin-top:-5px;margin-bottom:16px}.empty{text-align:center;padding:32px 12px;color:var(--muted);font-size:13px;line-height:2}.empty svg{width:40px;height:40px;display:block;margin:0 auto 12px;color:#8ba181}.date-heading{font-size:12px;color:var(--muted);margin:20px 0 8px}.entry{display:flex;align-items:flex-start;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.entry-icon{background:var(--light);color:var(--green);border-radius:13px;width:42px;height:42px;flex-shrink:0;display:grid;place-items:center}.entry-icon svg{width:24px;height:24px}.entry-content{min-width:0;flex:1}.entry-title{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.entry-meta{font-size:10px;color:var(--muted);margin-top:5px;line-height:1.7}.entry-note{font-size:12px;color:#76806e;margin-top:7px;overflow-wrap:anywhere;white-space:pre-wrap}.entry-amount{font-size:16px;white-space:nowrap;font-variant-numeric:tabular-nums}.entry-actions{display:flex;justify-content:flex-end;gap:5px;margin-top:6px}.entry-actions button{font-size:10px;padding:5px;background:none;color:var(--muted)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:520px;background:#fbfaf4f5;backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:5}.nav-button{flex:1;background:none;color:var(--muted);font-size:11px;display:flex;align-items:center;flex-direction:column;gap:5px;padding:5px}.nav-button svg{width:23px;height:23px}.nav-button.active{color:var(--green)}.form-row{display:flex;gap:12px}.form-row>*{flex:1;min-width:0}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{position:relative}.chip input{position:absolute;opacity:0;width:1px;height:1px}.chip span{display:block;padding:10px 13px;background:#f0f0e8;border:1px solid transparent;border-radius:10px;font-size:12px;color:#77806e;cursor:pointer}.chip input:checked+span{background:#e5ecdf;border-color:#a9baa0;color:var(--green)}.chip input:focus-visible+span{outline:2px solid var(--green);outline-offset:2px}.error{color:var(--red);font-size:12px;line-height:1.7;margin:12px 0;min-height:0}.auth{padding-top:7vh}.auth .card{margin-top:12px}.auth label{margin:18px 0}.tabs{display:flex;gap:8px;background:#eeeee5;padding:5px;border-radius:12px;margin-bottom:20px}.tabs button{flex:1;background:none;color:var(--muted);padding:10px}.tabs button.active{background:var(--card);color:var(--green);box-shadow:0 2px 5px #00000005}.auth-footer{text-align:center;font-size:11px;color:var(--muted);line-height:2}.stats-value{font-size:32px;margin:10px 0}.chart-row{display:grid;grid-template-columns:68px 1fr 88px;gap:10px;align-items:center;margin:18px 0;font-size:12px}.chart-track{height:7px;background:#eff1e8;border-radius:9px;overflow:hidden}.chart-track progress{width:100%;height:7px;display:block;border:0;appearance:none;background:#eff1e8}.chart-track progress::-webkit-progress-bar{background:#eff1e8}.chart-track progress::-webkit-progress-value{background:#829978;border-radius:9px}.chart-track progress::-moz-progress-bar{background:#829978;border-radius:9px}.chart-number{text-align:right;font-size:11px;color:#6b7763}.family-name{font-family:"STKaiti","KaiTi",serif;font-size:24px;margin:5px 0 15px}.invite{font-size:18px;letter-spacing:2px;background:var(--light);padding:15px;border-radius:12px;margin:12px 0;overflow-wrap:anywhere;user-select:all}.member{padding:12px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-size:13px}.spaced{margin-top:20px}.notice{font-size:12px;line-height:1.9;color:#78826e;padding:14px 0}.loading{padding:35px;text-align:center;color:var(--muted);font-size:13px}dialog{width:calc(100% - 28px);max-width:480px;border:1px solid var(--line);border-radius:22px;padding:25px;background:var(--paper);color:var(--ink);max-height:90dvh;overflow:auto}dialog::backdrop{background:#26372665;backdrop-filter:blur(3px)}dialog label{margin:15px 0}dialog .form-row label{margin:0}dialog .section-heading{margin-bottom:4px}#toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#304c3e;color:white;padding:12px 20px;border-radius:12px;font-size:13px;z-index:20;max-width:90%;text-align:center}#confirm-dialog p{margin:12px 0 22px}[hidden]{display:none!important}@media(min-width:650px){body{background:radial-gradient(ellipse at top,#f8f7f0,#e8ecdf)}.shell{background:var(--paper);box-shadow:0 0 80px #53674b0b}.brand:after{z-index:0}.brand>*{position:relative;z-index:1}}@media(prefers-reduced-motion:no-preference){.card{animation:appear .25s ease-out}@keyframes appear{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}
