:root{--bg: #f4f5f7;--surface: #ffffff;--surface-2: #f8f9fb;--border: #e3e6eb;--text: #1c2330;--text-2: #5b6576;--text-3: #98a1b0;--accent: #2f6fdb;--accent-soft: #e8f0fd;--good: #1f8a4c;--good-soft: #e5f5ec;--warn: #b26b00;--warn-soft: #fff3dc;--bad: #c9372c;--bad-soft: #fde9e7;--focus: #2f6fdb55;--radius: 10px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #12151b;--surface: #1a1e26;--surface-2: #20252f;--border: #2c3240;--text: #e6e9ef;--text-2: #a3abb9;--text-3: #6c7586;--accent: #6c9ef2;--accent-soft: #23314b;--good: #4cc38a;--good-soft: #1b3428;--warn: #f0b04a;--warn-soft: #3a2e17;--bad: #f07269;--bad-soft: #3d2120;--focus: #6c9ef266;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:1280px;margin:0 auto;padding:24px 20px 64px;display:flex;flex-direction:column;gap:20px}h1{margin:0;font-size:22px;letter-spacing:-.01em}h2{margin:0;font-size:15px}.topbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.status{margin:2px 0 0;font-size:12px;color:var(--text-3)}.status.saving{color:var(--warn)}.status.error{color:var(--bad)}.rate{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px 4px 4px 12px;font-size:13px;color:var(--text-2)}.rate .money{width:80px}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat-label{font-size:12px;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.stat.highlight{background:var(--good-soft);border-color:transparent}.stat.highlight .stat-value{color:var(--good)}.stat.highlight.negative{background:var(--bad-soft)}.stat.highlight.negative .stat-value{color:var(--bad)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-width:0}.card>h2{margin-bottom:12px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:8px}.hint{color:var(--text-3);font-size:12px;margin:-4px 0 10px}.split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}.side{display:flex;flex-direction:column;gap:20px}.table-wrap{overflow-x:auto;margin:0 -16px;padding:0 16px}.sheet{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.sheet th{text-align:left;font-weight:500;font-size:12px;color:var(--text-2);padding:6px;border-bottom:1px solid var(--border);white-space:nowrap}.sheet td{padding:2px;border-bottom:1px solid var(--border);white-space:nowrap}.sheet tbody tr:hover{background:var(--surface-2)}.sheet tr.muted td,.sheet tr.muted .text,.sheet tr.muted .money{color:var(--text-3)}.sheet .num{text-align:right}.sheet .center{text-align:center}.sheet .col-name{min-width:160px}.sheet td.total{font-weight:600;padding-right:8px}.sheet tfoot td{border-bottom:none;padding-top:8px}.sheet tfoot .label{text-align:right;color:var(--text-2);padding-right:8px}.sheet tfoot .label.sub{font-size:12px;padding-top:0}.sheet .actions{text-align:right;width:1%}.sheet td.billing{padding:0 8px;color:var(--text-2)}.neg{color:var(--bad)}input.text,input.money,input.date,select{font:inherit;color:inherit;background:transparent;border:1px solid transparent;border-radius:6px;padding:5px 6px;width:100%}input.money{text-align:right;font-variant-numeric:tabular-nums;min-width:120px}input.money.zero{color:var(--text-3)}input.text:hover,input.money:hover,input.date:hover,select:hover{border-color:var(--border)}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);background:var(--surface)}input.money.invalid{border-color:var(--bad);background:var(--bad-soft)}input.date{min-width:130px}select{min-width:150px;cursor:pointer}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.btn{font:inherit;font-size:13px;cursor:pointer;background:var(--accent-soft);color:var(--accent);border:none;border-radius:6px;padding:6px 10px;white-space:nowrap}.btn:hover{filter:brightness(.96)}.btn.small{padding:3px 8px;font-size:12px;background:var(--good-soft);color:var(--good);margin-right:4px}.icon-btn{font:inherit;font-size:12px;cursor:pointer;background:none;border:none;color:var(--text-3);padding:4px 6px;border-radius:6px}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn:disabled{opacity:.3;cursor:default}.icon-btn.danger:hover{color:var(--bad)}.icon-btn.armed{background:var(--bad-soft);color:var(--bad)}.pill{display:inline-block;font-size:12px;padding:2px 8px;border-radius:99px;color:var(--text-2)}.pill.overdue{background:var(--bad-soft);color:var(--bad);font-weight:600}.pill.soon{background:var(--warn-soft);color:var(--warn);font-weight:600}.pill.later{background:var(--surface-2)}.pill.none{color:var(--text-3)}.set-aside{display:flex;flex-direction:column;gap:2px;font-variant-numeric:tabular-nums}.set-aside+.set-aside{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.set-aside-row{display:grid;grid-template-columns:minmax(0,1fr) 140px;align-items:center;gap:4px}.set-aside .money{min-width:0}.set-aside-row.sub{font-size:12px;color:var(--text-2);padding:0 7px}.set-aside-row.sub>span,.set-aside-row.result>span:last-child{text-align:right}.set-aside-row.result{font-weight:600;padding:6px 7px 0;margin-top:4px;border-top:1px dashed var(--border)}.breakdown{display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin:0;font-variant-numeric:tabular-nums}.breakdown dt{color:var(--text-2)}.breakdown dd{margin:0;text-align:right}.breakdown .strong{font-weight:600;color:var(--text);border-top:1px solid var(--border);padding-top:6px}.breakdown dd.strong.neg{color:var(--bad)}.empty{padding:48px;text-align:center;color:var(--text-2)}.login-page{min-height:100vh;justify-content:center;align-items:center}.login{width:100%;max-width:340px;padding:24px}.login h1{margin:0 0 4px}.login .hint{margin:0 0 16px}.login .btn.primary:disabled{opacity:.6;cursor:default}.empty.error{color:var(--bad)}@media(max-width:960px){.summary{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}}@media(max-width:520px){.page{padding:16px 16px 48px}.stat-value{font-size:18px}}.notice{background:var(--warn-soft);color:var(--text);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-left:4px solid var(--warn);border-radius:var(--radius);padding:12px 16px}.notice.overdue{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 35%,transparent);border-left-color:var(--bad)}.notice-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px}.notice-head strong{color:var(--warn)}.notice.overdue .notice-head strong{color:var(--bad)}.notice-total{font-weight:600;font-variant-numeric:tabular-nums}.notice-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.notice-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:baseline;font-variant-numeric:tabular-nums}.notice-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice-when{color:var(--text-2);font-size:13px}.notice-list li.today .notice-when{color:var(--warn);font-weight:600}.notice-list li.late .notice-when{color:var(--bad);font-weight:600}.notice-amount{text-align:right;min-width:110px}@media(max-width:520px){.notice-list li{grid-template-columns:1fr auto;gap:0 12px}.notice-when{grid-row:2;grid-column:1 / -1}}.hint.flat{margin:0}.sheet td.amount{padding:0 8px}.sheet td.amount.zero{color:var(--text-3)}.pos{color:var(--good)}.tx-form{display:flex;flex-direction:column;gap:12px}.tx-form>h2{margin:0}.fields{display:flex;flex-direction:column;gap:12px}.fields label{display:flex;flex-direction:column;gap:4px;min-width:0}.fields label>span{font-size:12px;color:var(--text-2)}.fields label>span em{font-style:normal;color:var(--text-3)}.fields small{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.fields select{min-width:0}.fields .boxed,.fields select{border-color:var(--border);background:var(--surface)}.fields input.money.boxed{min-width:0;text-align:left}.fields input.date.boxed{min-width:0}.row-2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.form-msg{margin:0;font-size:13px}.form-msg.error{color:var(--bad)}.form-msg.ok{color:var(--good)}.btn.primary{background:var(--accent);color:#fff;padding:9px 12px;font-weight:500}.segmented{display:flex;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}.segmented button{flex:1;font:inherit;font-size:12px;cursor:pointer;border:none;background:none;color:var(--text-2);padding:5px 6px;border-radius:6px;white-space:nowrap}.segmented button.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #0002}.sheet.log td{padding:7px 8px}.sheet.log td.note{color:var(--text-2);white-space:normal;min-width:140px}.sheet.log tr.voided td{color:var(--text-3)}.sheet.log tr.voided td:not(.actions){text-decoration:line-through}.sheet.log tr.voided .neg,.sheet.log tr.voided .pos{color:var(--text-3)}.sheet.log small{color:var(--text-2)}.pill.tx-payment{background:var(--bad-soft);color:var(--bad)}.pill.tx-withdrawal{background:var(--warn-soft);color:var(--warn)}.pill.tx-transfer{background:var(--accent-soft);color:var(--accent)}.pill.tx-deposit{background:var(--good-soft);color:var(--good)}.icon-btn.danger:not(.armed){color:var(--text-2)}.show-all{margin-top:10px}.rate{padding:4px 4px 4px 12px}.rate strong{font-variant-numeric:tabular-nums;color:var(--text)}.rate-meta{font-size:11px;color:var(--text-3)}.rate-meta.ok{color:var(--good)}.rate-meta.error{color:var(--bad)}.auto-form{margin-bottom:16px;padding:12px;background:var(--surface-2);border-radius:8px}.auto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.auto-actions{display:flex;gap:8px}.auto-actions .btn.primary{flex:0 0 auto}.sheet.auto-table td.detail{color:var(--text-2);padding:0 8px}.sheet.auto-table td.days{min-width:90px}.sheet.auto-table td.days input{width:90px}.sheet .auto-error td{color:var(--bad);font-size:12px;padding:4px 8px 8px;white-space:normal}.pill.auto{background:var(--surface-2);color:var(--text-3);margin-left:4px;font-size:11px;padding:1px 6px}.quick{display:flex;flex-wrap:wrap;gap:6px}.btn.quick-btn{background:var(--good-soft);color:var(--good)}.pill.paid{background:var(--good-soft);color:var(--good);font-weight:600}.paid-so-far{margin-left:6px;font-size:12px;color:var(--good)}.sheet td.due.fixed{padding:0 8px}.fixed-value{padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--text);font-weight:500}.amount-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:-4px}.chip{font:inherit;font-size:12px;cursor:pointer;padding:3px 10px;border-radius:99px;border:1px solid var(--border);background:var(--surface);color:var(--text-2);font-variant-numeric:tabular-nums}.chip.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.name-cell{display:flex;align-items:center;gap:2px}.name-cell .lock{flex:0 0 auto;color:var(--text-3);margin-left:6px}.name-cell .lock-space{flex:0 0 13px;margin-left:6px}.notice.update{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent);border-left-color:var(--accent)}.notice.update .notice-head strong{color:var(--accent)}.notice.update .notice-list li{grid-template-columns:minmax(0,1fr) auto auto}.notice-actions{display:flex;gap:4px;justify-content:flex-end}.btn.small-btn{padding:3px 9px;font-size:12px;background:var(--surface)}.btn.small-btn.ghost{background:transparent;color:var(--text-2)}@media(max-width:520px){.notice.update .notice-list li{grid-template-columns:1fr auto}}.fee-note{margin:-4px 0 0;font-size:12px;color:var(--warn)}.sheet.log small.fee{color:var(--text-3)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:-4px}.tabs a{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;margin-bottom:-1px;text-decoration:none;font-weight:500;color:var(--text-2);border-bottom:2px solid transparent}.tabs a:hover{color:var(--text)}.tabs a.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-count{font-size:11px;padding:1px 7px;border-radius:99px;background:var(--surface-2);color:var(--text-2)}.tabs a.active .tab-count{background:var(--accent-soft);color:var(--accent)}.notice:not(.update) .notice-list li{display:block}.notice-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:16px;align-items:baseline;width:calc(100% + 16px);margin:0 -8px;padding:3px 8px;border:none;border-radius:6px;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums}.notice-row:hover,.notice-row:focus-visible{background:color-mix(in srgb,var(--text) 7%,transparent);outline:none}.notice-go{font-size:12px;font-weight:600;color:var(--warn);white-space:nowrap;padding:2px 9px;border-radius:99px;background:color-mix(in srgb,var(--warn) 16%,transparent)}.notice.overdue .notice-go{color:var(--bad);background:color-mix(in srgb,var(--bad) 16%,transparent)}.notice-row:hover .notice-go,.notice-row:focus-visible .notice-go{background:color-mix(in srgb,var(--warn) 28%,transparent)}.notice-list li.urgent .notice-row .notice-when{color:var(--bad);font-weight:600}@media(max-width:520px){.notice-row{grid-template-columns:1fr auto;gap:2px 12px}.notice-row .notice-when{grid-row:2;grid-column:1}.notice-row .notice-go{grid-row:2;grid-column:2;justify-self:end}}.fab{display:none}@media(max-width:640px){.page{padding-bottom:96px;gap:16px}.card{padding:14px}.topbar{align-items:flex-start}input,select,textarea{font-size:16px!important}.icon-btn{padding:8px 10px;min-height:36px}.btn{padding:8px 12px}.segmented button{padding:8px 4px}.fab{display:block;position:fixed;z-index:10;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));font:inherit;font-size:15px;font-weight:600;cursor:pointer;color:#fff;background:var(--accent);border:none;border-radius:99px;padding:12px 20px;box-shadow:0 6px 20px #0005}.table-wrap{overflow:visible;margin:0;padding:0}.sheet thead{display:none}.sheet,.sheet tbody,.sheet tfoot{display:block}.sheet tr{display:grid;align-items:center;column-gap:8px;row-gap:2px;padding:8px 0;border-bottom:1px solid var(--border)}.sheet tbody tr:hover{background:none}.sheet td{display:block;border:none;padding:0;white-space:normal;min-width:0}.sheet td:empty{display:none}.sheet .actions{width:auto}.sheet td[data-label]:before{content:attr(data-label) ": ";font-size:12px;color:var(--text-3);margin-right:4px}.sheet tfoot tr{display:flex;justify-content:space-between;border:none;padding:6px 0 0}.sheet tfoot .label{text-align:left;padding:0}.sheet tfoot td.total,.sheet tfoot td.neg{padding:0}.sheet input.money{min-width:0;width:140px}.sheet.accounts tbody tr{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name total" "dollar dollar"}.accounts .c-name{grid-area:name}.accounts .c-total{grid-area:total;padding:0}.accounts .c-peso,.accounts .c-dollar.zero{display:none}.accounts .c-dollar{grid-area:dollar;text-align:left;font-size:12px;color:var(--text-2);padding:0 7px}.accounts .c-dollar:after{content:" in dollars";color:var(--text-3)}.sheet.bills tbody tr{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"name amount act" "due status status" "billing billing billing";column-gap:2px}.bills .c-name{grid-area:name}.bills .c-amount{grid-area:amount;text-align:right}.bills td.c-amount.amount{padding:0 7px;font-weight:600}.bills .c-act{grid-area:act}.bills .c-act .icon-btn{padding:6px 8px;min-height:32px}.sheet.bills td.c-due{grid-area:due;padding-left:15px}.sheet.bills td.due.fixed{padding:0 0 0 22px;color:var(--text-2);font-size:14px}.sheet.bills td.c-due.blank,.sheet.bills td.c-billing.blank,.bills .c-status .pill.none{display:none}.bills .c-due .date-field{min-width:0;padding:3px 6px}.bills .c-status{grid-area:status;justify-self:end;text-align:right}.sheet.bills td.c-billing{grid-area:billing;padding:0 0 0 22px;font-size:12px;color:var(--text-3)}.bills .paid-so-far{display:block;margin:2px 0 0}.sheet.auto-table tbody tr{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"name name act" "type detail detail" "amount amount active" "days days next";row-gap:6px}.auto-table .c-name{grid-area:name}.auto-table .c-act{grid-area:act}.auto-table .c-type{grid-area:type}.auto-table .c-detail{grid-area:detail;padding:0}.auto-table .c-amount{grid-area:amount}.auto-table .c-amount input.money{text-align:left}.auto-table .c-active{grid-area:active;display:flex;align-items:center;justify-content:flex-end}.auto-table .c-days{grid-area:days;display:flex;align-items:center;padding-left:7px}.auto-table .c-days input{width:80px}.auto-table .c-next{grid-area:next;justify-self:end;padding:0;font-size:13px}.sheet .auto-error{display:block}.sheet.log tbody tr{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"detail detail amount" "type date act" "note note note"}.sheet.log td{padding:0}.log .c-detail{grid-area:detail;font-weight:500}.log .c-amount{grid-area:amount;text-align:right}.log .c-amount small{display:block}.log .c-type{grid-area:type}.log .c-date{grid-area:date;font-size:12px;color:var(--text-2)}.log .c-act{grid-area:act;justify-self:end}.sheet.log td.c-note{grid-area:note;min-width:0;font-size:13px}.row-2{grid-template-columns:1fr 1fr}.auto-grid{grid-template-columns:1fr}}@media(min-width:641px){.sheet.accounts tfoot td.neg{padding-right:8px}}.tx-head{display:flex;justify-content:space-between;align-items:center}.tx-head h2{margin:0}.tx-close,.sheet-backdrop{display:none}@media(max-width:640px){.tx-form{display:none}.tx-form.open{display:flex;position:fixed;z-index:30;left:0;right:0;bottom:0;max-height:92vh;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;border-radius:16px 16px 0 0;border-bottom:none;padding:16px 16px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px #0006;animation:sheet-up .22s ease-out}.tx-close{display:inline-flex}.sheet-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#000a;animation:fade-in .2s ease-out}body.sheet-open{overflow:hidden}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.tx-form.open,.sheet-backdrop{animation:none}}@media(max-width:640px){.tabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:0}.tabs::-webkit-scrollbar{display:none}.tabs a{padding:8px 11px;white-space:nowrap;flex:0 0 auto;font-size:14px}}.date-field{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:140px;padding:5px 6px;border:1px solid transparent;border-radius:6px;font-variant-numeric:tabular-nums;cursor:pointer}.date-field:hover{border-color:var(--border)}.date-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);background:var(--surface)}.date-field.empty .date-text{color:var(--text-3)}.date-icon{flex:0 0 auto;color:var(--text-3)}.date-native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;border:none;padding:0;margin:0;cursor:pointer}.date-native::-webkit-calendar-picker-indicator{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;cursor:pointer}.fields .date-field.boxed{border-color:var(--border);background:var(--surface);min-width:0;padding:6px 8px}.sheet tr.muted .date-field .date-text{color:var(--text-3)}.name-text{display:block;padding:6px 7px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name-cell .name-text{flex:1}.add-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.add-inline input.text{flex:1 1 200px;width:auto}.add-inline select{width:auto;min-width:0;flex:0 1 auto}.add-inline .boxed{border-color:var(--border);background:var(--surface)}.add-inline .btn.primary{padding:6px 14px}.add-inline .form-msg,.add-inline .hint{flex-basis:100%}
