:root{--ink: #12100E;--surface: #1A1714;--raised: #221E1A;--line: #2E2823;--cream: #EDE6DA;--muted: #8A8078;--faint: #574F48;--gold: #D4A537;--index: #4FA88B;--stocks: #C77D4A;--liquid: #5B8CC7;--debt: #8A7BC8;--unknown: #6B635C;--cat-food: #FF7A45;--cat-groceries: #4ECB71;--cat-dining: #FFB238;--cat-transport: #45B7FF;--cat-shopping: #C77DFF;--cat-bills: #7A8AFF;--cat-entertainment: #FF5C8A;--cat-health: #2FD9C5;--cat-rent: #E8A33D;--cat-investment: #4FA88B;--cat-transfer: #8A8078;--cat-income: #6FBF8F;--cat-uncategorised: #5A524B;--gain: #6FBF8F;--loss: #D45F5F;--serif: "Instrument Serif", Georgia, serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--gap: 20px}*{box-sizing:border-box}html,body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--sans);-webkit-font-smoothing:antialiased}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.app{max-width:760px;margin:0 auto;padding:28px var(--gap) 64px}.masthead{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:22px;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--serif);font-size:27px;letter-spacing:.01em}.wordmark span{color:var(--gold)}.asof{font-family:var(--mono);font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.09em}.hero{padding:34px 0 26px}.hero-label{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:10px}.hero-value{font-family:var(--serif);font-size:clamp(46px,12vw,68px);line-height:.95;letter-spacing:-.015em;font-variant-numeric:tabular-nums}.hero-sub{margin-top:14px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:14px}.delta{font-family:var(--mono);font-weight:500}.delta.up{color:var(--gain)}.delta.down{color:var(--loss)}.hero-note{color:var(--muted);font-size:13px}.band{display:flex;height:46px;border-radius:3px;overflow:hidden;gap:2px;margin-top:8px}.band-seg{position:relative;transition:filter .16s ease;min-width:3px}.band-seg:hover{filter:brightness(1.25)}.band-seg-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700;color:#0a0806d1;letter-spacing:-.01em}.legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:16px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.swatch{width:9px;height:9px;border-radius:2px;flex:none}.legend-name{color:var(--cream)}.legend-weight{font-family:var(--mono);color:var(--muted);font-size:12px}.section{margin-top:40px;padding-top:22px;border-top:1px solid var(--line)}.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin:0 0 18px;font-weight:500}.holding{display:grid;grid-template-columns:3px 1fr auto;gap:0 14px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.holding:last-child{border-bottom:none}.holding-rule{width:3px;height:30px;border-radius:2px}.holding-name{font-size:14px;font-weight:500;letter-spacing:-.005em}.holding-meta{font-family:var(--mono);font-size:11px;color:var(--faint);margin-top:3px}.holding-right{text-align:right}.holding-value{font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums}.holding-delta{font-family:var(--mono);font-size:11px;margin-top:3px;font-variant-numeric:tabular-nums}.up{color:var(--gain)}.down{color:var(--loss)}.caveat{margin-top:26px;padding:13px 15px;background:var(--surface);border-left:2px solid var(--gold);border-radius:0 3px 3px 0;font-size:12.5px;line-height:1.55;color:var(--muted)}.caveat b{color:var(--cream);font-weight:500}.assumed{display:inline-block;margin-left:6px;font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);border:1px solid var(--line);border-radius:2px;padding:1px 4px;vertical-align:1px}.state{padding:80px 0;text-align:center;color:var(--muted);font-size:14px;line-height:1.7}.state code{font-family:var(--mono);font-size:12.5px;color:var(--gold);background:var(--surface);padding:2px 7px;border-radius:3px}.tally{font-family:var(--mono);font-size:10px;text-transform:none;letter-spacing:0;color:var(--faint);margin-left:12px;font-weight:400}.tally em{font-style:normal;color:var(--muted);margin-left:5px}.kind{display:inline-block;min-width:34px;margin-right:8px;font-size:9px;font-weight:700;letter-spacing:.07em;color:var(--faint)}.kind-mutual_fund{color:var(--index);opacity:.75}.kind-equity{color:var(--stocks);opacity:.8}.caveat-quiet{border-left-color:var(--line);background:transparent;padding-left:13px}body:before{content:"";position:fixed;inset:0 0 auto 0;height:420px;background:radial-gradient(120% 100% at 50% 0%,rgba(212,165,55,.09) 0%,transparent 62%),radial-gradient(90% 80% at 12% 0%,rgba(255,122,69,.055) 0%,transparent 55%);pointer-events:none;z-index:0}.app{position:relative;z-index:1}.tabs{display:flex;gap:2px;margin:22px 0 0;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:10px;width:fit-content}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:-.005em;padding:7px 16px;border-radius:7px;cursor:pointer;transition:color .18s ease,background .18s ease}.tab:hover{color:var(--cream)}.tab[aria-selected=true]{background:var(--raised);color:var(--cream);box-shadow:0 1px #ffffff0b inset,0 2px 8px #00000059}.spend-hero{padding:36px 0 6px;position:relative}.spend-value{font-family:var(--serif);font-size:clamp(52px,15vw,82px);line-height:.92;letter-spacing:-.025em;font-variant-numeric:tabular-nums;background:linear-gradient(178deg,var(--cream) 30%,#B9AE9E 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.spend-meta{display:flex;gap:22px;flex-wrap:wrap;margin-top:18px;font-size:13px;color:var(--muted)}.spend-meta b{font-family:var(--mono);color:var(--cream);font-weight:500}.rhythm{display:flex;align-items:flex-end;gap:3px;height:128px;margin-top:8px;padding:16px 14px 12px;background:linear-gradient(180deg,var(--surface) 0%,rgba(26,23,20,.35) 100%);border:1px solid var(--line);border-radius:12px}.rhythm-day{flex:1;min-width:0;height:100%;display:flex;align-items:flex-end;position:relative;cursor:default}.rhythm-bar{width:100%;border-radius:2px 2px 1px 1px;background:linear-gradient(180deg,var(--cat-food) 0%,rgba(255,122,69,.42) 100%);transform-origin:bottom;animation:rise .62s cubic-bezier(.22,1,.36,1) backwards;transition:filter .14s ease;min-height:2px}.rhythm-day:hover .rhythm-bar{filter:brightness(1.4) saturate(1.15)}.rhythm-bar.empty{background:var(--line);min-height:2px}.rhythm-bar.peak{background:linear-gradient(180deg,#FFD27A 0%,var(--cat-food) 100%);box-shadow:0 0 14px #ffa05a6b}@keyframes rise{0%{transform:scaleY(.02);opacity:0}to{transform:scaleY(1);opacity:1}}.rhythm-axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--faint);margin-top:9px;padding:0 2px;letter-spacing:.04em}.cat-row{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:14px 0 15px;border-bottom:1px solid var(--line);align-items:baseline}.cat-row:last-child{border-bottom:none}.cat-head{display:flex;align-items:center;gap:9px}.cat-dot{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 9px currentColor}.cat-name{font-size:14px;font-weight:500}.cat-count{font-family:var(--mono);font-size:11px;color:var(--faint)}.cat-amount{font-family:var(--mono);font-size:14.5px;font-variant-numeric:tabular-nums;text-align:right}.cat-share{font-family:var(--mono);font-size:11px;color:var(--muted);text-align:right}.cat-track{grid-column:1 / -1;height:4px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:4px}.cat-fill{height:100%;border-radius:3px;transform-origin:left;animation:grow .72s cubic-bezier(.22,1,.36,1) backwards}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.find{margin-top:12px;padding:18px 20px;border-radius:12px;background:linear-gradient(145deg,#ff5c8a1a,#1a171499 60%);border:1px solid rgba(255,92,138,.24)}.find-title{font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:var(--cat-entertainment);margin-bottom:14px;font-weight:600}.find-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:8px 0}.find-row+.find-row{border-top:1px solid rgba(255,255,255,.055)}.find-name{font-size:13.5px;font-weight:500}.find-cycle{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px}.find-year{font-family:var(--mono);font-size:13.5px;text-align:right}.find-year small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.txn{display:grid;grid-template-columns:38px 1fr auto;gap:0 13px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.txn:last-child{border-bottom:none}.txn-day{font-family:var(--mono);font-size:10px;color:var(--faint);text-align:center;line-height:1.35}.txn-day b{display:block;font-size:15px;color:var(--muted);font-weight:500}.txn-name{font-size:14px;font-weight:500}.txn-sub{font-family:var(--mono);font-size:11px;color:var(--faint);margin-top:3px;display:flex;align-items:center;gap:7px}.txn-cat{display:inline-flex;align-items:center;gap:5px}.txn-cat i{width:6px;height:6px;border-radius:50%;background:currentColor}.txn-amount{font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums;text-align:right}.txn-amount.in{color:var(--gain)}.months{display:flex;gap:6px;margin-top:20px;flex-wrap:wrap}.month-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:transparent;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;padding:5px 11px;border-radius:999px;cursor:pointer;transition:all .16s ease}.month-chip:hover{color:var(--cream);border-color:var(--faint)}.month-chip[aria-selected=true]{background:var(--cat-food);border-color:var(--cat-food);color:#14100c;font-weight:700}.txn-open{cursor:pointer}.txn-open:hover .txn-name{color:#fff}.txn-open:focus-visible{outline:1px solid var(--faint);outline-offset:3px;border-radius:4px}.chev{display:inline-block;margin-left:7px;color:var(--faint);font-size:15px;line-height:1;transform:rotate(90deg);transition:transform .2s cubic-bezier(.22,1,.36,1),color .16s ease}.txn-open:hover .chev{color:var(--muted)}.is-open .chev{transform:rotate(-90deg);color:var(--cream)}.is-open{border-bottom-color:transparent}.receipt{margin:0 0 12px 51px;padding:16px 18px 14px;border-left:2px solid var(--accent);background:linear-gradient(180deg,rgba(255,255,255,.028) 0%,transparent 70%);border-radius:0 8px 8px 0;animation:unfold .26s cubic-bezier(.22,1,.36,1)}@keyframes unfold{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.receipt-block+.receipt-block{margin-top:15px}.receipt-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--faint);margin-bottom:9px}.receipt-line{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:4px 0;font-size:13px}.receipt-line.muted{color:var(--muted);font-size:12.5px}.receipt-line.discount{color:var(--gain);font-size:12.5px}.receipt-item em{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:7px}.receipt-figure{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.free{font-style:normal;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--gain)}.receipt-total{display:flex;justify-content:space-between;align-items:baseline;gap:18px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:13.5px;font-weight:500}.receipt-total .receipt-figure{font-size:15px}.receipt-foot{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-family:var(--mono);font-size:10.5px;color:var(--faint);align-items:center}.receipt-saved{color:#0f0d0b;background:var(--gain);padding:2px 7px;border-radius:3px;font-weight:700;letter-spacing:.03em}.receipt-id{opacity:.6}.receipt-warn{color:var(--loss);border:1px solid rgba(212,95,95,.4);padding:2px 7px;border-radius:3px}.receipt-proxy{color:var(--muted);border:1px dashed var(--line);padding:1px 6px;border-radius:3px}.funding{margin-top:12px}.funding-bar{display:flex;height:5px;border-radius:3px;overflow:hidden;gap:2px}.funding-bar span{display:block}.funding-cash{background:var(--cat-income)}.funding-gift{background:var(--cat-entertainment)}.funding-legend{display:flex;flex-wrap:wrap;gap:5px 16px;margin-top:8px;font-family:var(--mono);font-size:10.5px;color:var(--muted)}.funding-legend i{display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:6px}.txn-amount.moved{color:var(--muted)}.gate{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.gate-card{width:100%;max-width:380px;padding:32px 30px 28px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 64px #00000073}.gate-card .wordmark{font-size:21px;margin-bottom:22px}.gate-title{font-family:var(--serif);font-size:27px;font-weight:400;margin:0 0 12px;letter-spacing:-.01em}.gate-card p{font-size:13.5px;line-height:1.6;color:var(--muted);margin:0 0 16px}.gate-card p.small{font-size:12px}.gate-card .muted{color:var(--faint)}.gate-card pre{font-family:var(--mono);font-size:11px;background:var(--ink);border:1px solid var(--line);border-radius:7px;padding:12px;overflow-x:auto;color:var(--muted)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;border-radius:9px;padding:13px 18px;font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:-.005em;color:#14100c;background:linear-gradient(180deg,#E8BE55 0%,var(--gold) 100%);cursor:pointer;transition:filter .15s ease,opacity .15s ease}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.4;cursor:default}.qr{display:block;width:172px;margin:4px auto 18px;border-radius:10px;background:#fff;padding:10px}.secret{display:block;font-family:var(--mono);font-size:13px;letter-spacing:.13em;text-align:center;color:var(--cream);background:var(--ink);border:1px solid var(--line);border-radius:7px;padding:11px;margin-bottom:18px;word-break:break-all;-webkit-user-select:all;user-select:all}.code{width:100%;box-sizing:border-box;font-family:var(--mono);font-size:26px;letter-spacing:.32em;text-align:center;color:var(--cream);background:var(--ink);border:1px solid var(--line);border-radius:9px;padding:14px 10px;margin-bottom:14px}.code:focus{outline:none;border-color:var(--gold)}.code::placeholder{color:var(--faint);letter-spacing:.32em}.err{color:var(--loss)!important;font-size:12.5px!important;margin-top:14px!important}.email{width:100%;box-sizing:border-box;font-family:var(--sans);font-size:15px;color:var(--cream);background:var(--ink);border:1px solid var(--line);border-radius:9px;padding:13px 14px;margin-bottom:14px}.email:focus{outline:none;border-color:var(--gold)}.email::placeholder{color:var(--faint)}.link{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--muted);font-family:var(--sans);font-size:12.5px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:12px 0 0}.link:hover{color:var(--cream)}.code{font-size:clamp(19px,6vw,26px);letter-spacing:.2em}.code::placeholder{letter-spacing:.2em}.upcoming{margin-top:22px;padding:15px 17px 12px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(150deg,#7a8aff14,#1a17148c 62%)}.upcoming.urgent{border-color:#e8a33d57;background:linear-gradient(150deg,#e8a33d1c,#1a17148c 62%)}.upcoming-head{display:flex;justify-content:space-between;align-items:baseline;font-size:10.5px;text-transform:uppercase;letter-spacing:.13em;color:var(--cat-bills);font-weight:600;margin-bottom:12px}.upcoming.urgent .upcoming-head{color:var(--cat-rent)}.upcoming-total{font-family:var(--mono);letter-spacing:0;text-transform:none;color:var(--cream);font-size:13px}.upcoming-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:7px 0}.upcoming-row+.upcoming-row{border-top:1px solid rgba(255,255,255,.05)}.upcoming-name{font-size:13.5px;font-weight:500}.upcoming-when{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:2px}.upcoming-when.late{color:var(--loss)}.upcoming-amount{font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums}
