*,:before,:after{box-sizing:border-box}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}:root{--bg:#fbfaf8;--surface:#fff;--line:#e6e2dc;--ink:#1c1a17;--ink-soft:#6b655d;--ink-faint:#98918a;--radius:10px;--danger:#b4402f}@media (prefers-color-scheme:dark){:root{--bg:#161513;--surface:#1f1e1b;--line:#322f2b;--ink:#f0ece6;--ink-soft:#a8a199;--ink-faint:#736d66;--danger:#f08573}}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.shell{max-width:60rem;margin:0 auto;padding:2.5rem 1.25rem 4rem}.shell__head{margin-bottom:2rem}.shell__head h1{letter-spacing:-.02em;margin:0;font-size:1.6rem}.shell__tagline{color:var(--ink-soft);margin:.25rem 0 0}.grid{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem 1.25rem}.card__head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.card__title{margin:0;font-size:1.05rem;font-weight:600}.card__area{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem}.card__verdict{margin:.7rem 0 .9rem;font-size:1.05rem;line-height:1.4}.bar{background:var(--line);border-radius:999px;height:6px;overflow:hidden}.bar__fill{border-radius:inherit;height:100%}.stats{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.75rem 1rem;margin:1rem 0 0;display:grid}.stat dt{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;font-size:.72rem}.stat dd{font-variant-numeric:tabular-nums;margin:.15rem 0 0}.card__note{color:var(--ink-soft);margin:.9rem 0 0;font-size:.85rem}.card__note--caveat{color:var(--ink-faint);font-style:italic}.message{color:var(--ink-soft);padding:2rem 0}.message__hint{color:var(--ink-faint);max-width:32rem}.message--error{color:var(--danger)}.message--good{color:var(--ink-soft)}.toolbar{margin-bottom:1.25rem}.button{background:var(--surface);border:1px solid var(--line);color:var(--ink);cursor:pointer;font:inherit;border-radius:8px;padding:.5rem .9rem}.button:hover:not(:disabled){border-color:var(--ink-faint)}.button:disabled{cursor:not-allowed;opacity:.5}.button--quiet{color:var(--ink-soft);background:0 0;border-color:#0000}.form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);gap:.9rem;max-width:26rem;padding:1.25rem;display:grid}.field{gap:.3rem;min-width:0;display:grid}.field>span:first-child{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem}.field input,.field select{background:var(--bg);border:1px solid var(--line);color:var(--ink);font:inherit;border-radius:7px;padding:.45rem .6rem}.field>input,.field>select{width:100%;min-width:0}.inline{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.inline>*{min-width:0}.inline__arrow{color:var(--ink-faint);flex:none}.inline input[type=number]{flex:0 5rem;width:5rem}.inline>:last-child:not(.inline__unit){flex:6rem}.inline__amount{flex:0 6rem;width:6rem}.inline__unit{color:var(--ink-soft);flex:none}.choices{gap:.35rem;display:grid}.choices label{color:var(--ink-soft);align-items:center;gap:.45rem;font-size:.9rem;display:flex}.form__actions{gap:.5rem;display:flex}.week{border:0;gap:.35rem;margin:1rem 0 0;padding:0;display:flex}.week__legend{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;padding:0 0 .4rem;font-size:.72rem}.import__preview{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:34rem;margin-top:1rem;padding:.9rem 1rem}.import__preview p{margin:0 0 .6rem;font-size:.88rem}.import__note{color:var(--ink-soft);font-size:.82rem}.import__rows{margin:0 0 .8rem;font-size:.85rem}.import__rows td,.import__rows th{text-align:left;padding:.3rem .8rem .3rem 0}.holdings{border-top:1px solid var(--line);margin-top:2rem;padding-top:1.1rem}.holdings__title{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .9rem;font-size:.72rem;font-weight:600}.holdings__list{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1.1rem;margin:0;padding:0;list-style:none;display:grid}.holding{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem}.holding__amount{margin:0 0 .5rem;font-size:1.05rem}.holding__spark{aspect-ratio:320/120;width:100%;height:auto;display:block;overflow:visible}.holding__line{stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.holding__now{fill:var(--ink)}.holdings__note{color:var(--ink-faint);max-width:34rem;margin:.9rem 0 0;font-size:.78rem}.chart{margin:1.1rem 0 0}.chart__svg{aspect-ratio:320/120;width:100%;height:auto;display:block;overflow:visible}.chart__actual{stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.chart__required{stroke:var(--ink-faint);stroke-dasharray:4 3;stroke-width:1.5px}.chart__projected{stroke:var(--ink-soft);stroke-dasharray:2 3;stroke-width:1.5px}.chart__deadline{stroke:var(--line);stroke-width:1px}.chart__now{fill:var(--ink)}.chart__key{color:var(--ink-faint);letter-spacing:.05em;text-transform:uppercase;gap:.9rem;margin:.5rem 0 0;font-size:.7rem;display:flex}.chart__key-item{align-items:center;gap:.3rem;display:flex}.chart__key-item:before{content:"";border-top:2px solid;width:.9rem}.chart__key-item--actual{color:var(--ink)}.chart__key-item--required:before{border-top-style:dashed}.chart__key-item--projected:before{border-top-style:dotted}.week__step{color:var(--ink-soft);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex:0 0 1.6rem;justify-content:center;align-items:center;min-height:2.2rem;padding:0;font-size:1rem;line-height:1;display:flex}.week__step:hover:not(:disabled){border-color:var(--line);color:var(--ink)}.week__step:disabled{cursor:default;opacity:.25}.week-nav{justify-content:flex-end;align-items:center;gap:.6rem;margin-bottom:.6rem;display:flex}.week-nav__label{color:var(--ink-faint);letter-spacing:.06em;text-align:center;text-transform:uppercase;min-width:9rem;font-size:.75rem}.week-nav .button{padding:.25rem .55rem;font-size:.78rem}.day{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:2.2rem;font-size:.8rem;display:flex}.day input{opacity:0;pointer-events:none;position:absolute}.day:has(input:focus-visible){outline:2px solid var(--ink-soft);outline-offset:2px}.day--count{font:inherit;background:0 0;flex-direction:column;gap:.1rem;padding:.2rem 0;font-size:.8rem}.day--count:disabled{cursor:not-allowed;opacity:.35}.day__count{font-variant-numeric:tabular-nums;opacity:.8;font-size:.68rem}.day--done{background:var(--ink);border-color:var(--ink);color:var(--bg)}.day--partial{border-color:var(--ink-faint);color:var(--ink)}.day--today{box-shadow:inset 0 0 0 1px var(--ink-faint);font-weight:600}.day--future{cursor:not-allowed;opacity:.35}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:34rem}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;padding:.55rem .5rem}.table thead th{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem;font-weight:600}.table__name{min-width:11rem;font-weight:500}.table__day,.table__cell{text-align:center;width:2.4rem}.table__day abbr{text-decoration:none}.table__date{color:var(--ink-faint);font-size:.68rem;font-weight:400;display:block}.table__day--today,.table__cell--today{background:color-mix(in srgb, var(--ink) 4%, transparent)}.table__verdict{color:var(--ink-soft);min-width:15rem}.table__amount{font-variant-numeric:tabular-nums}.table__empty{color:var(--ink-faint)}.link{color:inherit;cursor:pointer;font:inherit;text-align:left;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;background:0 0;border:0;padding:0}.link:hover{-webkit-text-decoration-color:var(--ink-faint);text-decoration-color:var(--ink-faint)}.tick{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.tick input{opacity:0;width:0;height:0;position:absolute}.tick__mark{border:1px solid var(--line);border-radius:5px;width:1.2rem;height:1.2rem;display:block}.tick--done .tick__mark{background:var(--ink);border-color:var(--ink);position:relative}.tick--done .tick__mark:after{border:solid var(--bg);content:"";border-width:0 2px 2px 0;width:.28rem;height:.5rem;position:absolute;top:.16rem;left:.38rem;transform:rotate(45deg)}.tick:has(input:focus-visible) .tick__mark{outline:2px solid var(--ink-soft);outline-offset:2px}.tick:has(input:disabled){cursor:not-allowed}.tick:has(input:disabled) .tick__mark{opacity:.3}.detail{justify-items:start;gap:1rem;max-width:32rem;display:grid}.detail .card{width:100%}.amount{color:inherit;cursor:pointer;font:inherit;font-variant-numeric:tabular-nums;background:0 0;border:1px solid #0000;border-radius:6px;min-width:2.2rem;padding:.2rem .3rem}.amount:hover:not(:disabled){border-color:var(--line)}.amount:disabled{color:var(--ink-faint);cursor:not-allowed}.amount--logged{font-weight:500}.amount__input{background:var(--bg);border:1px solid var(--ink-faint);color:var(--ink);font:inherit;font-variant-numeric:tabular-nums;text-align:center;border-radius:6px;width:3.6rem;padding:.2rem .3rem}.field__error{color:var(--danger);font-size:.82rem}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 12%, transparent)}.amount__edit{display:inline-block}.amount__error{color:var(--danger);max-width:8rem;margin-top:.25rem;font-size:.75rem;display:block}.amount__input[aria-invalid=true]{border-color:var(--danger)}.detail__bar{justify-content:space-between;align-items:center;gap:.5rem;width:100%;display:flex}.detail__actions{gap:.25rem;display:flex}.detail__title{margin:0;font-size:1.05rem;font-weight:600}.field__static{gap:.15rem;margin:0;display:grid}.field__hint{color:var(--ink-soft);font-size:.82rem}.button--danger{border-color:var(--danger);color:var(--danger)}.button--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 10%, transparent);border-color:var(--danger)}.archive{border-top:1px solid var(--line);color:var(--ink-soft);margin-top:2rem;padding-top:1rem}.archive__summary{cursor:pointer;font-size:.9rem}.archive__list{gap:.4rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.archive__item{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.archive__name{color:var(--ink);flex:12rem}.archive__note{max-width:34rem;margin:.9rem 0 0;font-size:.82rem}.count{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;font:inherit;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;background:0 0;border-radius:6px;min-width:2.4rem;padding:.25rem .3rem;font-size:.78rem}.count:hover:not(:disabled){border-color:var(--ink-faint)}.count:disabled{cursor:not-allowed;opacity:.35}.count--partial{border-color:var(--ink-faint);color:var(--ink)}.count--done{background:var(--ink);border-color:var(--ink);color:var(--bg)}.amount__confirm{background:var(--surface);border:1px solid var(--line);white-space:normal;border-radius:8px;gap:.5rem;max-width:16rem;margin-top:.3rem;padding:.6rem .7rem;font-size:.82rem;display:grid}.amount__confirm-actions{justify-content:flex-end;gap:.35rem;display:flex}.amount__confirm .button{padding:.3rem .6rem;font-size:.82rem}.history{border-top:1px solid var(--line);width:100%;margin-top:1.5rem;padding-top:1rem}.history__title{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .6rem;font-size:.72rem;font-weight:600}.history__table{border-collapse:collapse;width:100%;font-size:.88rem}.history__table th{color:var(--ink-faint);letter-spacing:.06em;text-align:left;text-transform:uppercase;padding:0 .5rem .35rem 0;font-size:.7rem;font-weight:500}.history__table td{border-top:1px solid var(--line);vertical-align:top;padding:.45rem .5rem .45rem 0}.history__when{color:var(--ink-soft);white-space:nowrap}.history__amount,.history__total{font-variant-numeric:tabular-nums;white-space:nowrap}.history__total{color:var(--ink-soft)}.history__moved{color:var(--ink-faint);font-size:.78rem;display:block}.history__action{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;display:flex}.history__action .button{padding:.2rem .45rem;font-size:.78rem}.history__note{color:var(--ink-faint);max-width:34rem;margin:.75rem 0 0;font-size:.78rem}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.data__confirm{background:var(--surface);border:1px solid var(--danger);border-radius:8px;justify-items:start;gap:.5rem;max-width:34rem;margin-top:.75rem;padding:.85rem 1rem;display:grid}.data__confirm p{margin:0;font-size:.85rem}.data__confirm .button{padding:.3rem .6rem;font-size:.82rem}.data .message{padding:.75rem 0 0;font-size:.85rem}
