:root{--paper:#f7f4ec;--ink:#14130d;--ink-soft:#3a382c;--dim:#8b8676;--hair:#d8d2c1;--hair-soft:#e6e0cf;--accent:#b03a2e;--on-ink:#f7f4ec;--s-xxs:4px;--s-xs:8px;--s-sm:12px;--s-md:16px;--s-lg:24px;--s-xl:32px;--col-code:36px;--col-amt:88px}*{box-sizing:border-box}html,body{margin:0}body{background:var(--paper);color:var(--ink-soft);font-family:var(--font-ui), -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", sans-serif;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit;line-height:inherit;cursor:pointer;color:inherit;background:0 0;border:none;padding:0}form.inline{align-items:center;display:flex}.lbl{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.17em;text-transform:uppercase;color:var(--dim);font-size:10px}.amt{font-family:var(--font-mono), ui-monospace, Menlo, monospace;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--ink)}.total{font-family:var(--font-mono), ui-monospace, Menlo, monospace;font-variant-numeric:tabular-nums;letter-spacing:-.035em;color:var(--ink);font-size:33px;font-weight:700;line-height:1}.mono{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.1em}.wordmark{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);font-size:12px;font-weight:600}.mini{color:var(--dim);font-size:12.5px}.hair{border-top:1px solid var(--hair);margin:var(--s-sm) 0}.row,.rowhead{grid-template-columns:var(--col-code) 1fr var(--col-amt);column-gap:var(--s-xs);align-items:baseline;display:grid}.rowhead{border-bottom:1.5px solid var(--ink);padding-bottom:5px}.row{border-bottom:1px solid var(--hair);padding:7px 0 6px}.row:active{box-shadow:inset 0 0 0 999px #14130d0a}.code{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.08em;color:var(--dim);font-size:9px}.nm{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.nm .sub{color:var(--dim);font-size:12.5px;font-weight:400;display:block}.row,.rowhead,.daybar{background-image:linear-gradient(var(--hair), var(--hair));background-repeat:no-repeat;background-size:1px 100%;background-origin:border-box;background-position:calc(100% - var(--col-amt) - var(--s-xxs)) 0}.row>.amt,.daybar>.amt{text-align:right;padding-left:var(--s-xs);font-size:13px;font-weight:500}.rowhead>.amt{text-align:right;padding-left:var(--s-xs)}.rowhead{background-size:1px calc(100% - 5px)}.daybar.day{border-top:1.5px solid var(--ink);border-bottom:1px solid var(--hair);margin-top:var(--s-lg);padding:9px 0 7px}.daybar.day:first-of-type{margin-top:var(--s-md)}.daybar .dayname{color:var(--ink);font-size:13px;font-weight:600}.daybar .dow{font-family:var(--font-mono), ui-monospace, Menlo, monospace;color:var(--dim);margin-left:5px;font-size:9.5px}.daybar .go{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);border:1px solid var(--hair);white-space:nowrap;margin-left:7px;padding:2px 6px;font-size:9px}.daybar .go:active{background:var(--ink);color:var(--on-ink)}.daybar.todo{border-top-color:var(--accent)}.daybar.todo .dayname{color:var(--accent)}.daybar{grid-template-columns:1fr var(--col-amt);column-gap:var(--s-xs);align-items:baseline;padding:14px 0 5px;display:grid}.daybar>.amt{font-weight:700}.subrow{grid-template-columns:var(--col-code) 1fr var(--col-amt);column-gap:var(--s-xs);border-bottom:1px dotted var(--hair);background-image:linear-gradient(var(--hair), var(--hair));background-repeat:no-repeat;background-size:1px 100%;background-origin:border-box;background-position:calc(100% - var(--col-amt) - var(--s-xxs)) 0;align-items:baseline;padding:5px 0;display:grid}.subrow .code{opacity:.6;padding-left:9px}.subrow .nm{color:var(--dim);font-size:12px;font-weight:400}.subrow>.amt{text-align:right;padding-left:var(--s-xs);font-size:12px;font-weight:400}.bar{background:#14130d1a;grid-column:2/3;height:3px;margin-top:4px}.bar>i{background:var(--ink);height:100%;display:block}.delta{text-align:right;font-family:var(--font-mono), ui-monospace, Menlo, monospace;color:var(--dim);padding-left:var(--s-xs);grid-column:3/4;margin-top:3px;font-size:9px}.delta.up{color:var(--accent)}.warn{border-left:3px solid var(--accent);padding:2px 0 2px 11px}.warn.calm{border-left-color:var(--ink)}.meter{background:var(--hair-soft);height:4px;margin-top:7px}.meter>i{background:var(--accent);height:100%;display:block}.meter.calm>i{background:var(--ink)}.split{border:1px solid var(--ink);height:22px;display:flex}.split>i{height:100%;display:block}.split .fix{background:var(--ink)}.split .var{background:repeating-linear-gradient(135deg, var(--ink) 0 1px, transparent 1px 5px)}.heat{grid-template-columns:18px repeat(7,1fr);align-items:center;gap:3px;display:grid}.heat .hd,.heat .wk{font-family:var(--font-mono), ui-monospace, Menlo, monospace;color:var(--dim);font-size:8.5px}.heat .hd{text-align:center}.heat .cell{aspect-ratio:1;border:1px solid #14130d24}.heat .cell.void{border-color:#0000}.row-between{justify-content:space-between;align-items:center;gap:var(--s-sm);display:flex}.row-flex{align-items:center;gap:var(--s-sm);display:flex}.tabs{gap:4px;display:flex}.tab{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--hair);color:var(--ink);white-space:nowrap;padding:6px 10px;font-size:9.5px}.tab.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.btn{background:var(--ink);height:46px;color:var(--on-ink);justify-content:center;align-items:center;gap:var(--s-xs);border-radius:3px;padding:0 18px;font-size:13.5px;font-weight:600;display:inline-flex}.btn:active{background:#000}.btn:disabled{background:var(--hair);color:var(--dim);cursor:default}.btn-ghost{color:var(--ink);border:1px solid var(--ink);background:0 0}.btn-ghost:active{background:#14130d0f}select{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:right 10px top calc(50% - 1px),right 6px top calc(50% - 1px);background-repeat:no-repeat;background-size:4px 4px,4px 4px;padding-right:22px}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--hair);background:0 0;border-radius:3px;width:100%;min-height:44px;padding:9px 11px}input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:none}.field{border:1px solid var(--hair);border-radius:3px;flex:1;min-width:0;padding:5px 11px 7px}.field>.lbl{margin-bottom:1px;display:block}.field input,.field select{border:none;min-height:26px;padding:0;font-size:14px;font-weight:500}.field:focus-within{border-color:var(--ink)}.stack{display:grid}.scroll-x{scrollbar-width:none;gap:5px;display:flex;overflow-x:auto}.scroll-x::-webkit-scrollbar{display:none}.dock{padding:var(--s-sm) var(--s-md);padding-bottom:max(var(--s-sm), env(safe-area-inset-bottom));background:linear-gradient(to top, var(--paper) 72%, transparent);pointer-events:none;position:fixed;bottom:0;left:0;right:0}.dock>*{pointer-events:auto}.dock-inner{gap:var(--s-xs);max-width:528px;margin:0 auto;display:flex}.skel{background:var(--hair-soft);animation:1.4s ease-in-out infinite skel}@keyframes skel{0%,to{opacity:1}50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.calgrid{grid-template-columns:repeat(7,1fr) 42px;display:grid}.calgrid .dow{font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.08em;color:var(--dim);text-align:center;padding-bottom:5px;font-size:8.5px}.calgrid .cell{border-top:1px solid var(--hair);min-height:46px;color:var(--ink);flex-direction:column;justify-content:space-between;align-items:flex-end;padding:3px 4px 4px;display:flex}.calgrid .cell .d{font-family:var(--font-mono), ui-monospace, Menlo, monospace;color:var(--dim);align-self:flex-start;font-size:8.5px;line-height:1}.calgrid .cell .v{font-family:var(--font-mono), ui-monospace, Menlo, monospace;font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:600;line-height:1}.calgrid .cell.out{background:repeating-linear-gradient(135deg,#14130d0d 0 1px,#0000 1px 4px)}.calgrid .cell.future .d{opacity:.4}.calgrid .cell.today{outline:1.5px solid var(--ink);outline-offset:-1.5px}.calgrid .cell:active{background:#14130d14}.calgrid .wsum{border-top:1px solid var(--hair);border-left:1px solid var(--hair);font-family:var(--font-mono), ui-monospace, Menlo, monospace;font-variant-numeric:tabular-nums;color:var(--ink);justify-content:flex-end;align-items:flex-end;padding:3px 0 4px 5px;font-size:10px;font-weight:700;display:flex}.calgrid .wsum.on{background:var(--ink);color:var(--on-ink)}.weekstrip{grid-template-columns:repeat(7,1fr);gap:3px;margin-top:5px;display:grid}.weekstrip .wcell{border-top:1px solid var(--hair);text-align:center;color:var(--ink);min-height:40px;padding:3px 2px 5px}.weekstrip .wcell.today{outline:1.5px solid var(--ink);outline-offset:-1.5px}.weekstrip .wd{font-family:var(--font-mono), ui-monospace, Menlo, monospace;color:var(--dim);font-size:8.5px;line-height:1.4;display:block}.weekstrip .wv{font-family:var(--font-mono), ui-monospace, Menlo, monospace;font-variant-numeric:tabular-nums;font-size:11px;font-weight:600;display:block}.tap{align-items:center;margin:-12px -6px;padding:12px 6px;display:inline-flex}.toast{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));z-index:50;background:var(--ink);color:var(--on-ink);font-family:var(--font-mono), ui-monospace, Menlo, monospace;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;border-radius:2px;padding:9px 16px;font-size:11px;animation:.18s ease-out toast-in;position:fixed;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,6px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.empty{text-align:center;color:var(--dim);padding:56px 0 0}.empty .mark{color:var(--hair);margin-bottom:var(--s-md);justify-content:center;display:flex}.empty h2{color:var(--ink);margin:0 0 6px;font-size:15px;font-weight:600}.empty p{margin:0;font-size:12.5px}
