@import url('/assets/font.css');
:root{color-scheme:dark;--bg:#101311;--surface:#1a1f1c;--surface2:#232a25;--text:#f2f4ed;--muted:#98a298;--line:#30382f;--accent:#c4f476;--accent-ink:#24321a;--red:#ffa397;--blue:#b5c5ef;--radius:24px;--safe-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}button{border:0}svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-1.15px;font-weight:650}h2{font-size:19px;letter-spacing:-.45px;font-weight:600}h3{font-size:15px;font-weight:550}small{color:var(--muted)}[hidden]{display:none!important}.app-shell{max-width:1060px;margin:auto;padding:0 32px 110px}.topbar{height:96px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700;letter-spacing:-.8px}.brand-light{font-weight:400}.avatar{width:38px;height:38px;border-radius:50%;background:#303a2c;color:var(--accent);font-weight:600;border:1px solid #46563a}.intro{display:flex;justify-content:space-between;align-items:end;margin:16px 0 25px;gap:12px}.eyebrow{color:var(--muted);margin-bottom:8px;font-size:12px;letter-spacing:1.4px;text-transform:uppercase}.intro p{color:var(--muted);margin-top:8px;font-size:13px}.date-badge{padding:9px 12px;border:1px solid var(--line);border-radius:20px;color:var(--muted);white-space:nowrap;font-size:12px}.grid-top{display:grid;grid-template-columns:1.15fr 1fr;gap:18px}.balance-card{background:var(--accent);color:var(--accent-ink);padding:26px;border-radius:var(--radius);min-height:245px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.balance-card:after{content:'';position:absolute;border:1px solid #a6d063;width:260px;height:260px;border-radius:50%;right:-138px;top:-110px;box-shadow:0 0 0 35px #bce970,0 0 0 36px #a6d063;pointer-events:none}.balance-top,.balance-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;position:relative;z-index:1}.balance-top span{font-size:13px;font-weight:500}.balance-top svg{width:24px;height:24px}.balance-value{font-size:clamp(32px,4.1vw,48px);font-weight:600;letter-spacing:-2px;margin:18px 0 8px;position:relative;z-index:1;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.balance-value .unit{font-size:24px;margin-left:5px;font-weight:400;opacity:.7}.balance-foot{border-top:1px solid #9ec45f;padding-top:15px;font-size:12px;color:#4b6331}.balance-foot button{background:transparent;display:flex;align-items:center;gap:6px;color:#253b19;padding:0}.summary-card{padding:22px;background:var(--surface);border-radius:var(--radius)}.period-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.period-head label{color:var(--muted);font-size:12px}.period-select{border:0;background:var(--surface2);padding:8px 10px;color:var(--text);border-radius:10px;font-size:12px;max-width:190px}.period-range{font-size:12px;color:var(--muted);margin-bottom:20px}.flows{display:grid;grid-template-columns:1fr 1fr;gap:10px}.flow-icon{display:inline-flex;width:33px;height:33px;align-items:center;justify-content:center;border-radius:50%;margin-bottom:10px;background:#293622;color:var(--accent)}.flow-icon.out{color:var(--red);background:#392824}.flow-label{font-size:12px;color:var(--muted);margin-bottom:5px}.flow-number{font-size:21px;font-weight:550;letter-spacing:-.7px;font-variant-numeric:tabular-nums}.summary-net{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px;margin-top:20px;font-size:12px;color:var(--muted)}.positive{color:var(--accent)}.negative{color:var(--red)}.actions{display:flex;gap:10px;margin:20px 0 28px}.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px;border-radius:14px;font-weight:600;min-height:48px}.primary{background:var(--accent);color:var(--accent-ink)}.secondary{background:var(--surface2);color:var(--text)}.actions button{flex:1}.actions .primary{background:var(--surface2);color:var(--text);border:1px solid var(--line)}.actions .primary svg{color:var(--accent)}.actions .secondary{background:transparent;border:1px solid var(--line)}.content-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}.panel{border:1px solid var(--line);border-radius:var(--radius);padding:22px;min-width:0}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:10px}.text-button{background:transparent;color:var(--accent);padding:7px 0;font-size:12px;display:flex;gap:4px;align-items:center;white-space:nowrap}.text-button svg{width:15px}.transactions{display:flex;flex-direction:column}.tx{display:flex;align-items:center;gap:12px;background:transparent;text-align:left;width:100%;padding:14px 0;border-bottom:1px solid var(--line);min-height:67px}.tx:last-child{border-bottom:0}.tx:hover .tx-title{color:var(--accent)}.tx-icon{display:grid;place-items:center;border-radius:15px;flex:0 0 42px;height:42px;font-size:19px;background:#293329}.tx:nth-child(3n+2) .tx-icon{background:#312e39}.tx:nth-child(3n) .tx-icon{background:#3b3026}.tx-body{min-width:0;flex:1}.tx-title{display:block;font-size:14px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-subtitle{display:block;font-size:11px;color:var(--muted);margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-end{flex-shrink:0;text-align:right}.tx-amount{font-weight:550;font-size:14px;letter-spacing:-.25px}.tx-end small{display:block;margin-top:5px;font-size:10px}.chart-title{color:var(--muted);font-size:12px}.chart-total{font-size:29px;letter-spacing:-1px;margin-top:8px}.chart{height:125px;display:flex;align-items:end;gap:6px;margin:24px 0 9px;position:relative;border-bottom:1px solid var(--line)}.bar-col{display:flex;flex-direction:column;justify-content:end;flex:1;height:100%;min-width:0}.bar{min-height:3px;border-radius:5px 5px 0 0;background:#364630;transition:height .3s}.bar-col:nth-child(3n+1) .bar{background:#64833d}.bar-col.peak .bar{background:var(--accent)}.chart-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.legend{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:7px}.mini-note{margin-top:16px;color:var(--muted);font-size:11px;line-height:1.6}.empty{text-align:center;padding:30px 12px;color:var(--muted);line-height:1.6}.empty svg{width:30px;height:30px;margin-bottom:10px;color:var(--accent)}.bottom-nav{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);width:min(530px,calc(100% - 32px));background:#222922f5;border:1px solid #394135;box-shadow:0 15px 45px #0005;backdrop-filter:blur(18px);border-radius:24px;display:flex;align-items:center;justify-content:space-around;padding:10px 7px;z-index:10}.bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--muted);background:transparent;font-size:10px;min-width:57px;padding:5px 0}.bottom-nav button.active{color:var(--accent)}.bottom-nav .nav-add{background:var(--accent);color:var(--accent-ink);border-radius:17px;width:48px;height:48px;min-width:48px;justify-content:center}.bottom-nav .nav-add svg{width:27px;height:27px}.loading{padding:100px 20px;text-align:center;color:var(--muted)}.spinner{display:inline-block;width:28px;height:28px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite;margin-bottom:14px}@keyframes spin{to{transform:rotate(360deg)}}.status:empty{display:none}.status,.demo-banner{background:#303123;color:#dcebb5;border:1px solid #50553c;padding:12px 15px;border-radius:12px;font-size:12px;margin-bottom:16px;line-height:1.5}.demo-banner{text-align:center}.status button{background:transparent;color:var(--accent);text-decoration:underline;margin-left:10px}.history-tools{display:flex;gap:10px;margin:20px 0}.search{background:var(--surface);border:1px solid var(--line);border-radius:13px;display:flex;align-items:center;gap:9px;padding:0 13px;flex:1;min-width:0}.search svg{color:var(--muted);width:18px}.search input{background:none;border:0;color:var(--text);height:44px;width:100%;min-width:0;outline:none}.segments{display:flex;gap:4px;background:var(--surface);padding:4px;border-radius:13px;margin-bottom:20px}.segments button{flex:1;border-radius:10px;padding:10px;background:transparent;color:var(--muted);font-size:13px}.segments button.selected{background:var(--surface2);color:var(--text)}.group-date{color:var(--muted);font-size:11px;margin:22px 0 5px;text-transform:uppercase;letter-spacing:.8px}.history-list .tx{padding:16px 0}.load-more{width:100%;margin-top:20px}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.donut-wrap{position:relative;width:184px;height:184px;margin:25px auto}.donut{width:100%;height:100%;border-radius:50%}.donut-hole{position:absolute;inset:23px;background:var(--bg);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.donut-hole strong{font-size:20px;letter-spacing:-.6px}.donut-hole small{font-size:11px}.category-row{display:flex;align-items:center;gap:10px;margin-top:18px}.category-row .swatch{width:9px;height:9px;flex-shrink:0;border-radius:50%}.category-details{flex:1;min-width:0}.category-title{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:9px}.category-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track{height:5px;background:var(--surface2);border-radius:5px;overflow:hidden}.track div{height:100%;border-radius:5px}.category-row small{font-size:10px;width:34px;text-align:right}.wallet-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.wallet-card{padding:24px;border-radius:22px;background:var(--surface);border:1px solid var(--line)}.wallet-card .wallet-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.wallet-card .wallet-top span{font-size:23px}.wallet-card strong{display:block;font-size:28px;margin-top:8px;letter-spacing:-.8px}.wallet-card small{display:block;margin-top:10px}.badge{font-size:10px;padding:5px 8px;background:var(--surface2);color:var(--muted);border-radius:7px}.settings-row{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);gap:16px;font-size:13px}.settings-row:last-child{border:0}.settings-row span{color:var(--muted)}.recurring-row{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line);gap:12px}.recurring-row small{display:block;margin-top:5px;font-size:11px}.budget-row{margin:20px 0}.budget-row .track{margin-top:10px;height:7px}.budget-row .track div{background:var(--accent)}dialog{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:28px;width:min(480px,calc(100% - 24px));max-height:90dvh;padding:16px 24px 24px;overscroll-behavior:contain}dialog::backdrop{background:#050905b8;backdrop-filter:blur(6px)}.sheet-handle{width:35px;height:4px;border-radius:5px;background:#4c554b;margin:0 auto 17px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.icon-button{width:34px;height:34px;border-radius:50%;background:var(--surface2);display:grid;place-items:center}.type-switch{background:var(--bg)}.type-switch button.selected{background:var(--accent);color:var(--accent-ink)}form>label,.form-grid label{display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:12px;margin-bottom:16px}form input,form select{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:13px 12px;border-radius:12px;min-width:0;width:100%;height:46px}form .amount-label{text-align:center;display:block;margin-bottom:0}.amount-input{display:flex;align-items:center;justify-content:center;gap:5px;margin:0 0 24px}.amount-input input{border:0;background:transparent;font-size:44px;letter-spacing:-1px;font-weight:550;height:75px;text-align:center;width:240px;max-width:70%;padding:5px}.amount-input select{width:75px;border:0;background:var(--surface2);font-size:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-hint{font-size:11px;line-height:1.5;color:var(--muted);margin:2px 0 16px}.save-button{width:100%}.danger{background:#3c2524;color:var(--red);width:100%;border-radius:12px;padding:13px;margin-top:12px}.form-error{color:var(--red);font-size:12px;margin:10px 0}.form-error:empty{display:none}.delete-confirm p{margin-top:16px;font-size:13px;line-height:1.5}.delete-confirm .secondary{width:100%;margin-top:8px}.toast{position:fixed;left:50%;bottom:110px;transform:translate(-50%,20px);background:var(--accent);color:var(--accent-ink);border-radius:14px;padding:13px 20px;font-weight:550;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:90%;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.entrance{animation:enter .25s ease-out}@keyframes enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:640px){.app-shell{padding:0 20px 120px}.topbar{height:77px}.brand{font-size:19px}.intro{margin:12px 0 23px}h1{font-size:29px}.intro .date-badge{display:none}.grid-top,.content-grid,.analytics-grid{grid-template-columns:1fr}.grid-top{gap:14px}.balance-card{min-height:216px;padding:23px}.balance-value{font-size:42px;letter-spacing:-1.7px}.summary-card{padding:20px}.flows{gap:20px}.flow-icon{float:left;margin:3px 10px 0 0;width:32px;height:32px}.flow-number{font-size:20px}.flow-label{font-size:11px}.summary-net{margin-top:18px;padding-top:13px}.period-range{margin-bottom:20px}.actions{margin:17px 0 24px}.actions button{font-size:13px;padding:13px 8px}.panel{padding:19px}.bottom-nav{bottom:max(12px,var(--safe-bottom));padding:9px 4px}.tx{gap:11px}.wallet-grid{grid-template-columns:1fr}.history-tools{flex-wrap:wrap}.history-tools .period-select{max-width:100%;flex:1;min-height:44px}.search{flex-basis:100%}dialog{position:fixed;bottom:0;top:auto;margin:0;width:100%;max-width:none;border-radius:26px 26px 0 0;max-height:94dvh;padding:14px 22px calc(22px + var(--safe-bottom))}.chart{height:100px}.content-grid{gap:20px}.form-grid{gap:8px}.tx-title{font-size:13px}.tx-amount{font-size:13px}.topbar{padding-top:env(safe-area-inset-top,0px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
:root[data-theme=light]{color-scheme:light;--bg:#f3f5ed;--surface:#fff;--surface2:#e8ece0;--text:#20281e;--muted:#64715f;--line:#dce2d3;--red:#bb4236;--accent:#b8e56e}
:root[data-theme=light] .bottom-nav{background:#f8faf3f5;border-color:var(--line)}:root[data-theme=light] .flow-icon.out{background:#f5e4df}:root[data-theme=light] .flow-icon{background:#e6efd9;color:#446c22}:root[data-theme=light] .tx-icon{background:#e6eddf}:root[data-theme=light] .tx:nth-child(3n+2) .tx-icon{background:#eae5f0}:root[data-theme=light] .tx:nth-child(3n) .tx-icon{background:#f1e7d9}:root[data-theme=light] .bar{background:#a3b98b}:root[data-theme=light] .danger{background:#f5e2de}:root[data-theme=light] .positive,:root[data-theme=light] .text-button,:root[data-theme=light] .bottom-nav button.active{color:#416d1b}
