/* 小荷包 · 移动优先的本地账本。所有外观与交互资源随应用打包。 */
/* 原生下拉由根节点 overscroll-behavior 关闭；自定义手势监听不阻止滚动或缩放。 */
.refresh-button{color:var(--green)}
.pull-refresh{position:fixed;z-index:40;top:calc(12px + var(--safe-top));left:50%;display:flex;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:12px 17px;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--green);box-shadow:0 5px 22px #00000012;font-size:12px;pointer-events:none;transform:translate(-50%,calc((var(--pull-progress,1) - 1)*-36px));opacity:var(--pull-progress,1)}
.pull-refresh-icon{width:18px;height:18px;transform:rotate(calc(var(--pull-progress,0)*180deg))}
.pull-refresh[data-state=refreshing] .pull-refresh-icon{animation:refresh-spin 850ms linear infinite}
.pull-refresh[data-state=error]{color:var(--amber)}
.refresh-button[aria-busy=true] svg{animation:refresh-spin 850ms linear infinite}
@keyframes refresh-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.pull-refresh-icon,.refresh-button[aria-busy=true] svg{animation:none!important}}
:root{color-scheme:light;--canvas:#f5f6f2;--paper:#fff;--sidebar:#fcfcf9;--ink:#253c34;--muted:#7f8b83;--line:#e8ece6;--green:#39785d;--green-dark:#285c46;--green-soft:#e9f1e8;--blue:#689980;--amber:#bd815f;--amber-soft:#fbefe4;--red:#b4544f;--red-soft:#f9eae6;--input:#f7f8f5;--shadow:0 8px 30px #263d3205;--glass:rgba(255,255,255,.89);--ease:cubic-bezier(.23,1,.32,1);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px)}
:root[data-theme=dark]{color-scheme:dark;--canvas:#141416;--paper:#1e1e21;--sidebar:#18181b;--ink:#f0f0f3;--muted:#a5a5af;--line:#333338;--green:#beb8ed;--green-dark:#dfdbfa;--green-soft:#2c2a38;--blue:#b8b1dc;--amber:#d9b695;--amber-soft:#342d28;--red:#eca7a3;--red-soft:#3a292c;--input:#252529;--shadow:0 8px 30px #00000018;--glass:rgba(29,29,32,.94)}
*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none;scrollbar-gutter:stable}body{margin:0;background:var(--canvas);color:var(--ink);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.01em}button,input,select,textarea{font:inherit;color:inherit}button,a,summary{touch-action:manipulation}button,[role=button],summary,.nav{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}a{color:inherit}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--green);outline-offset:4px}button:active:not(:disabled),.nav a:active{transform:scale(.97)}button{transition:transform 130ms var(--ease),background-color 150ms ease}h1,h2,h3,p{margin:0}[hidden]{display:none!important}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:20px;background:var(--paper);padding:12px;z-index:50}.skip-link:focus{top:12px}.app{display:grid;grid-template-columns:222px minmax(0,1fr);min-height:100dvh}
.sidebar{height:100dvh;position:sticky;top:0;display:flex;flex-direction:column;padding:39px 23px 24px;background:var(--sidebar);border-right:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;padding:0 7px}.brand-mark{width:44px;height:44px;display:grid;place-items:center;background:#2f6b50;color:#f1f6e8;border-radius:16px;box-shadow:0 4px 10px #27533812}.brand-mark svg{width:25px;height:25px}.brand strong{display:block;font-size:20px;font-weight:750;letter-spacing:.07em}.brand small{display:block;font-size:10px;color:var(--muted);margin-top:1px;letter-spacing:.09em}.nav-caption{font-size:10px;letter-spacing:.12em;color:var(--muted);margin:53px 16px 14px}.nav{display:grid;gap:9px}.nav a{display:flex;align-items:center;gap:15px;position:relative;text-decoration:none;padding:14px 17px;color:var(--muted);border-radius:14px;font-size:14px;min-height:51px;transition:background-color 150ms}.nav a svg{width:20px;height:20px}.nav a.active{background:var(--green-soft);color:var(--green-dark);font-weight:650}.nav a.active i{margin-left:auto;width:5px;height:5px;background:var(--green);border-radius:50%}.sidebar-bottom{margin-top:auto;padding-top:60px}.side-quote{padding:21px 15px 23px;margin-bottom:20px;background:var(--green-soft);border-radius:16px;position:relative;overflow:hidden}.side-quote>svg{color:var(--green);width:23px;height:23px;margin-bottom:14px}.side-quote p{font-size:14px;line-height:1.9;letter-spacing:.05em;font-weight:550}.side-quote>span{font-size:8px;display:block;letter-spacing:.1em;color:var(--muted);margin-top:13px}.local-note{display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;color:var(--muted)}.local-note>span,.live-dot{width:5px;height:5px;border-radius:50%;background:#9ac5a1;display:inline-block}
main{width:100%;max-width:1280px;margin:0 auto;padding:42px 48px 24px;min-width:0}main:focus{outline:none}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.eyebrow,.section-kicker{font-size:9px;font-weight:650;letter-spacing:.16em;color:var(--muted)}.eyebrow{color:var(--green);margin-bottom:7px}.page-title{font-size:29px;font-weight:700;letter-spacing:.035em;line-height:1.45}.title-dot{color:#88a787}.page-subtitle{font-size:12px;color:var(--muted);margin-top:7px}.header-tools{display:flex;gap:16px;align-items:center}.date-chip{font-size:11px;color:var(--muted);white-space:nowrap}.avatar{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:var(--paper);display:grid;place-items:center;color:var(--green)}.avatar svg{width:19px;height:19px}
.overview-top{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(230px,1fr);gap:20px;margin-bottom:22px}.balance-card{background:#2d624c;color:#f3f8ec;border-radius:24px;padding:23px 28px 25px;position:relative;overflow:hidden;min-height:270px;isolation:isolate;box-shadow:0 9px 24px #284a3511}.balance-top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2;font-size:12px;letter-spacing:.04em}.balance-top>span{display:flex;align-items:center;gap:8px}.balance-eye{width:44px;height:44px;display:grid;place-items:center;background:transparent;color:#c3d3c4;margin:-10px -10px -10px 0}.balance-eye svg{width:18px;height:18px}.balance-label{font-size:11px;color:#c1d4c5;margin-top:23px}.balance-number{font-size:clamp(30px,3.1vw,48px);font-weight:550;line-height:1.3;letter-spacing:-.03em;font-variant-numeric:tabular-nums;position:relative;z-index:2;overflow-wrap:anywhere;margin-top:3px;max-width:90%}.balance-caption{font-size:10px;letter-spacing:.08em;color:#c1d4c5;margin-top:6px}.balance-actions{display:flex;gap:10px;position:relative;z-index:2;margin-top:25px}.btn{min-height:44px;padding:10px 18px;display:inline-flex;gap:7px;align-items:center;justify-content:center;white-space:nowrap;border:1px solid transparent;border-radius:12px;font-size:13px;font-weight:600}.btn svg{width:18px;height:18px}.btn-primary{background:var(--green);color:var(--paper)}[data-theme=dark] .btn-primary{color:#183323}.btn-secondary{background:var(--paper);border-color:var(--line);color:var(--ink)}.btn-light{background:#e9f0d7;color:#284a38;min-width:114px}.btn-glass{background:#ffffff14;border-color:#ffffff20;color:#f3f8ec;min-width:114px}.btn-danger{background:var(--red-soft);color:var(--red)}.btn-link{background:transparent;color:var(--green)}.btn-small{padding:8px 12px;font-size:12px}.wallet-art{position:absolute;right:25px;top:45px;width:160px;height:170px;z-index:0;opacity:.9;pointer-events:none}.orbit{position:absolute;width:235px;height:235px;border:1px solid #b4d4b824;border-radius:50%;top:-21px;left:-25px}.orbit-two{width:290px;height:290px;left:-52px;top:-49px}.coin{position:absolute;display:grid;place-items:center;border-radius:50%;background:#c5d8a1;border:1px solid #edf2bd;box-shadow:inset 0 0 0 7px #c4d29b,inset 0 0 0 8px #edf2bd,5px 7px 0 #899e71,14px 20px 28px #0b32282b;color:#728c58}.coin-front{width:91px;height:91px;top:58px;left:50px;transform:rotate(-16deg)}.coin-front span{font-size:43px;font-weight:500}.coin-back{width:70px;height:70px;left:17px;top:12px;transform:rotate(18deg);background:#d9e6c5;color:#80976b;box-shadow:inset 0 0 0 6px #d4dfb8,inset 0 0 0 7px #f5f7db,4px 5px 0 #a1b588,10px 15px 20px #0b32281b}.coin-back span{font-size:31px}.art-spark{position:absolute;top:14px;right:2px;color:#dae7bf;font-size:27px}
.summary-stack{display:grid;gap:15px;grid-template-rows:1fr 1fr}.stat{display:flex;align-items:center;gap:17px;padding:22px;background:var(--paper);border:1px solid var(--line);border-radius:20px;min-width:0;box-shadow:var(--shadow)}.stat>div:last-child{min-width:0}.stat-icon{width:43px;height:43px;border-radius:14px;display:grid;place-items:center;flex-shrink:0}.stat-icon svg{width:20px;height:20px}.income-icon{background:var(--green-soft);color:var(--green)}.expense-icon{background:var(--amber-soft);color:var(--amber)}.stat-label{font-size:11px;color:var(--muted)}.stat-value{font-size:25px;font-weight:600;line-height:1.3;font-variant-numeric:tabular-nums;letter-spacing:-.02em;overflow-wrap:anywhere;margin:4px 0}.stat-caption{font-size:10px;color:var(--muted)}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(230px,1fr);gap:20px;align-items:start}.panel{background:var(--paper);border:1px solid var(--line);border-radius:22px;min-width:0;box-shadow:var(--shadow)}.panel-head{padding:24px 25px 15px;display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-title{font-size:17px;font-weight:650;letter-spacing:.02em;margin-top:4px}.panel-hint{font-size:11px;color:var(--muted);margin-top:5px}.range-label{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap;background:var(--input);padding:6px 9px;border-radius:8px}.range-label>span{width:5px;height:5px;background:#8eae91;border-radius:50%}.chart-wrap{position:relative;height:210px;margin:0 14px}.chart-wrap>svg{display:block;width:100%;height:100%;overflow:visible}.chart-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}.chart-label{fill:var(--muted);font:10px -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}.chart-area{fill:url(#areaFill)}.chart-line{fill:none;stroke:var(--blue);stroke-width:2.7;stroke-linecap:round;stroke-linejoin:round}.chart-point{fill:var(--paper);stroke:var(--blue);stroke-width:2.5}.chart-empty{position:absolute;inset:14px 12px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:12px;padding:32px 20px 0;background:repeating-linear-gradient(0deg,transparent 0,transparent 47px,var(--line) 48px,transparent 49px)}.chart-empty:before{content:'✧';position:absolute;top:37px;left:calc(50% - 24px);width:48px;height:48px;display:grid;place-items:center;background:var(--paper);border:1px solid var(--line);border-radius:15px;color:#9aae96;font-size:26px}.chart-footer{border-top:1px solid var(--line);margin:15px 25px 0;padding:15px 0;display:flex;justify-content:space-between;gap:10px;font-size:9px;color:var(--muted)}.chart-footer span:last-child{display:flex;align-items:center;gap:6px}.chart-footer svg{width:13px;height:13px}
.planner .panel-head{padding-bottom:12px}.day-chip{font-size:10px;background:var(--green-soft);color:var(--green);padding:5px 8px;border-radius:7px;white-space:nowrap}.planner-form{padding:0 25px;display:grid;gap:12px}.field{display:grid;gap:7px;min-width:0}.field label,.field-label{font-size:12px;font-weight:550;color:var(--muted)}input,select,textarea{font-size:16px;max-width:100%}.field input,.field select{width:100%;min-width:0;min-height:48px;background:var(--input);border:1px solid var(--line);border-radius:11px;padding:10px 12px}.field input::placeholder{color:var(--muted);opacity:.7}.field-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.input-with-unit{position:relative;min-width:0}.input-with-unit input{padding-right:38px}.unit{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:12px;pointer-events:none}.daily-field{border:1px solid var(--line);background:var(--input);border-radius:14px;padding:12px 14px;gap:2px}.daily-field>label{font-size:10px}.daily-input{display:flex;align-items:center;gap:5px}.daily-input>span:first-child{font-size:22px;color:var(--green)}.daily-input input{background:transparent;border:0;padding:0 4px;min-height:38px;font-size:30px;font-weight:550;width:100%;outline-offset:0;color:var(--ink)}.daily-unit{font-size:10px;color:var(--muted);white-space:nowrap}input[type=number]{appearance:textfield;-moz-appearance:textfield}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.plan-options summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted);list-style:none;cursor:pointer}.plan-options summary::-webkit-details-marker{display:none}.options-summary{font-size:10px;color:var(--green)}.options-summary:after{content:'⌄';margin-left:6px}.plan-options[open] .options-summary:after{content:'⌃'}.options-body{display:grid;gap:12px;padding:6px 0 8px}.inline-choice{display:flex;gap:10px;align-items:center;justify-content:space-between}.segmented{background:var(--input);padding:3px;display:flex;border:1px solid var(--line);border-radius:11px}.segmented button{min-height:38px;min-width:52px;padding:6px 9px;background:transparent;border-radius:8px;color:var(--muted);font-size:11px}.segmented button.selected{color:var(--green-dark);background:var(--paper);box-shadow:0 1px 4px #0000000b}.generate-btn{width:100%}.plan-list{margin:8px 25px 0;max-height:260px;overflow-y:auto;overscroll-behavior:contain}.plan-empty{font-size:10px;text-align:center;color:var(--muted);padding-top:5px}.plan-row{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:50px;border-bottom:1px solid var(--line);font-size:11px}.plan-row-left{display:flex;align-items:center;gap:7px}.plan-number{width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:var(--input);color:var(--muted);font-size:10px}.plan-amount{font-weight:600;font-variant-numeric:tabular-nums}.plan-row.done{color:var(--muted)}.plan-row.done .plan-number{background:var(--green-soft);color:var(--green)}.plan-row button{background:transparent;color:var(--green);min-height:44px;padding:5px 0 5px 6px;white-space:nowrap;font-size:11px}.planner-disclaimer{text-align:center;font-size:9px;color:var(--muted);padding:11px 16px 16px}
.home-wishes{margin-top:29px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:17px}.section-title{font-size:18px;font-weight:650;margin-top:4px}.text-button{display:flex;align-items:center;gap:6px;min-height:44px;background:transparent;color:var(--green);font-size:12px}.text-button svg{width:16px;height:16px}.wish-invitation{display:flex;align-items:center;gap:17px;border:1px dashed #cbd7c8;background:var(--paper);width:100%;text-align:left;border-radius:18px;padding:23px}.invitation-icon{width:49px;height:49px;border-radius:17px;display:grid;place-items:center;background:var(--green-soft);color:var(--green);flex-shrink:0}.invitation-icon svg{width:23px;height:23px}.wish-invitation strong{display:block;font-size:14px;font-weight:600}.wish-invitation small{display:block;font-size:11px;color:var(--muted);margin-top:4px}.invitation-plus{width:34px;height:34px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;margin-left:auto;flex-shrink:0}.invitation-plus svg{width:16px;height:16px}.wish-preview-populated{display:grid;grid-template-columns:1fr 1fr;gap:16px}.preview-card{display:flex;align-items:center;gap:15px;background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:18px;text-align:left;min-width:0}.preview-art{width:55px;height:55px;border-radius:15px;background:var(--green-soft);color:var(--green);display:grid;place-items:center;flex-shrink:0;overflow:hidden}.preview-art img{width:100%;height:100%;object-fit:cover}.preview-info{flex:1;min-width:0}.preview-info strong{display:block;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-info small{display:block;color:var(--muted);font-size:10px;margin:5px 0 8px}.preview-percent{font-size:14px;color:var(--green);font-variant-numeric:tabular-nums}.page-footer{display:flex;justify-content:center;align-items:center;gap:6px;color:var(--muted);font-size:9px;padding-top:25px}.page-footer svg{width:12px;height:12px}
.view-banner,.records-summary{display:flex;align-items:center;gap:17px;padding:22px 24px;background:var(--green-soft);border-radius:20px;margin-bottom:28px}.banner-icon{color:var(--green);width:48px;height:48px;background:var(--paper);border-radius:17px;display:grid;place-items:center;flex-shrink:0}.view-banner strong,.records-summary strong{font-size:15px;font-weight:600}.view-banner p,.records-summary p{font-size:11px;color:var(--muted);margin-top:5px}.toolbar{display:flex;align-items:center;gap:12px;min-width:0}.toolbar select{height:44px;padding:0 27px 0 12px;border:1px solid var(--line);background:var(--paper);border-radius:10px;font-size:12px;min-width:0}.tabs{display:flex;gap:5px;padding:4px;background:var(--line);border-radius:13px;flex-shrink:0}.tabs button{min-height:40px;padding:8px 14px;border-radius:10px;background:transparent;color:var(--muted);font-size:12px;white-space:nowrap}.tabs button.active{background:var(--paper);color:var(--green);box-shadow:0 2px 5px #00000005}.count{font-size:10px;color:var(--muted);font-weight:400;margin-left:4px}.items-list{display:grid;gap:15px}.item-card{display:grid;grid-template-columns:80px minmax(120px,1fr) minmax(150px,.85fr);column-gap:20px;row-gap:12px;padding:23px;background:var(--paper);border:1px solid var(--line);border-radius:20px}.item-image{width:80px;height:80px;border-radius:16px;object-fit:cover;grid-row:span 2;background:var(--input);border:1px solid var(--line)}.item-image-placeholder{display:grid;place-items:center;color:var(--green);background:var(--green-soft)}.item-image-placeholder svg{width:30px;height:30px}.item-name{font-size:16px;font-weight:600;overflow-wrap:anywhere;line-height:1.5}.item-price{font-size:23px;font-weight:550;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:5px}.item-price small{font-size:14px;margin-right:3px;color:var(--muted);font-weight:400}.item-meta{font-size:10px;color:var(--muted);margin-top:5px}.item-progress{align-self:center}.progress-top{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;margin-bottom:8px}.progress-track{height:6px;border-radius:20px;background:var(--line);overflow:hidden}.progress-fill{height:100%;background:#8fb291;border-radius:20px;max-width:100%;min-width:0}.progress-bottom{font-size:10px;color:var(--muted);margin-top:9px}.progress-bottom strong{font-weight:600;color:var(--green)}.item-actions{grid-column:2/-1;display:flex;align-items:center;justify-content:flex-end;gap:4px;border-top:1px solid var(--line);padding-top:8px}.icon-btn{width:44px;height:44px;padding:0;display:inline-grid;place-items:center;border:0;border-radius:12px;background:transparent;color:var(--muted);flex-shrink:0}.icon-btn svg{width:18px;height:18px}.item-actions .btn{margin-left:9px}.is-purchased .progress-fill{background:#b6c2ac}.empty-state{border:1px dashed #cbd7c8;background:var(--paper);border-radius:22px;text-align:center;padding:65px 22px}.empty-icon{width:66px;height:66px;display:grid;place-items:center;background:var(--green-soft);color:var(--green);border-radius:23px;margin:0 auto 19px}.empty-icon svg{width:29px;height:29px}.empty-title{font-size:16px;font-weight:600}.empty-copy{font-size:12px;margin-top:7px;color:var(--muted)}
.records-summary .stat-icon{background:var(--paper)}.records-table-wrap{background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden}.records-table{width:100%;border-collapse:collapse;font-size:12px}.records-table th{background:var(--input);color:var(--muted);font-weight:500;font-size:11px;text-align:left;padding:17px 19px}.records-table td{padding:16px 19px;border-top:1px solid var(--line)}.record-date{color:var(--muted);font-size:11px;white-space:nowrap}.record-type{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:11px;background:var(--green-soft);color:var(--green);border-radius:7px;padding:5px 8px}.record-type.expense{background:var(--amber-soft);color:var(--amber)}.record-note{max-width:250px;overflow-wrap:anywhere;color:var(--muted);font-size:12px}.record-amount{font-size:15px;white-space:nowrap;font-weight:550;font-variant-numeric:tabular-nums}.record-amount.income{color:var(--green)}.record-amount.expense{color:var(--amber)}.record-actions{text-align:right;white-space:nowrap}.records-empty{text-align:center!important;padding:60px 20px!important;color:var(--muted)}
.settings-view{max-width:900px}.profile-card{text-align:center;padding:8px 10px 33px}.profile-mark{width:70px;height:70px;border-radius:24px;display:grid;place-items:center;margin:0 auto 14px;background:#2f6b50;color:#e9f0d7}.profile-mark svg{width:37px;height:37px}.profile-card h2{font-size:22px;font-weight:650}.profile-card p{font-size:12px;color:var(--muted);margin-top:7px}.local-pill{display:inline-flex;gap:6px;align-items:center;font-size:10px;background:var(--green-soft);color:var(--green);padding:5px 10px;border-radius:20px;margin-top:13px}.local-pill span{width:5px;height:5px;border-radius:50%;background:var(--green)}.settings-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:20px}.settings-panel{padding:25px}.settings-panel h3{font-size:15px;font-weight:600}.settings-panel>p{font-size:11px;margin-top:5px;color:var(--muted)}.theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:24px}.theme-options button{min-height:90px;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:13px;color:var(--muted);background:var(--input);font-size:11px}.theme-options button.selected{background:var(--green-soft);color:var(--green);border-color:var(--green)}.theme-options svg{width:23px;height:23px}.backup-actions{margin-top:14px}.backup-button{width:100%;display:flex;align-items:center;gap:12px;background:transparent;text-align:left;padding:13px 0}.backup-button+.backup-button{border-top:1px solid var(--line)}.backup-icon{width:37px;height:37px;background:var(--input);border-radius:12px;display:grid;place-items:center;color:var(--green);flex-shrink:0}.backup-icon svg{width:18px;height:18px}.backup-button strong{display:block;font-size:12px;font-weight:550}.backup-button small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.backup-button>svg:last-child{margin-left:auto;width:17px;height:17px;color:var(--muted)}.privacy-note{display:flex;gap:12px;margin-top:25px;padding:0 8px;color:var(--muted)}.privacy-note>svg{width:19px;height:19px;color:var(--green)}.privacy-note strong{font-size:12px;font-weight:550;color:var(--ink)}.privacy-note p{font-size:11px;line-height:1.9;margin-top:5px}.about-app{text-align:center;color:var(--green);font-size:16px;letter-spacing:.13em;padding:35px 0}.about-app span{display:block;font-size:10px;letter-spacing:.03em;color:var(--muted);margin-top:4px}
dialog{width:min(510px,calc(100% - 36px));max-height:min(90dvh,850px);padding:0;border:1px solid var(--line);border-radius:25px;background:var(--paper);color:var(--ink);box-shadow:0 30px 100px #0f211f30;overscroll-behavior:contain}dialog::backdrop{background:#16271e66;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:23px 24px 18px;border-bottom:1px solid var(--line)}.dialog-title{font-size:20px;font-weight:650;line-height:1.4;margin-top:5px}.dialog-sub{font-size:12px;color:var(--muted);margin-top:7px}.dialog-head>.icon-btn{margin:-2px -7px 0 0}.dialog-body{display:grid;gap:17px;padding:23px 24px 15px}.dialog-foot{display:flex;justify-content:flex-end;gap:10px;padding:17px 24px 24px;background:var(--paper);border-top:1px solid var(--line)}.dialog-foot>.btn{min-width:95px}.form-error{color:var(--red);font-size:12px;min-height:18px}.optional{font-size:10px;color:var(--muted);font-weight:400;margin-left:5px}.image-upload{display:flex;align-items:center;gap:10px}.image-preview{width:58px;height:58px;object-fit:cover;background:var(--input);border-radius:12px;border:1px solid var(--line);font-size:9px;color:var(--muted)}.image-preview:not([src]){color:transparent}.file-label{min-height:44px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:var(--input);font-size:12px!important;cursor:pointer;display:inline-flex;align-items:center}.file-label input{position:absolute;opacity:0;width:1px!important;height:1px!important;min-height:0!important;overflow:hidden;padding:0!important;pointer-events:none}.file-label:focus-within{outline:3px solid var(--green);outline-offset:2px}.toast{position:fixed;z-index:100;left:50%;bottom:calc(25px + var(--safe-bottom));max-width:calc(100% - 40px);padding:13px 20px;border-radius:14px;background:#243d30;color:#f3f7ed;box-shadow:0 6px 25px #10291b20;font-size:13px;opacity:0;transform:translate(-50%,8px);pointer-events:none;transition:opacity 180ms ease,transform 180ms var(--ease);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(hover:hover) and (pointer:fine){.nav a:not(.active):hover{background:var(--input);color:var(--ink)}.btn-primary:hover{filter:brightness(.93)}.btn-secondary:hover,.icon-btn:hover,.backup-button:hover{background:var(--input)}.text-button:hover{color:var(--green-dark)}.wish-invitation:hover,.preview-card:hover{border-color:var(--green)}.balance-eye:hover{color:#fff}.btn-light:hover{background:#f2f7e7}.btn-glass:hover{background:#ffffff22}}
@media(min-width:1450px){main{padding:47px 58px}.balance-card{min-height:285px}.balance-number{font-size:51px}.wallet-art{right:37px;top:47px}.chart-wrap{height:229px}}
@media(max-width:1160px){.app{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:32px 17px 20px}main{padding:34px 28px 25px}.page-title{font-size:26px}.overview-top,.dashboard-grid{grid-template-columns:minmax(0,1.4fr) minmax(230px,1fr);gap:16px}.balance-card{padding:22px;min-height:260px}.wallet-art{right:5px;transform:scale(.8);transform-origin:right center;opacity:.62}.stat{padding:17px;gap:12px}.stat-value{font-size:23px}.stat-icon{width:37px;height:37px;border-radius:12px}.panel-head{padding:21px 20px 14px}.planner-form{padding:0 20px}.plan-list{margin-inline:20px}.panel-title{font-size:16px}.chart-wrap{height:212px}.chart-footer{margin-inline:20px}.chart-footer span:last-child{font-size:8px}.date-chip{max-width:90px;white-space:normal;text-align:right}.item-card{column-gap:15px}.settings-grid{grid-template-columns:1fr 1fr}.settings-panel{padding:20px}}
@media(max-width:880px) and (min-width:701px){.app{grid-template-columns:88px minmax(0,1fr)}.sidebar{padding:28px 13px}.brand{padding:0;justify-content:center}.brand>span:last-child,.nav-caption,.nav a span,.sidebar-bottom,.nav a i{display:none!important}.nav{margin-top:45px}.nav a{justify-content:center;padding:16px}.page-title{font-size:25px}.settings-grid{grid-template-columns:1fr}.wallet-art{opacity:.45}.balance-number{font-size:34px}.balance-actions .btn{min-width:0;flex:1;padding:10px}.stat-caption{font-size:9px}.stat{gap:9px;padding:14px}.stat-icon{width:30px;height:34px}}
@media(max-width:700px){html{scrollbar-gutter:auto}.app{display:block}.sidebar{position:fixed;inset:auto max(14px,env(safe-area-inset-right,0px)) calc(10px + var(--safe-bottom)) max(14px,env(safe-area-inset-left,0px));height:69px;padding:5px 8px;border:1px solid #ffffff90;border-radius:26px;background:var(--glass);box-shadow:0 8px 32px #273d3117,0 1px 4px #273d3108;backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);z-index:20;max-width:470px;margin:0 auto}.brand,.nav-caption,.sidebar-bottom{display:none}.nav{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;height:100%}.nav a{min-height:0;flex-direction:column;justify-content:center;gap:3px;padding:6px 8px;border-radius:21px;font-size:10px}.nav a svg{width:21px;height:21px;stroke-width:1.65}.nav a.active{background:var(--green-soft);color:var(--green-dark)}.nav a i{display:none!important}main{padding:calc(26px + var(--safe-top)) max(20px,env(safe-area-inset-right,0px)) calc(110px + var(--safe-bottom)) max(20px,env(safe-area-inset-left,0px));max-width:560px}.topbar{align-items:center;margin-bottom:23px;gap:10px}.eyebrow{font-size:8px;letter-spacing:.17em;margin-bottom:7px}.page-title{font-size:25px;letter-spacing:.015em}.page-subtitle{font-size:11px;margin-top:5px}.header-tools{gap:0}.date-chip{display:none}.avatar{width:39px;height:39px}.avatar svg{width:19px;height:19px}.overview-top{display:flex;flex-direction:column;gap:14px;margin-bottom:22px}.balance-card{min-height:252px;border-radius:24px;padding:23px 24px}.balance-top{font-size:12px}.balance-label{margin-top:22px;font-size:11px}.balance-number{font-size:43px;max-width:95%}.balance-caption{font-size:10px}.balance-actions{margin-top:22px;gap:10px}.balance-actions .btn{min-height:43px;min-width:105px;padding:10px 17px;font-size:12px}.wallet-art{right:12px;top:44px;transform:scale(.88);opacity:.77}.summary-stack{grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:12px}.stat{border-radius:18px;display:block;padding:16px 17px;position:relative;min-height:111px}.stat-icon{position:absolute;right:14px;top:13px;width:25px;height:25px;border-radius:9px}.stat-icon svg{width:15px;height:15px}.stat-label{font-size:10px;padding-right:22px}.stat-value{font-size:22px;margin:10px 0 4px}.stat-caption{font-size:9px}.dashboard-grid{display:flex;flex-direction:column;gap:20px}.dashboard-grid>.panel{width:100%}.panel{border-radius:21px}.panel-head{padding:21px 21px 14px}.section-kicker{font-size:8px;letter-spacing:.14em}.panel-title{font-size:17px}.panel-hint{font-size:10px}.range-label{font-size:10px}.chart-wrap{height:170px;margin-inline:10px}.chart-footer{margin:6px 21px 0;padding:13px 0;font-size:9px}.chart-footer span:last-child{font-size:8px}.chart-empty{font-size:11px;padding-top:30px;inset:0 10px}.chart-empty:before{top:23px;width:43px;height:43px;left:calc(50% - 21px);font-size:24px}.planner-form{padding:0 21px;gap:8px}.planner .panel-head{padding-bottom:16px}.daily-field{padding:12px 15px}.daily-input input{font-size:32px}.planner-disclaimer{font-size:9px}.plan-list{margin:8px 21px 0}.home-wishes{margin-top:26px}.section-title{font-size:18px}.text-button{font-size:11px}.section-head{gap:10px;margin-bottom:14px}.wish-invitation{padding:20px 16px;gap:13px;border-radius:19px}.invitation-icon{width:43px;height:43px;border-radius:15px}.wish-invitation strong{font-size:13px}.wish-invitation small{font-size:10px;line-height:1.8}.invitation-plus{width:27px;height:27px}.page-footer{font-size:8px;gap:4px;padding-top:22px}.wish-preview-populated{grid-template-columns:1fr;gap:12px}.preview-card{padding:16px}.view-banner,.records-summary{padding:19px 18px;gap:13px;margin-bottom:22px}.banner-icon{width:41px;height:41px;border-radius:15px}.view-banner strong,.records-summary strong{font-size:13px}.view-banner p,.records-summary p{font-size:10px;line-height:1.8}.wishlist-head{flex-wrap:wrap;gap:15px}.wishlist-head .toolbar{width:100%;justify-content:space-between}.toolbar select{font-size:16px;max-width:190px}.tabs{padding:3px}.tabs button{font-size:12px;padding:7px 16px}.items-list{gap:13px}.item-card{grid-template-columns:66px minmax(0,1fr);padding:18px;column-gap:15px;row-gap:14px}.item-image{width:66px;height:66px;border-radius:15px;grid-row:auto}.item-name{font-size:15px}.item-price{font-size:22px}.item-meta{font-size:10px}.item-progress{grid-column:1/-1}.item-actions{grid-column:1/-1;gap:2px}.item-actions .icon-btn{margin-right:4px}.item-actions .btn{margin-left:auto}.empty-state{padding:53px 20px}.records-summary{display:flex}.records-summary .stat-icon{position:static;width:40px;height:40px}.records-summary .stat-icon svg{width:21px;height:21px}.records-head .section-title{font-size:16px;white-space:nowrap}.records-head .toolbar{gap:6px}.records-head .btn-small{font-size:11px;padding:8px 10px}.records-table-wrap{background:transparent;border:0;overflow:visible}.records-table{display:block}.records-table thead{display:none}.records-table tbody{display:grid;gap:12px}.records-table tr{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto auto auto;gap:7px 10px;background:var(--paper);padding:16px;border:1px solid var(--line);border-radius:17px}.records-table td{border:0;padding:0;min-width:0}.records-table td:first-child{grid-column:2;grid-row:1;align-self:center;font-size:10px;text-align:right}.records-table td:nth-child(2){grid-column:1;grid-row:1}.records-table td:nth-child(3){grid-column:1/3;grid-row:2;font-size:12px}.records-table td:nth-child(4){grid-column:1/3;grid-row:3;font-size:19px;margin-top:3px}.records-table td:nth-child(5){grid-column:3;grid-row:1/4;display:flex;flex-direction:column;justify-content:center;align-items:center;border-left:1px solid var(--line);padding-left:6px}.records-table .records-empty{grid-column:1/-1;grid-row:1/-1;padding:45px 15px!important;font-size:12px}.record-type{font-size:10px;padding:3px 7px}.record-note{max-width:none}.record-actions .icon-btn{width:44px;height:44px}.settings-grid{grid-template-columns:1fr;gap:16px}.profile-card{padding:6px 0 26px}.settings-panel{padding:22px}.theme-options{margin-top:18px;gap:12px}.theme-options button{min-height:85px}.privacy-note{margin-top:24px}.privacy-note p{font-size:11px}.toast{bottom:calc(94px + var(--safe-bottom));font-size:12px;padding:12px 17px;border-radius:13px;width:max-content;max-width:calc(100% - 40px)}dialog{position:fixed;inset:auto 0 var(--keyboard-inset,0px);width:100%;max-width:560px;max-height:calc(var(--visual-height,100dvh) - max(20px,var(--safe-top)));margin:0 auto;border:0;border-top:1px solid var(--line);border-radius:26px 26px 0 0;padding-bottom:var(--safe-bottom)}dialog .dialog-head:before{content:'';position:absolute;top:10px;left:calc(50% - 17px);width:34px;height:4px;border-radius:5px;background:var(--line)}.dialog-head{padding:27px 22px 18px}.dialog-title{font-size:21px}.dialog-body{padding:21px 22px 14px}.dialog-foot{padding:15px 22px 22px}.dialog-foot>.btn{flex:1;min-height:48px}.field input,.field select{min-height:50px}.image-upload{gap:8px}.file-label{font-size:12px!important}.field label{font-size:12px}}
@media(max-width:370px){main{padding-left:16px;padding-right:16px}.page-title{font-size:23px}.page-subtitle{font-size:10px}.balance-card{padding:22px}.balance-number{font-size:38px}.wallet-art{opacity:.5;right:0;transform:scale(.78)}.stat{padding:15px 13px}.stat-value{font-size:21px}.stat-icon{right:10px}.stat-caption{font-size:8px}.panel-head{padding-left:18px;padding-right:18px}.panel-title{font-size:16px}.planner-form{padding-inline:18px}.plan-list{margin-inline:18px}.chart-footer{margin-inline:18px}.chart-footer span:last-child{font-size:7px}.invitation-plus{display:none}.records-head{flex-wrap:wrap}.records-head .toolbar{margin-left:auto}.toolbar select{max-width:174px}.item-card{padding:16px}.settings-panel{padding:19px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}button:active:not(:disabled),.nav a:active{transform:none}.toast{transform:translate(-50%,0)}}
@media(prefers-contrast:more){:root{--muted:#536457;--line:#9baa9c}.sidebar{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--paper)}[data-theme=dark]{--muted:#c0cec3;--line:#6d8171}}
@media(prefers-reduced-transparency:reduce){.sidebar{background:var(--paper);backdrop-filter:none;-webkit-backdrop-filter:none}dialog::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}}
.toolbar select{font-size:16px}
/* 深色采用石墨灰与低饱和淡紫，避免绿色覆盖整张界面。 */
[data-theme=dark] .balance-card{background:linear-gradient(120deg,#34333d,#28282f);color:#f4f4f7;box-shadow:0 9px 24px #00000018}
[data-theme=dark] .balance-label,[data-theme=dark] .balance-caption,[data-theme=dark] .balance-eye{color:#c8c6d2}
[data-theme=dark] .brand-mark{background:#373340;color:#eeecf5;box-shadow:none}
[data-theme=dark] .profile-mark{background:#373340;color:#eeecf5}
[data-theme=dark] .title-dot,[data-theme=dark] .art-spark{color:#c3bddc}
[data-theme=dark] .live-dot,[data-theme=dark] .local-note>span,[data-theme=dark] .range-label>span{background:#b9b3d4}
[data-theme=dark] .btn-primary{color:#201d2c}
[data-theme=dark] .btn-light{background:#dedbe9;color:#302c3c}
[data-theme=dark] .btn-glass{color:#f4f4f7}
[data-theme=dark] .orbit{border-color:#c9c5e021}
[data-theme=dark] .coin{background:#c8c5d7;border-color:#e5e2ee;color:#7f7998;box-shadow:inset 0 0 0 7px #c1bdd0,inset 0 0 0 8px #e4e1ee,5px 7px 0 #817b92,14px 20px 28px #0000002b}
[data-theme=dark] .coin-back{background:#dbd8e6;color:#8b849f;box-shadow:inset 0 0 0 6px #cfcbdd,inset 0 0 0 7px #eae7f2,4px 5px 0 #9992aa,10px 15px 20px #0000001b}
[data-theme=dark] .progress-fill{background:#ada7c8}
[data-theme=dark] .is-purchased .progress-fill{background:#8b8997}
[data-theme=dark] #areaFill stop{stop-color:var(--blue)}
[data-theme=dark] .empty-state,[data-theme=dark] .wish-invitation{border-color:#45424e}
[data-theme=dark] .chart-empty:before{color:#b3acc7}
[data-theme=dark] .toast{background:#e2deed;color:#25222e}
[data-theme=dark] dialog::backdrop{background:rgba(0,0,0,.62)}
[data-theme=dark] .sidebar{border-color:var(--line);box-shadow:none}
.monthly-forecast{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:21px 25px;margin-bottom:22px}
.monthly-forecast h2{font-size:13px;font-weight:550;color:var(--muted)}
.monthly-forecast-value{font-size:29px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:2px;overflow-wrap:anywhere}
.monthly-forecast-copy{min-width:0;flex:1}.monthly-forecast-copy p{font-size:11px;color:var(--muted);line-height:1.8;margin-top:3px}
.monthly-forecast-copy .text-button{font-size:11px;min-height:36px;padding:0}
.forecast-form{display:grid;gap:16px;margin-top:20px}.forecast-note{font-size:11px;color:var(--muted);line-height:1.9}.forecast-note strong{color:var(--ink);font-weight:550}
.goal-estimate{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:11px;color:var(--green);line-height:1.7;overflow-wrap:anywhere}
.goal-estimate small{display:block;font-size:10px;color:var(--muted)}.preview-estimate{font-size:10px;color:var(--green);display:block;margin-top:7px}
.avatar,.profile-mark{overflow:hidden}.avatar img,.profile-mark img{display:block;width:100%;height:100%;object-fit:cover}
.profile-avatar-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:13px}.profile-avatar-actions .btn{font-size:11px;min-height:44px}
.profile-avatar-actions label{cursor:pointer;touch-action:manipulation}.profile-avatar-hint{font-size:10px!important;color:var(--muted);margin-top:8px!important}.profile-card .form-error{min-height:0;font-size:11px;margin-top:8px}
.profile-avatar-actions:focus-within label{outline:2px solid var(--green);outline-offset:2px}
.form-error[data-state=success],.profile-card .form-error[data-state=success]{color:var(--green)}.form-error[data-state=error],.profile-card .form-error[data-state=error]{color:var(--red)}
.profile-card h2{overflow-wrap:anywhere}.cloud-account-actions{flex-wrap:wrap}.account-help{font-size:11px;color:var(--muted);line-height:1.8}.account-result{font-size:12px;color:var(--green);margin-top:12px;overflow-wrap:anywhere}
@media(max-width:700px){.monthly-forecast{padding:19px 21px;gap:12px;align-items:flex-start;flex-direction:column}.monthly-forecast-value{font-size:28px}.monthly-forecast-copy{width:100%}.monthly-forecast-copy .text-button{float:right;min-height:44px}.monthly-forecast-copy p{max-width:100%}.forecast-form .btn{width:100%}.cloud-account-actions>.btn{flex:1;padding-inline:12px;font-size:12px}}
@media(prefers-contrast:more){:root[data-theme=dark]{--muted:#d0cdd9;--line:#7b7788}}
.app.cloud-locked{visibility:hidden}.cloud-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-12px 2px 22px}.sync-status{display:flex;align-items:center;gap:7px;min-height:32px;padding:4px 0;background:transparent;color:var(--green);font-size:11px;text-align:left}.sync-status:before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.sync-status[data-state=error],.sync-status[data-state=offline],.sync-status[data-state=conflict]{color:var(--amber)}.sync-hint{font-size:10px;color:var(--muted)}.cloud-login{inset:0;width:min(440px,calc(100% - 36px));margin:auto;border-radius:25px;max-height:calc(var(--visual-height,100dvh) - 40px)}.cloud-login .dialog-head{border-bottom:0;padding-bottom:0}.cloud-login .dialog-title{font-size:25px;margin-top:12px}.cloud-login .dialog-sub{line-height:1.9}.cloud-login .dialog-foot{border-top:0;padding-top:0}.cloud-login .dialog-foot>.btn{width:100%}.cloud-login .dialog-head:before{display:none}.cloud-privacy{font-size:10px;color:var(--muted);text-align:center}.cloud-account{grid-column:1/-1}.cloud-account-actions{display:flex;gap:10px;margin-top:20px}.cloud-account-note{font-size:11px!important;margin-top:16px!important;line-height:1.8}.cloud-conflict-note{color:var(--muted);font-size:12px;line-height:1.9}.cloud-conflict-actions{flex-wrap:wrap}.cloud-conflict-actions>.btn{flex:1;white-space:normal;line-height:1.5}.cloud-backup-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.cloud-backup-actions>.btn{font-size:11px;padding:10px 8px}.cloud-toolbar .sync-status{min-height:44px}
/* iPad full screen, Split View and hardware keyboard share the same responsive layout. */
@media(min-width:701px){main{padding-top:calc(34px + var(--safe-top));padding-bottom:calc(28px + var(--safe-bottom));padding-right:max(28px,env(safe-area-inset-right,0px))}.sidebar{padding-top:calc(32px + var(--safe-top));padding-left:max(17px,env(safe-area-inset-left,0px));padding-bottom:calc(20px + var(--safe-bottom))}dialog{max-height:calc(var(--visual-height,100dvh) - 48px);margin-top:auto;margin-bottom:auto}}
@media(min-width:1161px){main{padding-top:calc(42px + var(--safe-top));padding-right:max(48px,env(safe-area-inset-right,0px))}.sidebar{padding-top:calc(39px + var(--safe-top));padding-left:max(23px,env(safe-area-inset-left,0px))}}
@media(pointer:coarse){input,textarea,select,.toolbar select{font-size:16px}.segmented button,.tabs button,.avatar{min-height:44px;min-width:44px}.file-label{min-height:48px}.daily-input input{font-size:30px}}
@media(min-width:701px) and (max-height:550px){.app{grid-template-columns:88px minmax(0,1fr)}.sidebar{padding-top:calc(18px + var(--safe-top));padding-inline:12px;overflow:auto}.brand{padding:0;justify-content:center}.brand>span:last-child,.nav-caption,.nav a span,.sidebar-bottom,.nav a i{display:none!important}.nav{margin-top:20px;gap:5px}.nav a{padding:12px;justify-content:center;min-height:44px}.topbar{margin-bottom:20px}main{padding-left:max(24px,env(safe-area-inset-left,0px))}.wallet-art{opacity:.55}dialog{inset:12px 0 auto;max-height:calc(var(--visual-height,100dvh) - 24px);margin:0 auto;max-width:510px}}
