:root{--bg:#f4f4f0;--surface:#ffffff;--surface-2:#ededE8;--ink:#111111;--muted:#6c6c67;--faint:#9b9b94;--line:#d8d8d0;--line-strong:#111111;--chart-blue:#829cad;--chart-red:#bd8270;--chart-blue-soft:#b4c3cc;--chart-red-soft:#d9b8ad;--danger:#d7422f;--success:var(--ink);--shadow:0 18px 48px rgba(17,17,17,0.08)}*{box-sizing:border-box;scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{display:none;width:0;height:0}html{background:var(--bg)}body,html{overflow-x:hidden}body{margin:0;color:var(--ink);background:linear-gradient(180deg,rgba(255,255,255,.78),rgba(244,244,240,0) 280px),var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;letter-spacing:0}button,input,select,textarea{font:inherit}button{cursor:pointer}article,div,form,header,main,nav,section{min-width:0}a{color:inherit}.app-shell{width:100%;max-width:1180px;margin:0 auto;padding:14px 10px 88px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:4px 0 14px}.tagline{margin-top:4px;color:var(--muted);font-size:13px;font-weight:700}.brand{font-size:clamp(28px,13vw,54px);font-weight:850;line-height:1}.mobile-tabs,.tabs{border:1px solid var(--line);background:rgba(255,255,255,.74);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.tabs{display:none;gap:4px;padding:5px}.tab{min-height:40px;border:0;background:transparent;color:var(--muted);padding:0 15px}.mobile-tabs button.active,.tab.active{background:var(--ink);color:white}.mobile-tabs{position:fixed;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));z-index:20;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:4px;gap:4px;padding:5px;box-shadow:var(--shadow)}.mobile-tabs button{min-height:46px;border:0;background:transparent;color:var(--muted)}.analytics-grid,.entry-grid,.settings-grid{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px;width:100%}.command-panel,.metric-card,.panel{background:rgba(255,255,255,.9);border:1px solid var(--line);box-shadow:var(--shadow)}.command-panel,.panel{padding:12px}.panel-head{justify-content:space-between;gap:10px;margin-bottom:14px;color:var(--muted);font-size:12px;font-weight:760;text-transform:uppercase}.panel-actions,.panel-head{display:flex;align-items:center}.panel-actions{justify-content:flex-end;gap:8px;min-width:0}.draft-total{margin:-6px 0 14px;font-size:24px;font-weight:820}.command-panel{border-color:var(--line-strong)}.command-input{width:100%;max-width:100%;min-height:clamp(112px,22svh,180px);resize:none;border:0;outline:0;background:transparent;color:var(--ink);font-size:clamp(18px,5.8vw,28px);font-weight:760;line-height:1.25;overflow-wrap:anywhere}.command-input::placeholder{color:#b6b6ae}.action-row{display:flex;flex-wrap:wrap;gap:10px}.multi-draft-area{min-width:0}.multi-draft-toolbar{display:grid;grid-gap:12px;gap:12px;align-items:center;margin-bottom:10px}.multi-draft-toolbar strong{display:block;font-size:15px}.multi-draft-toolbar .hint{margin:4px 0 0}.draft-carousel{display:flex;gap:10px;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding-bottom:6px}.draft-slide{flex:0 0 100%;min-width:0;display:grid;grid-gap:8px;gap:8px;scroll-snap-align:start}.draft-slide-meta{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px;font-weight:760}.multi-draft-actions{margin-top:10px}.multi-draft-actions .primary-button{width:100%}.chart-controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.segmented-control{display:inline-grid;grid-template-columns:repeat(3,1fr);min-height:36px;border:1px solid var(--line);background:var(--surface)}.segmented-control button{min-width:48px;border:0;border-left:1px solid var(--line);background:transparent;color:var(--muted);padding:0 10px;font-size:12px;font-weight:760}.segmented-control button:first-child{border-left:0}.segmented-control button.active{background:var(--ink);color:white}.button,.ghost-button,.primary-button,.text-button{min-height:44px;border:1px solid var(--line-strong);padding:0 14px;white-space:nowrap}.button,.primary-button{background:var(--ink);color:white;font-weight:760}.button.secondary,.ghost-button{background:var(--surface);color:var(--ink)}.button:disabled,.primary-button:disabled{opacity:.42;cursor:not-allowed}.text-button{min-height:34px;border-color:var(--line);background:transparent;color:var(--muted)}.button.danger{background:#fff;color:var(--danger);border-color:var(--danger)}.split{grid-template-columns:minmax(0,1fr)}.list,.record-list,.split,.stack-list{display:grid;grid-gap:10px;gap:10px}.model-list{display:grid;grid-gap:8px;gap:8px;padding-top:10px}.model-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:center}.model-row>button{min-height:44px;width:auto}.add-row{margin-top:12px}.settings-panel{max-width:760px;margin:0 auto;width:100%}.setting-group{border:1px solid var(--line);background:var(--surface)}.setting-group+.setting-group{margin-top:10px}.setting-group summary{min-height:58px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;grid-gap:12px;gap:12px;padding:0 14px;cursor:pointer;list-style:none}.setting-group summary::-webkit-details-marker{display:none}.setting-group summary:after{content:"+";width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);color:var(--muted)}.setting-group[open] summary:after{content:"-"}.setting-group summary span{font-weight:760}.setting-group summary small{color:var(--muted);justify-self:end}.setting-group .add-row,.setting-group .model-list{margin:0 12px 12px}.full-width{width:100%;margin-top:12px}.field{display:grid;grid-template-columns:minmax(0,1fr);min-width:0;max-width:100%;grid-gap:6px;gap:6px}.field label{color:var(--muted);font-size:12px;font-weight:700}.suggestion-row{display:flex;gap:8px;overflow-x:auto;padding:2px 0 4px}.suggestion-chip{flex:0 0 auto;max-width:160px;min-height:34px;border:1px solid var(--line);background:var(--surface);color:var(--muted);padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-input,.compact-select,.input,.select,.textarea{width:100%;min-height:44px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:11px;min-width:0}.input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;inline-size:100%;max-inline-size:100%;min-inline-size:0;text-align:left}.input[type=date]::-webkit-date-and-time-value{min-height:1.4em;min-width:0;text-align:left}.compact-select{width:auto;min-width:116px;min-height:36px;padding:6px 10px}.textarea{min-height:96px;resize:vertical}.code-input{min-height:220px;resize:vertical;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.55}.empty,.footer,.hint{color:var(--muted);font-size:13px;line-height:1.6}.list-row{border:1px solid var(--line);background:var(--surface);padding:14px}.metric-card span{display:block;color:var(--muted);font-size:12px;font-weight:700}.metric-card strong{display:block;margin-top:8px;font-size:24px;line-height:1}.metric-board{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}.metric-card{padding:18px}.metric-card.dark{background:var(--ink);color:white;border-color:var(--ink)}.metric-card.dark span{color:#d7d7d2}.chart{width:100%;height:clamp(220px,58vw,300px)}.list-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.compact .list-row{padding:11px 0;border-width:0 0 1px;background:transparent}.record-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(112px,auto);grid-gap:12px;gap:12px;align-items:center;border:1px solid var(--line);background:var(--surface);padding:11px 12px}.record-card h3{margin:0;font-size:15px;overflow-wrap:anywhere}.record-card p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.4;overflow-wrap:anywhere}.record-main{min-width:0}.record-title-row{display:flex;align-items:baseline;gap:8px;min-width:0}.record-title-row span{min-width:0;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-side{display:flex;flex-direction:column;justify-items:end;align-items:flex-end;gap:6px}.record-side strong{order:-1;font-size:15px;line-height:1.1;white-space:nowrap}.record-side>.text-button{display:none}.record-actions{display:flex;justify-content:flex-end;gap:6px}.record-actions .text-button{min-height:28px;padding:0 9px;font-size:12px}.danger-text{color:var(--danger)}.modal-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:rgba(18,18,18,.24)}.modal-panel{width:min(680px,100%);max-height:min(760px,calc(100svh - 36px));overflow-y:auto;background:var(--paper);border:1px solid var(--line-strong);box-shadow:var(--shadow)}.modal-head{position:-webkit-sticky;position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--paper)}.modal-head strong{font-size:15px}.negative{color:var(--danger)}.positive{color:var(--success)}.notice{margin-bottom:14px;border:1px solid;background:var(--surface);padding:12px 14px;font-size:13px;line-height:1.5}.notice.error{color:var(--danger)}.notice.success{color:var(--success)}.footer{padding:18px 2px 0}@media (min-width:900px){.app-shell{padding:28px}.tabs{display:flex}.mobile-tabs{display:none}.entry-grid{grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);align-items:start}.analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-board{grid-column:1/-1;grid-template-columns:repeat(3,1fr)}.wide{grid-column:span 2}.split{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:760px) and (max-width:899px){.tabs{display:flex}.mobile-tabs{display:none}.app-shell{padding:22px}.split{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:420px){.topbar{align-items:flex-start}.panel-head{gap:8px;margin-bottom:10px}.command-panel{padding:10px}.command-input{font-size:clamp(18px,5.8vw,24px);min-height:116px}.multi-draft-toolbar{grid-template-columns:1fr}.chart-controls{width:100%;justify-content:space-between}.chart-controls .compact-select{flex:1 1 112px;min-width:0}.button,.ghost-button,.primary-button{flex:1 1 120px}.record-card{grid-template-columns:minmax(0,1fr) minmax(96px,auto)}.record-side{align-items:flex-end}}.analytics-page,.analytics-results{display:grid;grid-gap:12px;gap:12px}.analytics-filter{padding:18px 16px 14px;border-top:3px solid var(--line-strong)}.analytics-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px}.eyebrow{margin:0 0 6px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.08em}.analytics-heading h1{margin:0;font-size:clamp(24px,6vw,32px);line-height:1.2;letter-spacing:-.04em}.chart-subtitle,.chart-unit,.period-count{color:var(--muted);font-size:12px;font-weight:500}.chart-unit,.period-count{white-space:nowrap;flex-shrink:0}.period-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-gap:8px;gap:8px}.period-controls>button{min-height:44px;padding:0 16px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}.period-controls>button.active{background:var(--ink);border-color:var(--ink);color:var(--surface)}.month-picker{display:flex;min-width:0}.month-picker input{display:block;width:100%;min-width:0;min-height:44px;padding:8px 10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:16px}.accounting-note,.period-hint{color:var(--muted);font-size:12px;line-height:1.6;margin:10px 0 0}.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}.analytics-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.analytics-metrics .metric-card{padding:16px;box-shadow:none;container-type:inline-size}.analytics-metrics strong{font-size:clamp(16px,13.5cqw,28px);line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.metric-expense strong,.metric-income strong{color:var(--ink)}.metric-balance{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface-2);border-color:var(--line)}.metric-balance strong{margin-top:0;color:var(--ink)}.accounting-note{margin:-4px 2px 2px}.analytics-chart-panel{padding:16px 12px 12px}.analytics-panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:0 2px 14px}.analytics-panel-head>div:first-child{flex:0 1 auto}.analytics-panel-head h2{margin:0 0 4px;font-size:16px;font-weight:750;line-height:1.4;white-space:nowrap}.analytics-panel-head .segmented-control{flex:0 0 auto;min-height:40px}.analytics-panel-head .segmented-control button{min-width:44px;padding:0 10px}.analytics-panel-head .segmented-control button.active{background:var(--ink);color:var(--surface)}.chart-subtitle{display:block;line-height:1.5}.analytics-chart{width:100%;height:240px}.daily-chart{height:250px}.analytics-chart .recharts-wrapper:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.chart-key{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 18px;padding:10px 4px 2px;color:var(--muted);font-size:11px}.category-name,.chart-key span{display:flex;align-items:center;gap:8px}.category-name i,.chart-key i{display:inline-block;width:9px;height:9px;flex:0 0 9px;border-radius:3px}.chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:200px;padding:24px 12px;background:var(--bg);text-align:center}.chart-empty strong{color:var(--muted);font-size:14px}.chart-empty span{color:var(--muted);font-size:12px;line-height:1.7}.category-breakdown{display:grid;grid-gap:8px;gap:8px}.category-donut{position:relative;width:min(100%,260px);height:230px;margin:0 auto}.donut-caption{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:grid;grid-gap:6px;gap:6px;width:150px;text-align:center;pointer-events:none}.donut-caption span{font-size:12px;color:var(--muted)}.donut-caption strong{font-size:20px;color:var(--ink);overflow-wrap:anywhere}.category-legend{padding:0;margin:0;list-style:none}.category-legend li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line);font-size:13px}.category-legend li:last-child{border-bottom:0}.category-name{overflow-wrap:anywhere}.category-amount{display:flex;align-items:baseline;gap:12px;flex-shrink:0}.category-amount strong{font-weight:650;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.category-amount small{min-width:42px;color:var(--muted);text-align:right;font-size:11px}.currency-details>summary{display:flex;align-items:center;gap:12px;min-height:28px;cursor:pointer;color:var(--ink);font-size:13px;font-weight:650;list-style:none}.currency-details>summary::-webkit-details-marker{display:none}.currency-details>summary:after{content:"+";margin-left:auto}.currency-details[open]>summary:after{content:"−"}.currency-details small{color:var(--muted);font-size:11px;font-weight:400}.analytics-loading{padding:48px 16px;text-align:center;color:var(--muted);font-size:13px}.analytics-results.is-loading{opacity:.55;pointer-events:none}@media (min-width:600px){.analytics-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-balance{grid-column:auto;display:block}.metric-balance strong{margin-top:8px}.analytics-filter{padding:22px}.period-controls{max-width:420px}.analytics-chart-panel{padding:20px}.category-breakdown{grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr);align-items:center;gap:24px}.analytics-chart{height:280px}}@media (max-width:359px){.analytics-panel-head .segmented-control{width:100%}.analytics-metrics .metric-card{padding:12px}.period-controls>button{padding:0 12px}.category-amount{gap:8px}}.entry-grid{grid-template-areas:"command" "draft" "presets" "pending"}.entry-grid>.command-panel{grid-area:command}.entry-grid>.draft-area{grid-area:draft}.entry-grid>.preset-panel{grid-area:presets}.entry-grid>.pending-panel{grid-area:pending}.draft-area{min-width:0;scroll-margin-top:12px}.draft-save-actions{display:flex;flex-wrap:wrap;gap:8px}.draft-save-actions>.button{flex:1 1 120px}.preset-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.preset-panel{padding:10px}.preset-panel-head{margin-bottom:8px}.preset-panel-head h2{margin:0;color:var(--ink);font-size:14px;font-weight:750}.preset-panel-head>span{color:var(--muted);font-size:12px;white-space:nowrap}.preset-list{display:grid;grid-gap:6px;gap:6px}.preset-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:4px;gap:4px;align-items:center;border:1px solid var(--line);background:var(--surface)}.preset-use{display:flex;align-items:center;gap:8px;min-width:0;min-height:44px;padding:8px 10px;border:0;text-align:left;background:transparent;color:var(--ink)}.preset-use:hover{background:var(--bg)}.preset-use:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.preset-use:disabled{opacity:.5;cursor:not-allowed}.preset-use>strong{min-width:0;flex:1 1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-amount{flex-shrink:0;white-space:nowrap;font-size:13px;font-weight:650;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.preset-card-actions{display:flex;gap:4px;padding-right:4px}.preset-card-actions>button{min-height:36px;padding:0 7px;font-size:12px}.preset-card-actions>button:disabled{opacity:.5;cursor:not-allowed}.preset-delete-confirm{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:10px;border-top:1px solid var(--line);background:var(--bg);font-size:12px;color:var(--muted)}.preset-delete-confirm>div{display:flex;gap:8px;margin-left:auto}.preset-empty{margin-bottom:0;font-size:12px}.preset-error{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 0;font-size:13px;line-height:1.6;color:var(--danger)}.preset-modal,.preset-modal .modal-head{background:var(--surface)}.preset-form-intro{padding:14px 12px 0}.preset-form-intro .field>span{font-size:12px;color:var(--muted);font-weight:700}.preset-form-intro .hint{margin:8px 0 12px;font-size:12px}.preset-modal>.panel{border:0;box-shadow:none}.preset-create-body{display:grid;grid-gap:14px;gap:14px;padding:0 12px 14px}.preset-create-summary{display:grid;grid-gap:7px;gap:7px;padding:14px;background:var(--bg);border:1px solid var(--line)}.preset-create-summary strong{font-size:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.preset-create-summary span{color:var(--muted);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.analytics-filters-row{display:grid;grid-gap:10px;gap:10px}.currency-picker{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}.currency-picker .compact-select{flex:1 1;min-height:44px;font-size:16px}@media (min-width:600px){.analytics-filters-row{grid-template-columns:minmax(0,420px) minmax(180px,230px);align-items:center}.currency-picker>span{white-space:nowrap}}@media (min-width:900px){.entry-grid{grid-template-areas:"command draft" "presets draft" "pending draft";grid-template-rows:min-content min-content 1fr}}.parse-failure{margin-top:10px;padding:10px;background:var(--bg);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.parse-failure p{margin:0 0 4px;color:var(--danger)}.parse-failure>span{color:var(--muted)}.pending-panel{min-width:0;padding:8px 10px}.pending-head,.pending-toggle{display:flex;align-items:center;gap:10px}.pending-head{justify-content:space-between}.pending-head>.text-button{white-space:nowrap;min-height:36px;font-size:12px}.pending-toggle{flex:1 1;min-width:0;min-height:36px;padding:0;border:0;background:transparent;color:var(--ink);text-align:left}.pending-toggle strong{font-size:14px}.pending-toggle span{font-size:12px;color:var(--muted)}.pending-toggle span:last-child{margin-left:auto}.pending-status{margin:8px 0;color:var(--muted);font-size:12px;line-height:1.6}.pending-list{display:grid;grid-gap:6px;gap:6px;margin-top:6px}.pending-card{min-width:0;border:1px solid var(--line);padding:10px}.pending-text{margin:0 0 6px;font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.pending-card-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 8px}.pending-card-foot>span{font-size:11px;color:var(--muted)}.pending-actions{display:flex;margin-left:auto;gap:4px}.pending-actions .text-button{font-size:12px;padding:0 7px;min-height:32px}.pending-failure{margin-top:6px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}.pending-failure summary{cursor:pointer}.pending-edit{padding:12px;display:grid;grid-gap:12px;gap:12px}.pending-edit .textarea{min-height:160px}.category-model-row{grid-template-columns:minmax(0,1fr) auto auto}.category-analysis-toggle{display:flex;align-items:center;justify-content:center;width:44px;align-self:stretch;min-height:44px;border:1px solid var(--line);background:var(--surface);cursor:pointer}.category-analysis-toggle input{width:18px;height:18px;margin:0;accent-color:var(--ink);cursor:pointer}.analysis-category-notice{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding-top:10px;margin-top:10px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.analysis-category-notice>span{min-width:0;overflow-wrap:anywhere}.analysis-category-notice .text-button{min-height:36px;padding:0 10px;font-size:12px;white-space:nowrap}