:root{--bg:#0d1014;--surface:#161b22;--surface-2:#212833;--line:#2e3744;--text:#f2f3f5;--muted:#97a1ad;--accent:#4cd38a;--out:#ef9f96;--in:#7dd6a5;--accent-ink:#04210f;--bar:#2a8a57;--roll:#3f93dc;--danger:#ff6b5e;--warn:#ffd166;--radius:14px;--tabs-h:64px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;text-align:left;background:0 0;border:0;padding:0}button:disabled{opacity:.4;cursor:default}h1,h2,h3{margin:0}.muted{color:var(--muted)}.small{font-size:13px}.pad{padding:0 16px}.center{text-align:center}.empty{color:var(--muted);text-align:center;margin:0;padding:20px 16px}.warn{color:var(--warn);font-size:14px}.over{color:var(--accent);font-weight:700}main{min-height:100dvh;padding-top:var(--safe-t)}main.with-tabs{padding-bottom:calc(var(--tabs-h) + var(--safe-b) + 88px)}.screen{max-width:560px;margin:0 auto}.splash,.login-mark,.wordmark{letter-spacing:-.02em;font-style:italic;font-weight:900}.splash{height:100dvh;color:var(--accent);place-items:center;font-size:40px;display:grid}.bar{z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:center;gap:8px;height:52px;padding:0 12px;display:flex;position:sticky;top:0}.wordmark{color:var(--accent);font-size:20px}.bar-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:600;overflow:hidden}.bar-right{align-items:center;gap:10px;margin-left:auto;display:flex}.icon-btn{border-radius:10px;place-items:center;width:40px;height:40px;font-size:26px;display:grid}.sync-dot{background:var(--muted);border-radius:50%;width:9px;height:9px}.sync-dot.ok{background:#4cc38a}.sync-dot.wait{background:var(--warn)}.sync-dot.err{background:var(--danger)}.screen-title{padding:4px 16px 12px;font-size:28px;font-weight:800}.section{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:18px 16px 8px;font-size:13px;font-weight:600}.day-nav{justify-content:space-between;align-items:center;padding:0 8px 6px;display:flex}.card{background:var(--surface);border-radius:var(--radius);margin:0 16px;padding:14px}.meters{gap:12px;display:grid}.meter-head{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.meter-head strong{font-size:20px}.meter-track{background:var(--surface-2);border-radius:4px;height:8px;overflow:hidden}.meter-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .2s}.meter-fill.over{background:repeating-linear-gradient(135deg, var(--accent) 0 6px, #2a8a57 6px 12px)}.meter-over{color:var(--accent);margin-top:4px;font-size:13px}.chips{scrollbar-width:none;gap:8px;padding:12px 16px;display:flex;overflow-x:auto}.chips.flush{flex-wrap:wrap;padding:0;overflow:visible}.chip{background:var(--surface);border:1px solid var(--line);white-space:nowrap;border-radius:999px;flex:none;min-height:38px;padding:8px 14px;font-size:14px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.chip.add{color:var(--muted);border-style:dashed}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:10px 16px 0;display:grid}.section+.tiles{padding-top:0}.tile{border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:2px;min-height:84px;padding:12px;display:flex;position:relative;overflow:hidden}.tile:active{background:var(--surface-2)}.tile-name{overflow-wrap:anywhere;padding-right:36px;font-weight:600}.tile-units{color:var(--accent);font-size:13px;font-weight:700;position:absolute;top:12px;right:12px}.tile.new{text-align:center;border:1px dashed var(--line);color:var(--muted);background:0 0;justify-content:center;align-items:center}.list{border-radius:var(--radius);gap:1px;margin:0 16px;display:grid;overflow:hidden}.pour{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 14px;display:flex}.pour-main{flex-direction:column;min-width:0;display:flex}.log-row{border-bottom:1px solid var(--surface-2);grid-template-columns:minmax(0,1fr) 44px 48px 52px;align-items:center;gap:8px;width:calc(100% - 32px);margin:0 16px;padding:10px 0;display:grid}.log-row>:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}.log-head{border:0;align-items:end;padding-block:0 6px}.log-day{flex-direction:column;min-width:0;display:flex}.hero-row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.hero-value{letter-spacing:-.02em;font-size:44px;font-weight:800;line-height:1}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.stat{background:var(--surface-2);border-radius:10px;min-width:0;padding:10px}.stat-value{font-size:20px;font-weight:700}.lead{margin:0 0 12px;line-height:1.45}.meter-block+.lead{margin:14px 0 0}.chart{margin-top:4px}.range{margin:18px 0 0}.weekday-track div.hot{background:var(--accent)}.col-head{flex-direction:column;line-height:1.2;display:flex}.goal-hint{opacity:.7;font-size:11px}.chart{position:relative}.chart svg{touch-action:pan-y;display:block}.chart text.axis{fill:var(--muted);font-size:11px}.baseline{stroke:var(--line)}.bar{fill:var(--bar)}.bar.hot{fill:var(--accent)}.goal{stroke:var(--muted);stroke-width:1px;stroke-dasharray:4 4}.roll-line{fill:none;stroke:var(--roll);stroke-width:2px;stroke-linejoin:round}.hover-dot{fill:var(--roll);stroke:var(--surface);stroke-width:2px}.tooltip{background:var(--surface-2);border:1px solid var(--line);pointer-events:none;border-radius:10px;width:150px;padding:8px 10px;font-size:13px;position:absolute;top:0}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:8px;font-size:13px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.key-bar{background:var(--bar);border-radius:2px;width:10px;height:10px}.key-line{background:var(--roll);width:16px;height:2px}.key-goal{border-top:1px dashed var(--muted);width:16px}.weekdays{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.weekday{flex-direction:column;align-items:center;gap:4px;min-height:130px;display:flex}.weekday>.small:first-child{min-height:18px}.weekday-track{flex:1;align-items:flex-end;width:100%;max-width:28px;display:flex}.weekday-track div{background:var(--bar);border-radius:4px 4px 0 0;width:100%}.rank{gap:12px;display:grid}.rank-head{justify-content:space-between;gap:12px;margin-bottom:4px;display:flex}.rank-head>:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.rank-head>:last-child{flex:none}.rank-track{height:6px}.rank-track div{background:var(--bar);border-radius:0 3px 3px 0;min-width:2px;height:100%}.table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:calc(100% - 32px);margin:0 16px}.table th{color:var(--muted);font-size:13px;font-weight:500}.table th,.table td{text-align:right;border-bottom:1px solid var(--surface-2);padding:8px 0}.table th:first-child,.table td:first-child{text-align:left}.form{gap:12px;display:grid}.input{width:100%;font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;min-width:0;padding:12px}.input:focus{outline:2px solid var(--accent);outline-offset:-1px}.num-field{gap:4px;min-width:0;display:grid}.field-label{color:var(--muted);font-size:13px}.num-wrap{align-items:center;gap:8px;display:flex}.num-affix{color:var(--muted);font-size:14px}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.seg{background:var(--surface-2);border-radius:10px;padding:3px;display:flex}.seg button{text-align:center;border-radius:8px;flex:1;min-height:36px;padding:0 8px;font-size:14px}.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn{text-align:center;border-radius:10px;justify-content:center;align-items:center;min-height:44px;padding:0 16px;font-weight:600;display:inline-flex}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.ghost{background:var(--surface-2);min-height:36px}.btn.danger{color:var(--danger);background:var(--surface-2)}.btn.wide{width:100%}.btn.grow{flex:1}.btn.huge{min-height:54px;font-size:18px}.link{color:var(--muted);padding:10px 0;font-size:14px;text-decoration:underline}.screen>.btn.wide{width:calc(100% - 32px);margin:12px 16px}.sheet-backdrop{z-index:20;background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:560px;max-height:88dvh;padding:10px 16px calc(16px + var(--safe-b));background:var(--surface);border-radius:18px 18px 0 0;overflow-y:auto}.sheet-grip{background:var(--line);border-radius:2px;width:36px;height:4px;margin:0 auto 10px}.sheet-title{margin-bottom:12px;font-size:18px}.sheet-actions{gap:10px;margin-top:4px;display:flex}.sheet .muted.small{margin:0}.tabs{z-index:10;height:calc(var(--tabs-h) + var(--safe-b));padding:0 max(0px, calc((100% - 560px) / 2)) var(--safe-b);background:var(--surface);border-top:1px solid var(--line);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabs button{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:12px;display:flex}.tabs button.on{color:var(--accent)}.tab-icon{font-size:20px;line-height:1}.toast{left:16px;right:16px;bottom:calc(var(--tabs-h) + var(--safe-b) + 16px + 60px + 12px);z-index:30;pointer-events:none;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;justify-content:space-between;gap:12px;max-width:528px;margin:0 auto;padding:12px 14px;display:flex;position:fixed}.activity-day{margin-bottom:18px}.activity-list{border-radius:12px;gap:1px;display:grid;overflow:hidden}.activity-row{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.activity-row.undone .entry-main>:first-child{color:var(--muted);text-decoration:line-through}.activity-row .btn{flex:none;min-height:36px;padding:6px 14px}.menu{border-radius:var(--radius);gap:1px;margin:0 16px;display:grid;overflow:hidden}.menu-gap{margin-top:18px}.menu-row{background:var(--surface);justify-content:space-between;gap:12px;width:100%;padding:14px;display:flex}.menu-row.danger{color:var(--danger)}.login{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;max-width:380px;min-height:100dvh;margin:0 auto;padding:24px;display:flex}.login-mark{color:var(--accent);font-size:44px}.login .form{width:100%}.code-input,.link-code{text-align:center;letter-spacing:.1em}.link-code{padding:12px;font-size:30px;font-weight:700}.meter-foot{margin-top:8px}.meter-block+.meter-block{border-top:1px solid var(--surface-2);margin-top:14px;padding-top:14px}.log-week{border-radius:var(--radius);background:var(--surface);box-shadow:inset 3px 0 0 var(--accent);margin:0 4px 8px;padding:2px 12px}.log-week-label{padding:8px 0 0}.log-week .log-row{width:100%;margin:0}.log-week .log-row:last-child{border-bottom:0}.screen>.meter{margin-bottom:12px}.add-row{padding-top:12px;padding-bottom:12px}.day-total{gap:2px;display:grid}.day-units{font-size:32px;font-weight:800}.grow{flex:1;min-width:0}.again{background:var(--surface-2);min-width:44px;min-height:36px;color:var(--accent);text-align:center;border-radius:10px;flex:none;font-weight:700}.picker{flex-direction:column;gap:10px;display:flex}.picker-list{background:var(--bg);border-radius:10px;height:min(46dvh,420px);overflow-y:auto}.pick-row{border-bottom:1px solid var(--surface);justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 12px;display:flex}.pick-row:active{background:var(--surface-2)}.pick-units{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.log-day>.small{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sheet-backdrop{z-index:40}.calc-out{gap:4px;margin:0;display:grid}.summary{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:8px;display:flex}.summary .hero-value{font-size:36px}.summary-side{text-align:right;gap:2px;display:grid}.month-head{border-bottom:2px solid var(--line);justify-content:space-between;margin:18px 16px 0;padding:8px 0;font-weight:700;display:flex}.day{margin:0 16px}.day-head{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:flex-start;width:100%;padding:14px 14px 6px;font-weight:600;display:flex}.entry{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:10px 14px;display:flex}.day .entry:first-of-type{border-radius:12px 12px 0 0}.day .entry:last-child{border-radius:0 0 12px 12px}.day .entry:only-of-type{border-radius:12px}.day .entry+.entry{border-top:1px solid var(--bg)}.list .entry+.entry{border-top:0}.entry-main{flex-direction:column;min-width:0;display:flex}.entry-main>:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.entry-sub{flex-wrap:wrap;column-gap:0;display:flex}.entry-part{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.entry-dot{margin:0 6px 0 5px}.day-label{align-items:baseline;gap:8px;display:flex}.day-rate{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.day-totals{align-items:flex-start;gap:18px;display:flex}.day-total-pair{flex-direction:column;align-items:flex-end;gap:1px;display:flex}.day-total-pair .alt{color:var(--muted);font-size:13px;font-weight:400}.day-total-pair.out .main{color:var(--out)}.day-total-pair.in .main{color:var(--in)}.entry-amt{font-variant-numeric:tabular-nums;flex-direction:column;flex:none;align-items:flex-end;gap:1px;font-weight:600;display:flex}.entry-alt{color:var(--muted);font-size:13px;font-weight:400}.entry-amt .typed:before{content:"";background:var(--muted);opacity:.8;vertical-align:middle;border-radius:50%;width:4px;height:4px;margin:0 6px .22em 0;display:inline-block}.entry.spend .entry-amt>:first-child,.recurring-row .entry-amt>:first-child{color:var(--out)}.entry.transfer .entry-amt{color:var(--muted);font-weight:400}.entry.income .entry-amt>:first-child{color:var(--in)}.fab{z-index:11;right:max(16px,50% - 264px);bottom:calc(var(--tabs-h) + var(--safe-b) + 16px);background:var(--accent);width:60px;height:60px;color:var(--accent-ink);border-radius:50%;place-items:center;font-size:32px;font-weight:600;display:grid;position:fixed;box-shadow:0 6px 20px #00000073}.suggest{flex-wrap:wrap;gap:6px;max-height:136px;display:flex;overflow-y:auto}.suggest .chip{min-height:34px;padding:6px 12px}.amount-row{align-items:flex-end;gap:10px;display:flex}.amount-row .num-field{flex:1}.amount-row .input{font-size:22px;font-weight:700}.seg.cur{flex:none}.seg.cur button{min-width:40px}.stack{gap:10px;display:grid}.card-row{text-align:left;gap:10px;width:calc(100% - 32px);display:grid}.card-row-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card-row-body{justify-content:space-between;align-items:flex-end;display:flex}.right{text-align:right}.lead-top{margin:12px 0 0}.insight{border-left:3px solid var(--line)}.insight.bad{border-left-color:var(--danger)}.insight.good{border-left-color:var(--accent)}.insight p{margin:4px 0 0;line-height:1.45}.months{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;height:170px;display:grid}.month-col{border-radius:8px;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:2px 0;display:flex}.month-col.on{background:var(--surface-2)}.month-val{color:var(--muted);white-space:nowrap;min-height:14px;font-size:10px}.month-track{flex:1;align-items:flex-end;width:70%;max-width:26px;display:flex;position:relative}.month-track span{background:var(--bar);border-radius:4px 4px 0 0;width:100%;min-height:1px}.month-col.on .month-track span{background:var(--accent)}.month-track i{border-top:1px dashed var(--muted);position:absolute;left:-3px;right:-3px}.rate{width:110px}.rate .field-label{display:none}.rate .input{text-align:right;padding:6px 8px}.menu-row{align-items:center}.paste{resize:vertical;min-height:120px;font:13px/1.4 ui-monospace,monospace}.summary-side button{text-align:right}.recurring-row{box-shadow:inset 3px 0 0 var(--roll)}.wallets{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px;margin:0 16px 4px;display:grid}.wallets .card{align-content:start;gap:6px;margin:0;display:grid}.wallets .btn{justify-self:start}.menu-row.plain{border-radius:10px;padding:8px 12px}
