@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(./archivo-vietnamese-wdth-normal-rJmnGBSt.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(./archivo-latin-ext-wdth-normal-7khWdh9v.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(./archivo-latin-wdth-normal-DY7AcnAa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--red:#c41526;--red-deep:#9e0f1d;--red-tint:#ffdcdc;--ground:#f2f0ea;--sheet:#e3dfd3;--paper:#fff;--ink:#1d1e22;--ink-2:#55575e;--line:#d6d2c6;--green:#1d7346;--font:"Archivo Variable", "Archivo", system-ui, sans-serif;--narrow:64%;--ease-out:cubic-bezier(.16, 1, .3, 1);--radius:6px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font);color:var(--ink);background:var(--ground);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;scrollbar-color:#b9b4a6 var(--ground);font-size:16px;line-height:1.45}*,:before,:after{box-sizing:border-box}body{background:var(--ground);min-width:320px;margin:0}h1,h2,p,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--red);color:#fff}:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{grid-template-columns:248px minmax(0,1fr);min-height:100dvh;display:grid}.rail{background:var(--red);color:#fff;scrollbar-color:var(--red-deep) var(--red);flex-direction:column;gap:28px;height:100dvh;padding:28px 18px 22px;display:flex;position:sticky;top:0;overflow-y:auto}.rail :focus-visible{outline-color:#fff}.brand{letter-spacing:-.01em;align-items:center;gap:12px;padding-inline:6px;font-size:1.75rem;font-weight:800;font-stretch:75%;line-height:1;display:flex}.brand small{letter-spacing:0;color:var(--red-tint);margin-top:4px;font-size:.8125rem;font-weight:500;font-stretch:100%;display:block}.logo{flex:none;width:32px;height:39px}.months ol{gap:2px;display:grid}.months button{border-radius:var(--radius);width:100%;color:var(--red-tint);text-align:left;transition:background .16s var(--ease-out);background:0 0;border:0;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 12px;font-size:.9375rem;display:flex}.months button:hover{background:#0000001a}.months button[aria-current=page]{color:#fff;background:#00000038;font-weight:700}.months em{letter-spacing:.06em;text-transform:uppercase;vertical-align:1px;border:1px solid;border-radius:99px;margin-left:8px;padding:1px 6px;font-size:.6875rem;font-style:normal;font-weight:700}.months-left{font-stretch:80%}.months-left.is-neg{color:#fff;text-underline-offset:4px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy;text-decoration-thickness:1px}.add-btn{border-radius:var(--radius);color:var(--red);transition:transform .16s var(--ease-out), box-shadow .16s var(--ease-out);background:#fff;border:0;align-items:center;gap:10px;margin-top:auto;padding:14px;font-weight:700;display:flex;box-shadow:0 2px 6px #3c000540}.add-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #3c00054d}.add-btn:active{transform:translateY(0)}.add-btn kbd{font:600 .75rem var(--font);color:var(--red);border:1px solid #f0b6b9;border-radius:4px;margin-left:auto;padding:2px 7px}.rail-foot{color:var(--red-tint);gap:8px;padding-inline:6px;font-size:.8125rem;display:grid}.rail-foot button,.foot-mobile button{color:#fff;text-underline-offset:3px;background:0 0;border:0;justify-self:start;align-items:center;gap:6px;padding:0;font-weight:600;text-decoration:underline;display:inline-flex}.month-stepper{display:none}.main{grid-template-columns:minmax(0,1fr) minmax(340px,400px);align-items:start;gap:48px;max-width:1480px;padding:40px clamp(20px,3.4vw,52px) 64px;display:grid}h1{gap:6px;display:grid}.figure{font-size:clamp(3.75rem,7.2vw,6rem);font-weight:800;font-stretch:var(--narrow);letter-spacing:-.02em;line-height:.88}.figure-label{font-size:1.375rem;font-weight:600;line-height:1.2}h1.is-over .figure{color:var(--red)}.pace{color:var(--ink-2);margin-top:10px}.summary{border-block:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,max-content));gap:12px 40px;margin-top:28px;padding-block:18px;display:grid}.summary dt{color:var(--ink-2);font-size:.8125rem}.summary dd{font-size:1.375rem;font-weight:700;font-stretch:85%}.is-in{color:var(--green)}.is-neg{color:var(--red)}.budgets{margin-top:40px}.budgets-head{flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-bottom:14px;display:flex}h2{font-size:1.25rem;font-weight:750;line-height:1.2}.budgets-note{color:var(--ink-2);flex:220px;font-size:.9375rem}.sheet{background:var(--sheet);border-radius:2px;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:10px;padding:18px;display:grid}.stamp{--perf:var(--sheet);background:radial-gradient(circle at 50% 0, var(--perf) 3.3px, transparent 3.8px) 50% 0 / 12px 6px repeat-x, radial-gradient(circle at 50% 100%, var(--perf) 3.3px, transparent 3.8px) 50% 100% / 12px 6px repeat-x, radial-gradient(circle at 0 50%, var(--perf) 3.3px, transparent 3.8px) 0 50% / 6px 12px repeat-y, radial-gradient(circle at 100% 50%, var(--perf) 3.3px, transparent 3.8px) 100% 50% / 6px 12px repeat-y, var(--paper);filter:drop-shadow(0 1px 1px #281e0a1f);transition:transform .26s var(--ease-out), filter .26s var(--ease-out), opacity .26s var(--ease-out);padding:9px;position:relative;overflow:hidden}.stamp-face{aspect-ratio:1;background:var(--hue);width:100%;color:var(--stamp-ink);text-align:left;border:0;border-radius:0;grid-template-rows:auto 1fr auto auto;gap:4px;padding:12px;display:grid;position:relative;overflow:hidden}.stamp-name{font-size:.875rem;font-weight:650}.stamp-value{letter-spacing:-.01em;align-self:end;font-size:clamp(2.25rem,3.4vw,2.9rem);font-weight:800;font-stretch:62%;line-height:.9}.stamp-of{font-size:.8125rem;font-weight:500}.stamp-meter{background:color-mix(in srgb, currentColor 28%, transparent);height:4px;margin-top:6px;display:block}.stamp-meter i{height:100%;transition:inline-size .7s var(--ease-out);background:currentColor;display:block}button.stamp-face:hover{filter:brightness(1.06)}.stamp.is-active{filter:drop-shadow(0 10px 14px #281e0a47);z-index:1;transform:translateY(-5px)rotate(-1.2deg)}.sheet:has(.is-active) .stamp:not(.is-active){opacity:.5}.sheet:has(.is-active) .stamp:not(.is-active):hover{opacity:.85}.stamp-budget{gap:2px;font-size:.75rem;font-weight:600;display:grid}.stamp-budget-field{align-items:center;gap:4px;font-size:1rem;font-weight:700;display:flex}.stamp-budget input{color:#1d1e22;background:#fff;border:0;border-radius:3px;width:100%;min-width:0;padding:4px 6px;font-weight:700}.postmark{pointer-events:none;fill:none;stroke:#17181b;stroke-width:2.4px;opacity:.82;mix-blend-mode:multiply;width:84%;position:absolute;top:-5%;left:50%;transform:rotate(-11deg)}.postmark-text{fill:#17181b;stroke:none;font:800 8.5px var(--font);letter-spacing:.08em}.postmark .wave{stroke-dasharray:140;stroke-dashoffset:0}.postmark.is-stamping circle,.postmark.is-stamping text{animation:stamp-in .52s var(--ease-out) both;transform-origin:45px 45px}.postmark.is-stamping .wave{animation:wave-draw .6s var(--ease-out) both}@keyframes stamp-in{0%{opacity:0;transform:scale(1.6)}}@keyframes wave-draw{0%{stroke-dashoffset:140px}}.stamp.is-over .stamp-of{font-weight:700}.side{gap:24px;scroll-margin-top:16px;display:grid}.composer{background:var(--paper);border-radius:0 0 var(--radius) var(--radius);animation:composer-in .32s var(--ease-out);gap:16px;padding:22px 20px 20px;display:grid;position:relative;box-shadow:0 6px 20px #281e0a1f}.composer:before{content:"";background:radial-gradient(circle at 6px 0, var(--ground) 4px, var(--paper) 4.5px) 0 5px / 12px 10px repeat-x;height:10px;position:absolute;inset:-5px 0 auto}@keyframes composer-in{0%{opacity:0;transform:translateY(-8px)}}.composer-head{justify-content:space-between;align-items:center;display:flex}.icon-btn{border-radius:var(--radius);background:0 0;border:0;place-items:center;width:36px;height:36px;display:inline-grid}.icon-btn:hover:not(:disabled){background:#0000000f}.icon-btn:disabled{opacity:.35;cursor:default}.segmented{border-radius:var(--radius);background:var(--ground);border:0;grid-template-columns:1fr 1fr;margin:0;padding:3px;display:grid}.segmented label{text-align:center;color:var(--ink-2);cursor:pointer;transition:background .16s var(--ease-out), color .16s var(--ease-out);border-radius:4px;padding:8px;font-weight:600;position:relative}.segmented input{opacity:0;cursor:pointer;position:absolute;inset:0}.segmented label.is-on{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px #0000001f}.segmented label:has(:focus-visible){outline:3px solid var(--ink);outline-offset:1px}.field{gap:6px;min-width:0;display:grid}.field label{font-size:.875rem;font-weight:600}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field input,.field select,.money-input{border-radius:var(--radius);background:var(--paper);width:100%;min-height:44px;caret-color:var(--red);border:1px solid #b8b3a6;padding:10px 12px}.field input:hover,.field select:hover{border-color:var(--ink-2)}.field input:focus-visible,.field select:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.field [aria-invalid=true]{border-color:var(--red)}.money-input{align-items:baseline;gap:6px;padding-block:4px;display:flex}.money-input:has(:focus-visible){outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.money-input:has([aria-invalid=true]){border-color:var(--red)}.money-input span{color:var(--ink-2);font-size:1.5rem;font-weight:700;font-stretch:70%}.field .money-input input{border:0;outline:none;min-height:0;padding:0;font-size:2rem;font-weight:800;font-stretch:70%}.field-error{color:var(--red);font-size:.875rem;font-weight:500}.composer-actions{align-items:center;gap:8px;margin-top:4px;display:flex}.spacer{flex:1;min-width:16px}.btn{border-radius:var(--radius);white-space:nowrap;min-height:40px;transition:background .16s var(--ease-out), border-color .16s var(--ease-out), color .16s var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:.9375rem;font-weight:650;display:inline-flex}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{background:#000}.btn-quiet{background:0 0;border-color:#b8b3a6}.btn-quiet:hover{border-color:var(--ink-2);background:#0000000d}.btn-danger{border-color:color-mix(in srgb, var(--red) 55%, transparent);color:var(--red);background:0 0}.btn-danger:hover,.btn-danger:focus-visible{background:var(--red);border-color:var(--red);color:#fff}.ledger-head{align-items:baseline;gap:10px;display:flex}.count{color:var(--ink-2);font-size:.9375rem}.ledger-tools{gap:10px;margin:12px 0 8px;display:grid}.search{border-radius:var(--radius);background:var(--paper);min-height:42px;color:var(--ink-2);border:1px solid #b8b3a6;align-items:center;gap:8px;padding-inline:12px;display:flex}.search:has(:focus-visible){outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}.search input{min-width:0;color:var(--ink);caret-color:var(--red);background:0 0;border:0;outline:none;flex:1}.search input::placeholder,.field input::placeholder{color:#6c6e74}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:0 0;border:1px solid #b8b3a6;border-radius:99px;align-items:center;gap:6px;min-height:32px;padding:4px 12px;font-size:.875rem;font-weight:600;display:inline-flex}.chip:hover{border-color:var(--ink-2)}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.chip-cat{background:var(--paper);border-color:var(--ink)}.chip-cat i{background:var(--hue);width:10px;height:12px}.tx-list{display:grid}.tx{border:0;border-bottom:1px solid var(--line);text-align:left;width:100%;transition:background .14s var(--ease-out);background:0 0;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 8px;display:grid}.tx:hover{background:#ffffffa6}.tx.is-selected{background:var(--paper);box-shadow:inset 0 0 0 1px var(--ink)}.tx-date{border:1.5px solid var(--ink-2);letter-spacing:.06em;width:44px;height:44px;color:var(--ink-2);border-radius:50%;align-content:center;place-items:center;font-size:.625rem;font-weight:700;line-height:1;display:grid;transform:rotate(-8deg)}.tx-date b{color:var(--ink);letter-spacing:0;margin-bottom:1px;font-size:.9375rem;font-stretch:75%}.tx-body{gap:2px;min-width:0;display:grid}.tx-desc{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.tx-cat{color:var(--ink-2);align-items:center;gap:6px;font-size:.8125rem;display:flex}.tx-cat i{flex:none;width:8px;height:10px}.tx-amt{font-weight:700;font-stretch:85%}.tx-amt.is-in{color:var(--green)}.empty{color:var(--ink-2);justify-items:start;gap:12px;padding:28px 4px;display:grid}.toast-region{pointer-events:none;z-index:10;justify-content:center;display:flex;position:fixed;inset:auto 0 20px}.toast{border-radius:var(--radius);background:var(--ink);color:#fff;pointer-events:auto;max-width:calc(100vw - 32px);animation:toast-in .3s var(--ease-out);align-items:center;gap:18px;padding:12px 14px 12px 18px;display:flex;box-shadow:0 10px 30px #00000040}.toast button{color:#fff;background:0 0;border:1px solid #ffffff80;border-radius:4px;padding:6px 10px;font-weight:700}.toast button:hover{color:var(--ink);background:#fff}.toast :focus-visible{outline-color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.foot-mobile{display:none}@media (width<=1180px){.main{grid-template-columns:minmax(0,1fr);gap:40px}}@media (width<=760px){.app{grid-template-columns:1fr}.rail{z-index:5;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;height:auto;padding:10px 12px;display:grid;position:sticky;top:0;overflow:visible}.brand{padding:0;font-size:1.375rem}.brand small,.months,.rail-foot,.add-btn span,.add-btn kbd{display:none}.logo{width:26px;height:32px}.month-stepper{white-space:nowrap;justify-content:center;align-items:center;gap:2px;font-size:.9375rem;font-weight:700;display:flex}.month-stepper .icon-btn{color:#fff;width:40px;height:40px}.month-stepper .icon-btn:hover:not(:disabled){background:#00000026}.add-btn{justify-content:center;width:44px;height:44px;margin:0;padding:0}.main{padding:24px 16px 96px}.side{scroll-margin-top:80px}.summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px}.sheet{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px}.stamp-value{font-size:2.4rem}.field-row{grid-template-columns:1fr}.foot-mobile{color:var(--ink-2);gap:6px;margin-top:8px;font-size:.8125rem;display:grid}.foot-mobile button{color:var(--ink)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}.stamp.is-active{transform:none}}.toast-warn{background:var(--red)}
