:root{color-scheme:light;font-family:Inter,SF Pro Display,PingFang SC,Microsoft YaHei,system-ui,sans-serif;background:#eef3ee;color:#17211f;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 20% 15%,rgba(44,139,101,.16),transparent 34rem),linear-gradient(135deg,#f6f7f2,#eef4f0 46%,#f8f4ea)}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:290px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;display:flex;flex-direction:column;gap:22px;height:100vh;padding:28px 20px;border-right:1px solid rgba(23,33,31,.08);background:#f3faf4c7;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;width:52px;height:52px;place-items:center;border-radius:16px;background:#0f766e;color:#fff;font-size:28px;font-weight:800;box-shadow:0 14px 30px #0f766e40}.brand strong{display:block;font-size:20px}.brand span,.mini-summary span,.mini-summary small,.page-title p,.section-head p,.stat-card p,.transaction-row span,.goal-card span,.bill-card p,.settings-card span{color:#70807b}.primary-action,.small-button,.inline-form button,.submit-button,.mobile-add{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:16px;background:#17856f;color:#fff;font-weight:750;box-shadow:0 14px 26px #17856f38}.primary-action{width:100%;min-height:56px;font-size:17px}.nav-list{display:grid;gap:8px}.nav-button{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 14px;border:0;border-radius:14px;background:transparent;color:#3d4a47;text-align:left}.nav-button.active{background:#1f8a70;color:#fff;box-shadow:0 14px 24px #1f8a7033}.mini-summary{display:grid;gap:10px;margin-top:auto;padding:18px;border:1px solid rgba(23,33,31,.08);border-radius:20px;background:#ffffffbd;box-shadow:0 18px 42px #20373214}.mini-summary strong{color:#17856f;font-size:28px}.workspace{min-width:0;padding:24px min(5vw,54px) 44px}.topbar{display:flex;align-items:center;gap:12px;margin-bottom:22px}.search-box{display:flex;align-items:center;gap:10px;flex:1;max-width:760px;height:54px;padding:0 18px;border:1px solid rgba(23,33,31,.1);border-radius:18px;background:#fffc;color:#6d7976}.search-box input,.inline-form input,.inline-form select,.entry-dialog input,.entry-dialog select,.entry-dialog textarea{width:100%;border:1px solid rgba(23,33,31,.1);border-radius:14px;background:#fffdf8;color:#17211f;outline:0}.search-box input{border:0;background:transparent;font-size:16px}.icon-button,.avatar,.ghost-icon{display:grid;place-items:center;border:1px solid rgba(23,33,31,.1);background:#ffffffd1;color:#263330}.icon-button,.avatar{width:52px;height:52px;border-radius:16px;flex-shrink:0}.avatar{border:0;background:#ee9554;color:#fff;font-weight:850}.page{display:grid;gap:22px;max-width:1040px}.hero-panel{position:relative;overflow:hidden;display:grid;gap:24px;padding:32px;border-radius:32px;background:linear-gradient(135deg,#18806e,#53b581);color:#fff;box-shadow:0 24px 48px #18806e3d}.hero-panel p,.hero-panel h1{margin:0}.hero-panel h1{margin-top:12px;font-size:48px;line-height:1;letter-spacing:0}.sparkline{width:100%;height:108px}.sparkline polyline{fill:none;stroke:#ffffffdb;stroke-width:4;vector-effect:non-scaling-stroke}.hero-metrics,.grid.two,.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.metric{padding:18px;border:1px solid rgba(255,255,255,.28);border-radius:18px;background:#ffffff24}.metric span,.stat-card span,.account-card span,.bill-card span{display:block;margin-bottom:10px;color:#70807b;font-size:14px;font-weight:700}.metric span{color:#ffffffc7}.metric strong{font-size:24px}.grid.two{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat-card,.panel,.list-panel,.account-card,.budget-card,.goal-card,.bill-card,.settings-card{border:1px solid rgba(23,33,31,.08);border-radius:24px;background:#ffffffc7;box-shadow:0 18px 46px #20373214}.stat-card{padding:20px}.stat-card strong{display:block;font-size:28px}.stat-card p{margin:10px 0 0}.panel{padding:24px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.section-head h2,.section-head p,.page-title h1,.page-title p{margin:0}.section-head h2,.page-title h1{font-size:30px;letter-spacing:0}.small-button{min-height:42px;padding:0 16px;border-radius:14px}.bars,.trend-list{display:grid;gap:14px}.trend-row{display:grid;grid-template-columns:46px minmax(0,1fr) 110px;align-items:center;gap:14px}.trend-row>span{color:#70807b;font-weight:750}.trend-bars{display:grid;gap:6px}.trend-bars i{display:block;min-width:4px;height:9px;border-radius:99px}.income-bar{background:#31a37d}.expense-bar{background:#ee9554}.bar-row{display:grid;grid-template-columns:70px minmax(0,1fr) 110px;align-items:center;gap:14px}.bar-track,.progress{overflow:hidden;height:10px;border-radius:99px;background:#e8e3d8}.bar-track i,.progress span{display:block;height:100%;border-radius:inherit;background:#31a37d}.insights{display:grid;gap:12px;margin:0;padding-left:20px;color:#3f4d49}.search-group{display:grid;gap:14px}.search-group h2{margin:0;font-size:22px}.search-result-list{display:grid;gap:10px}.search-result-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;border:1px solid rgba(23,33,31,.08);border-radius:16px;background:#ffffffbd}.search-result-item span{display:block;margin-top:5px;color:#70807b;font-size:14px}.page-title{display:grid;gap:8px;padding:10px 2px}.list-panel{overflow:hidden}.transaction-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto 84px;align-items:center;gap:14px;padding:16px;border-bottom:1px solid rgba(23,33,31,.08)}.transaction-row:last-child{border-bottom:0}.transaction-row strong,.transaction-row span{display:block}.transaction-row span{margin-top:5px;font-size:14px}.row-icon{display:grid;width:44px;height:44px;place-items:center;border-radius:14px}.row-icon.income{background:#e7f6ed;color:#16815f}.row-icon.expense{background:#fff0ed;color:#c75f50}.row-icon.transfer{background:#eef1ff;color:#5f63d9}.income-text{color:#16815f}.expense-text{color:#cf6f7a}.transfer-text{color:#5f63d9}.ghost-icon{width:38px;height:38px;border-radius:12px}.inline-form{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:12px}.inline-form input,.inline-form select,.entry-dialog input,.entry-dialog select,.entry-dialog textarea{min-height:48px;padding:0 14px}.inline-form button{min-height:48px;padding:0 18px}.card-grid,.goal-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.account-card,.fixed-asset-card,.budget-card,.bill-card,.goal-card,.settings-card{position:relative;padding:22px}.account-card h3,.fixed-asset-card h3,.budget-card h3,.bill-card h3,.goal-card h3{margin:0 0 12px;font-size:22px}.account-card strong,.fixed-asset-card strong,.bill-card strong{display:block;font-size:30px}.account-card .ghost-icon,.fixed-asset-card .ghost-icon,.bill-card .ghost-icon{position:absolute;right:16px;bottom:16px}.card-actions{display:flex;align-items:center;gap:8px;margin-top:18px}.account-card .card-actions .ghost-icon,.fixed-asset-card .card-actions .ghost-icon,.bill-card .card-actions .ghost-icon{position:static}.mini-button{min-height:38px;padding:0 12px;border:1px solid rgba(23,33,31,.1);border-radius:12px;background:#ffffffb8;color:#263330;font-weight:750}.inline-actions{display:flex;gap:8px}.account-card.bank,.account-card.wallet{background:linear-gradient(135deg,#ffffffe0,#dff4ebd6)}.account-card.debt{background:linear-gradient(135deg,#ffffffe0,#ffe8e0cc)}.fixed-asset-card{border:1px solid rgba(23,33,31,.08);border-radius:24px;background:#ffffffc7;box-shadow:0 18px 46px #20373214}.fixed-asset-card.vehicle,.fixed-asset-card.device{background:linear-gradient(135deg,#ffffffe6,#e8f1f7e0)}.fixed-asset-card span,.fixed-asset-card p{color:#70807b}.asset-icon{display:grid;width:46px;height:46px;place-items:center;margin-bottom:14px;border-radius:15px;background:#eef5f1;color:#17856f}.asset-total{display:flex;align-items:center;gap:12px;padding:18px 20px;border:1px solid rgba(23,33,31,.08);border-radius:22px;background:#ffffffc7;box-shadow:0 18px 46px #20373214}.asset-total span{color:#70807b}.asset-total strong{margin-left:auto;font-size:26px}.goal-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px}.budget-summary,.budget-list{display:grid;gap:18px}.budget-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.budget-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px}.budget-card span{color:#70807b}.budget-card.over .progress span{background:#d96b5f}.budget-card.over strong{color:#b24d43}.goal-card .progress,.budget-card .progress{grid-column:1 / -1}.small-danger{justify-self:start;border:0;border-radius:12px;background:#fff0ed;color:#b24d43;padding:8px 12px}.settings-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.settings-card{display:grid;gap:10px;min-height:150px;border:1px solid rgba(23,33,31,.08);text-align:left}.settings-card.danger{color:#a8453d}.offline-status{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:18px 0;border-block:1px solid rgba(23,33,31,.08);color:#176f5e}.offline-status>div{flex:1 1 180px;min-width:0}.offline-status p{margin:6px 0;color:#53605d;overflow-wrap:anywhere}.offline-status span{font-size:12px;color:#53605d}.offline-status button{display:inline-flex;align-items:center;gap:8px}.empty-state,.notice{display:grid;gap:6px;padding:18px;border:1px solid rgba(23,33,31,.08);border-radius:18px;background:#ffffffb8;color:#53605d}.empty-state strong{color:#23302d}.notice{border-color:#17856f33;background:#e7f6edcc;color:#176f5e}.dialog-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:#0f191661;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.entry-dialog{display:grid;gap:14px;width:min(560px,100%);max-height:min(760px,92vh);overflow:auto;padding:24px;border-radius:28px;background:#fff;box-shadow:0 28px 90px #0f191652}.dialog-head,.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-head h2{margin:0}.segmented{display:grid;grid-template-columns:repeat(3,1fr);padding:4px;border-radius:16px;background:#eef3ee}.segmented button{min-height:44px;border:0;border-radius:13px;background:transparent;color:#52625e;font-weight:750}.segmented button.selected{background:#fff;color:#0f766e;box-shadow:0 8px 18px #20373214}.entry-dialog label{display:grid;gap:8px;color:#65736f;font-size:14px;font-weight:700}.entry-dialog textarea{min-height:92px;padding-top:12px;resize:vertical}.secondary-button,.submit-button{min-height:48px;padding:0 24px;border-radius:14px;font-weight:750}.secondary-button{border:1px solid rgba(23,33,31,.12);background:#fff;color:#34423f}.mobile-tabs{display:none}@media(max-width:980px){.app-shell{display:block}.sidebar{display:none}.workspace{padding:max(18px,env(safe-area-inset-top)) 14px 96px}.topbar{position:sticky;top:0;z-index:10;margin:-18px -14px 16px;padding:max(14px,env(safe-area-inset-top)) 14px 12px;background:#f6f7f2db;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.search-box{height:48px}.icon-button{width:44px;height:44px}.avatar{width:48px;height:48px}.hero-panel{padding:24px;border-radius:26px}.hero-metrics,.budget-summary,.settings-grid,.card-grid,.goal-list,.inline-form{grid-template-columns:1fr}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.hero-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.metric{padding:12px 8px;min-width:0}.metric strong{font-size:16px}.metric strong,.stat-card strong{font-size:22px}.section-head{align-items:flex-start;flex-direction:column}.bar-row{grid-template-columns:56px minmax(0,1fr)}.bar-row b{grid-column:2}.trend-row{grid-template-columns:42px minmax(0,1fr)}.trend-row b{grid-column:2}.transaction-row{grid-template-columns:36px minmax(0,1fr) 84px;gap:10px}.transaction-row>b{grid-row:2;grid-column:2 / -1}.transaction-row .row-icon{width:34px;height:34px}.mobile-tabs{position:fixed;right:12px;bottom:max(12px,env(safe-area-inset-bottom));left:12px;z-index:15;display:grid;grid-template-columns:1fr 1fr 58px 1fr 1fr;align-items:center;gap:4px;padding:8px;border:1px solid rgba(23,33,31,.08);border-radius:26px;background:#ffffffe0;box-shadow:0 18px 46px #20373229;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.mobile-tabs .nav-button{display:grid;place-items:center;gap:3px;min-height:54px;padding:0;font-size:12px;text-align:center}.mobile-tabs .nav-button.active{background:transparent;color:#0f766e;box-shadow:none}.mobile-add{width:52px;height:52px;border-radius:19px}}@media(max-width:520px){.hero-panel h1{font-size:34px}.page-title h1,.section-head h2{font-size:25px}.panel,.entry-dialog{padding:18px;border-radius:22px}.stat-card,.account-card,.budget-card,.goal-card,.fixed-asset-card,.bill-card,.settings-card{border-radius:20px}}input,select,textarea,.search-box,.row-actions,.inline-form>*,.card-grid>*,.goal-list>*{min-width:0}input,select,textarea{font-size:16px}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #46a78b;outline-offset:3px}h1,h3,.stat-card strong,.account-card strong,.fixed-asset-card strong,.transaction-row strong,.transaction-row span,.search-result-item,.hero-metrics strong,.asset-total strong{overflow-wrap:anywhere}.net-worth-label{display:block;margin-top:18px;opacity:.8}.asset-breakdown{display:flex;flex-wrap:wrap;gap:14px 24px;font-size:14px}.asset-breakdown b{display:block;margin-top:6px;font-size:16px;overflow-wrap:anywhere}.version-label{color:#70807b;font-size:12px;white-space:nowrap}.month-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;max-width:1040px;margin-bottom:18px;color:#64716d;font-size:13px}.month-controls{display:flex;align-items:center;gap:8px}.month-toolbar select{width:140px;height:40px;appearance:none;padding:6px 28px 6px 8px;border:1px solid #d7e2dc;border-radius:8px;background:#fff}.month-picker{position:relative;flex-shrink:0}.month-picker svg{position:absolute;right:8px;top:12px;pointer-events:none}.month-controls .icon-button{width:32px;height:40px;flex-shrink:0}.month-controls .mini-button{min-height:40px;padding:6px 8px;white-space:nowrap}.row-actions{display:flex;gap:8px}.transaction-note{overflow-wrap:anywhere}.more-menu{display:grid;gap:8px;width:min(420px,100%);padding:20px;border-radius:20px;background:#fff}.more-menu h2{font-size:22px}.toast{position:fixed;z-index:30;top:max(14px,env(safe-area-inset-top));left:50%;transform:translate(-50%);max-width:calc(100vw - 28px);padding:12px 18px;border-radius:8px;background:#17211f;color:#fff;box-shadow:0 8px 24px #0002;pointer-events:none}.error-notice{margin-bottom:18px;color:#a33b35;background:#fff1ee;border-color:#e9b5af}.example-notice{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;max-width:1040px;margin-bottom:16px;padding:12px;border-radius:8px;background:#f5ebca;color:#735f22;font-size:14px}.accounting-note{margin:0;color:#64716d;font-size:13px}.trend-legend,.trend-legend>span{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#64716d;font-size:12px}.trend-legend{gap:16px}.trend-legend i{width:12px;height:8px;border-radius:2px}.form-error{margin:0;color:#a33b35}.transfer-note{margin:0;color:#64716d;font-size:13px;line-height:1.6}.local-boundary{display:flex;gap:14px;padding:18px 0;border-top:1px solid #d7e2dc;border-bottom:1px solid #d7e2dc;line-height:1.7}.local-boundary>svg{flex-shrink:0;color:#17856f}.local-boundary p{margin:8px 0}.local-boundary span{color:#64716d;font-size:13px}.data-reset-actions{display:flex;flex-wrap:wrap;gap:12px}.import-preview{padding:18px 0;border-block:1px solid #d7e2dc}.entry-dialog{max-height:calc(100dvh - 40px);overscroll-behavior:contain}@media(max-width:520px){.month-toolbar{flex-wrap:wrap}.search-box{padding:0 12px}.version-label{display:none}.stat-card{padding:16px}.metric strong{font-size:15px}.dialog-actions>button{flex:1}.workspace{padding-bottom:calc(112px + env(safe-area-inset-bottom))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}}
