:root{color-scheme:light;--sheet: #fcfcf8;--raised: #ffffff;--band: #e3ece0;--band-deep: #d2dfce;--rule: #c6d1c4;--rule-soft: #e2e8df;--ink: #16241f;--ink-2: #57685f;--ink-3: #8b978f;--in: #17654a;--over: #ab3320;--over-tint: #f6e3de;--measure: 40rem;--gutter: 1.15rem;--safe-bottom: env(safe-area-inset-bottom, 0px);--font-title: "Newsreader", Georgia, "Times New Roman", serif;--font-ui: "Archivo", "Segoe UI", system-ui, sans-serif;font-family:var(--font-ui);font-size:16px;-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;background:var(--sheet);color:var(--ink);font-family:var(--font-ui);font-size:.9375rem;line-height:1.5;min-height:100dvh;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:.15em}a:hover{text-decoration-color:var(--ink)}::placeholder{color:var(--ink-3)}::selection{background:var(--band-deep)}.sheet{max-width:var(--measure);margin:0 auto;padding:0 var(--gutter) calc(5.5rem + var(--safe-bottom))}.bleed{margin-left:calc(var(--gutter) * -1);margin-right:calc(var(--gutter) * -1)}.center-screen{min-height:70dvh;display:grid;place-content:center;justify-items:center;gap:.85rem;text-align:center}.stack{display:grid;gap:.7rem}.stack-tight{display:grid;gap:.4rem}.row{display:flex;justify-content:space-between;align-items:center;gap:.7rem;flex-wrap:wrap}.row-start{justify-content:flex-start}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1rem 0 .7rem}.masthead-title{font-family:var(--font-title);font-size:1.15rem;font-weight:600;letter-spacing:-.01em;margin:0;line-height:1.2}.masthead-meta{margin:0;font-size:.8125rem;color:var(--ink-2);white-space:nowrap}.nav-primary{display:none;gap:1.1rem;flex-wrap:wrap;padding:.55rem 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:1.4rem}.nav-primary a{font-size:.875rem;color:var(--ink-2);text-decoration:none;padding-bottom:1px;border-bottom:2px solid transparent}.nav-primary a:hover{color:var(--ink)}.nav-primary a.active{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}.nav-tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);background:var(--sheet);border-top:1px solid var(--rule);padding-bottom:var(--safe-bottom)}.nav-tabs a{text-align:center;font-size:.75rem;color:var(--ink-3);text-decoration:none;padding:.7rem .15rem .65rem;border-top:2px solid transparent;margin-top:-1px}.nav-tabs a.active{color:var(--ink);font-weight:600;border-top-color:var(--ink)}@media (min-width: 800px){.nav-primary{display:flex}.nav-tabs{display:none}.sheet{padding-bottom:3rem}}.section{padding:1.4rem 0 0}.section+.section{border-top:1px solid var(--rule-soft);margin-top:1.4rem}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem;margin-bottom:.65rem}.section-title{font-family:var(--font-title);font-size:1.0625rem;font-weight:600;letter-spacing:-.005em;margin:0;line-height:1.25}.section-note{margin:-.35rem 0 .85rem;color:var(--ink-2);font-size:.8125rem;max-width:42ch}.amount{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.amount-in{color:var(--in)}.amount-over{color:var(--over)}.amount-lg{font-size:1.1875rem}.headline{background:var(--band);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:1.5rem var(--gutter) 1.35rem}.headline-label{margin:0;font-size:.8125rem;color:var(--ink-2)}.headline-figure{display:block;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;font-size:clamp(2.75rem,13vw,4.25rem);font-weight:600;letter-spacing:-.045em;line-height:1;margin:.35rem 0 0}.headline-figure-over{color:var(--over)}.headline-currency{font-size:.4em;font-weight:500;color:var(--ink-2);letter-spacing:0;margin-left:.14em}.headline-aside{margin:.5rem 0 0;font-size:.8125rem;color:var(--ink-2)}.headline-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}.burn{margin-top:1.15rem}.burn-track{position:relative;height:7px;border-radius:999px;background:var(--band-deep)}.burn-fill{height:100%;width:var(--spent, 0%);border-radius:999px;background:var(--ink);animation:burn-draw .7s cubic-bezier(.22,1,.36,1) both}.burn-fill-over{background:var(--over)}.burn-tick{position:absolute;top:-5px;bottom:-5px;left:var(--pace, 0%);width:2px;border-radius:1px;background:var(--ink-2)}.burn-legend{display:flex;justify-content:space-between;gap:.75rem;margin-top:.55rem;font-size:.75rem;color:var(--ink-2);font-variant-numeric:tabular-nums}@keyframes burn-draw{0%{width:0}}.ledger{display:grid}.ledger-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.9rem;padding:.6rem .55rem;border-bottom:1px solid var(--rule-soft)}.ledger-row:last-child{border-bottom:0}.ledger-row:after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:var(--use, 0%);max-width:100%;background:var(--ink)}.ledger-row-over:after{background:var(--over)}.ledger-row>*{position:relative}button.ledger-row{width:100%;border:0;border-bottom:1px solid var(--rule-soft);border-radius:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}button.ledger-row:hover{background:var(--band)}.ledger-main{min-width:0}.ledger-label{display:block;overflow-wrap:anywhere}.ledger-sub{display:block;font-size:.75rem;color:var(--ink-2);margin-top:.1rem}.ledger-side{display:grid;justify-items:end;gap:.3rem}.ledger-day{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;padding:1rem .55rem .35rem;border-bottom:1px solid var(--rule);font-size:.8125rem;color:var(--ink-2)}.ledger-day:first-child{padding-top:.2rem}.compbar{display:flex;gap:2px;height:10px;margin-bottom:.9rem;background:var(--band-deep);border-radius:999px;overflow:hidden}.compbar-seg{width:var(--w, 0%);background:var(--c, var(--ink));min-width:2px}.swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:.5rem;vertical-align:0;flex:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;background:var(--ink);color:var(--sheet);border:1px solid var(--ink);border-radius:10px;padding:.68rem 1.05rem;font-family:var(--font-ui);font-size:.9375rem;font-weight:600;line-height:1.2;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.btn:hover{background:#223229;border-color:#223229}.btn:active{transform:translateY(1px)}.btn.secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.btn.secondary:hover{background:var(--band);border-color:var(--rule)}.btn.danger{background:transparent;color:var(--over);border-color:color-mix(in srgb,var(--over) 30%,var(--rule))}.btn.danger:hover{background:var(--over-tint);border-color:var(--over)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2);padding-left:.35rem;padding-right:.35rem;font-weight:500}.btn.ghost:hover{background:transparent;border-color:transparent;color:var(--ink);text-decoration:underline;text-underline-offset:.15em}.btn-sm{padding:.36rem .68rem;font-size:.8125rem;border-radius:8px}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn-block{width:100%}input,select,textarea{width:100%;padding:.68rem .75rem;border:1px solid var(--rule);border-radius:10px;background:var(--raised);color:var(--ink);font-family:var(--font-ui);font-size:1rem;line-height:1.35;transition:border-color .15s ease,box-shadow .15s ease}textarea{resize:vertical}input[type=checkbox]{width:1.1rem;height:1.1rem;flex:none;accent-color:var(--ink);padding:0}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 13%,transparent)}.btn:focus-visible,.chip:focus-visible,.seg-btn:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:6px}.field{display:grid;gap:.3rem}.field-label{font-size:.8125rem;color:var(--ink-2)}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.input-narrow{max-width:8rem}.input-tiny{max-width:5.5rem}.amount-field{position:relative}.amount-field input{font-size:2.1rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.03em;padding:.65rem 2.5rem .65rem .75rem;line-height:1.15}.amount-field-suffix{position:absolute;right:.85rem;top:50%;transform:translateY(-50%);font-size:1.4rem;color:var(--ink-3);pointer-events:none}.seg{display:inline-flex;width:100%;padding:3px;gap:3px;background:var(--band);border:1px solid var(--rule);border-radius:12px}.seg-btn{flex:1;padding:.5rem .85rem;border:0;border-radius:9px;background:transparent;color:var(--ink-2);font-family:var(--font-ui);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease}.seg-btn.is-on{background:var(--raised);color:var(--ink);box-shadow:0 0 0 1px var(--rule)}.chips{display:flex;flex-wrap:wrap;gap:.35rem}.chip{padding:.38rem .7rem;border:1px solid var(--rule);border-radius:999px;background:var(--raised);color:var(--ink-2);font-family:var(--font-ui);font-size:.8125rem;font-weight:500;font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}.chip:hover{border-color:var(--ink-3);color:var(--ink)}.chip.is-on{background:var(--ink);border-color:var(--ink);color:var(--sheet)}.check{display:flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer}.check input{width:1.1rem}.muted{color:var(--ink-2);font-size:.8125rem}.pill{display:inline-block;padding:.1rem .45rem;border:1px solid var(--rule);border-radius:5px;background:transparent;font-size:.75rem;font-weight:500;color:var(--ink-2);white-space:nowrap}.pill-warn{border-color:color-mix(in srgb,var(--over) 35%,var(--rule));color:var(--over)}.note{margin:0;font-size:.8125rem;color:var(--ink-2)}.error{margin:0;padding:.6rem .75rem;border-left:2px solid var(--over);background:var(--over-tint);color:var(--over);font-size:.875rem;border-radius:0 6px 6px 0}.empty{padding:1.4rem .55rem;color:var(--ink-2);font-size:.875rem;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft)}.empty strong{display:block;color:var(--ink);font-weight:600;margin-bottom:.15rem}.code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem;background:var(--band);padding:.1rem .35rem;border-radius:4px;overflow-wrap:anywhere}.steps{margin:0;padding-left:1.15rem;color:var(--ink-2);font-size:.8125rem;line-height:1.65}.steps li{padding-left:.15rem}.steps li+li{margin-top:.5rem}.steps strong{color:var(--ink);font-weight:600}.digest{margin:0;padding:.85rem .9rem;background:var(--band);border-radius:8px;font-family:inherit;font-size:.875rem;line-height:1.55;white-space:pre-wrap}.qr{align-self:center;background:var(--raised);border:1px solid var(--rule);border-radius:8px;padding:.5rem}.spinner{width:22px;height:22px;border:2px solid var(--rule);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:100dvh;display:grid;align-content:center;gap:1.6rem;padding:2rem 0}.login-title{font-family:var(--font-title);font-size:clamp(1.9rem,8vw,2.6rem);font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0}.login-lede{margin:.5rem 0 0;color:var(--ink-2);font-size:.9375rem;max-width:34ch}.advice{display:grid}.advice-item{padding:.85rem .55rem;border-bottom:1px solid var(--rule-soft)}.advice-item:last-child{border-bottom:0}.advice-item strong{display:block;font-weight:600;margin-bottom:.15rem}.advice-item p{margin:0;font-size:.875rem;color:var(--ink-2)}.edit-row{display:grid;grid-template-columns:minmax(0,1fr) 6.5rem auto;gap:.5rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--rule-soft)}.edit-row:last-child{border-bottom:0}.edit-row-simple{grid-template-columns:minmax(0,1fr) auto}.edit-row-archived input{color:var(--ink-3)}.index-list{display:grid}.index-list a{display:grid;gap:.1rem;padding:.85rem .55rem;border-bottom:1px solid var(--rule-soft);text-decoration:none}.index-list a:last-child{border-bottom:0}.index-list a:hover{background:var(--band)}.index-list strong{font-weight:600}.index-list span{font-size:.8125rem;color:var(--ink-2)}.chart{width:100%;margin:0 -.4rem .2rem}.chart-legend{display:flex;gap:1.1rem;font-size:.75rem;color:var(--ink-2)}.chart-legend span{display:inline-flex;align-items:center}.route{animation:route-in .16s ease both}@keyframes route-in{0%{opacity:0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
