:root{--bg: #f7f7f5;--surface: #ffffff;--surface-2: #f0f0ee;--text: #1b1d21;--muted: #646a74;--line: #dcdcd8;--accent: #2f5d8a;--accent-soft: #e2eaf3;--good: #2e7d4f;--warn: #a8593a;--radius: 12px;--bar: #2a78d6}@media(prefers-color-scheme:dark){:root{--bg: #16181b;--surface: #1e2126;--surface-2: #262a30;--text: #e7e8ea;--muted: #9aa0aa;--line: #333840;--accent: #8db4dc;--accent-soft: #233041;--good: #6fc394;--warn: #d68f6e;--bar: #3987e5}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px;background:var(--surface);border-bottom:1px solid var(--line)}.topbar h1{font-size:17px;margin:0;letter-spacing:-.01em}.tabs{display:flex;gap:4px;margin-left:auto}.tabs button{border:0;background:transparent;color:var(--muted);padding:6px 10px;border-radius:8px;font:inherit;cursor:pointer;white-space:nowrap}.tabs button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}#lock-now{flex:0 0 auto}main{max-width:760px;margin:0 auto;padding:14px 14px 64px}@media(max-width:640px){.topbar{flex-wrap:wrap;gap:8px}.tabs{order:3;width:100%;margin-left:0;overflow-x:auto;scrollbar-width:none}.tabs button{flex:1 0 auto;padding:8px}#lock-now{margin-left:auto}}.banner{max-width:760px;margin:0 auto;padding:6px 14px 0;font-size:12.5px;color:var(--muted);text-align:right}.banner:empty{display:none}.banner[data-tone=error]{color:var(--warn)}.banner[data-tone=action]{color:var(--accent);font-weight:600;cursor:pointer;text-decoration:underline}.demo-flag{max-width:760px;margin:8px auto 0;padding:7px 12px;border-radius:8px;background:var(--accent-soft);color:var(--accent);font-size:13px;text-align:center}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:14px}.card h2{margin:0 0 10px;font-size:15px;letter-spacing:-.01em;display:flex;align-items:baseline;gap:8px}.card h2 .aside{margin-left:auto;font-weight:400;font-size:13px;color:var(--muted)}.card h3{margin:14px 0 6px;font-size:13px;color:var(--muted);font-weight:600}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}.toolbar .grow{flex:1;min-width:10em}.monthnav{display:flex;align-items:center;gap:8px;margin-bottom:14px}.monthnav .label{flex:1;font-weight:600;text-align:center}button.ghost,.monthnav button{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font:inherit;cursor:pointer}button.primary{background:var(--accent);color:var(--bg);border:0;border-radius:8px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}button.danger{color:var(--warn);border:1px solid transparent;background:transparent;cursor:pointer;font:inherit;padding:6px 8px}button[disabled]{opacity:.5;cursor:not-allowed}button.link{background:none;border:0;padding:0;font:inherit;cursor:pointer;color:var(--accent);text-decoration:underline;text-underline-offset:2px}label.field{display:block;margin-bottom:12px}label.field>span{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.row{display:flex;gap:10px;flex-wrap:wrap}.row>.field{flex:1;min-width:9em}input[type=text],input[type=password],input[type=number],input[type=date],input[type=month],input[type=search],select,textarea{width:100%;padding:8px 10px;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:8px}select{padding-right:6px}.toolbar select,.toolbar input{width:auto}.toolbar input[type=search]{flex:1;min-width:10em}.check{display:flex;gap:9px;align-items:flex-start;margin-bottom:10px;font-size:14px}.check input{margin-top:3px;accent-color:var(--accent);flex:0 0 auto}.muted{color:var(--muted)}.small{font-size:13px}.empty{color:var(--muted);text-align:center;padding:28px 10px}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.pos{color:var(--good)}.neg{color:var(--text)}.warn{color:var(--warn)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{background:var(--surface-2);border-radius:10px;padding:10px 12px}.stat .k{font-size:12.5px;color:var(--muted)}.stat .v{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.02em}@media(max-width:420px){.stat .v{font-size:17px}}.bars{display:flex;flex-direction:column;gap:2px}.bar-row{display:grid;grid-template-columns:minmax(7em,11em) 1fr auto;gap:10px;align-items:center;padding:5px 4px;border-radius:6px;font-size:14px;cursor:pointer;background:none;border:0;color:inherit;font:inherit;text-align:left;width:100%}.bar-row:hover{background:var(--surface-2)}.bar-track{height:10px}.bar-fill{height:10px;background:var(--bar);border-radius:0 4px 4px 0;min-width:2px}.bar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viz{position:relative}.chart{width:100%;height:auto;display:block;overflow:visible}.chart .grid{stroke:var(--line);stroke-width:1}.chart .grid.zero{stroke:var(--muted)}.chart .axis{fill:var(--muted);font-size:11px}.chart .mark{fill:var(--bar)}.chart .mark.dim{opacity:.35}.chart .line{fill:none;stroke:var(--bar);stroke-width:2}.chart .hit{fill:transparent;cursor:default}.chart .mark.hover{opacity:1;filter:brightness(.88)}.viz-tip{position:absolute;top:0;transform:translate(-50%);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12px;line-height:1.45;pointer-events:none;white-space:nowrap;box-shadow:0 2px 10px #00000024}.viz-tip[hidden]{display:none!important}.viz-tip b{display:block;font-weight:600}details.table-view{margin-top:10px}details.table-view summary{cursor:pointer;color:var(--muted);font-size:13px}table.data{width:100%;border-collapse:collapse;font-size:13.5px}table.data th,table.data td{text-align:left;padding:6px;border-bottom:1px solid var(--line);vertical-align:top}table.data th{color:var(--muted);font-weight:600;font-size:12.5px}table.data td.num,table.data th.num{text-align:right}.scroll-x{overflow-x:auto}.tx-day{font-size:12.5px;color:var(--muted);font-weight:600;margin:12px 0 4px}.tx{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 0;border-top:1px solid var(--line)}.tx:first-of-type{border-top:0}.tx-merchant{font-weight:550;overflow-wrap:anywhere}.tx-desc{font-size:12.5px;color:var(--muted);overflow-wrap:anywhere;grid-column:1}.tx-meta{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}.tx-meta select{width:auto;max-width:15em;padding:4px 6px;font-size:13px}.badge{font-size:12px;border-radius:999px;padding:1px 8px;white-space:nowrap;background:var(--surface-2);color:var(--muted)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.warn{background:transparent;border:1px solid var(--warn);color:var(--warn)}.list-row{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}.list-row:first-child{border-top:0}.list-row .grow{flex:1;min-width:10em}.modal{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:18px;width:min(520px,calc(100vw - 32px));max-width:calc(100vw - 32px);font:inherit;overflow-x:hidden}.modal::backdrop{background:#0000008c}.modal h2{margin:0 0 8px;font-size:16px}.modal h3{margin:6px 0 8px;font-size:13px;color:var(--muted);font-weight:600}.modal p{margin:0 0 14px;font-size:14px;overflow-wrap:anywhere}.modal-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:8px}.update-bar{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:50;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;font-size:14px;box-shadow:0 6px 24px #0000002e}.update-bar span{flex:1;min-width:10em}body.is-locked .topbar,body.is-locked .banner,body.is-locked main,body.is-locked .demo-flag{display:none}.lock-screen{max-width:420px;margin:12vh auto 0;padding:24px 20px 48px}.lock-screen h1{font-size:22px;margin:0 0 8px;letter-spacing:-.02em}.lock-screen p{margin:0 0 16px}.lock-form .primary{width:100%;margin-top:4px}.lock-alt{margin-top:28px;padding-top:16px;border-top:1px solid var(--line);font-size:14px}.error{color:var(--warn);font-size:14px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
