:root{color-scheme:light;--canvas:#f6f4ec;--surface:#fffefa;--soft:#efece1;--tint:#e4efdf;--overlay:rgb(28 36 28 / 45%);--ink:#1f2a21;--ink-2:#4b574d;--muted:#667266;--line:#ded9c9;--line-strong:#c9c3ae;--brand:#3f7d4e;--brand-strong:#2f6b3f;--brand-strong-hover:#255833;--brand-text:#2b6139;--on-brand:#fff;--focus:#2f6b3f;--good-bg:#dcebd5;--good-text:#25582f;--warn-bg:#f7e8bd;--warn-text:#6e4b00;--bad-bg:#f6d9d3;--bad-text:#9b2c22;--neutral-bg:#e8e4d6;--neutral-text:#46503f;--danger:#b8372b;--amount-pos:#25582f;--amount-neg:#9b2c22;--chart-income:#3f7d4e;--chart-expense:#c2571a;--chart-lost:#7a8494;--part-liquid:#4f8a6b;--part-owed:#c99a3c;--part-assets:#8b95a7;--sp-1:4px;--sp-2:8px;--sp-3:16px;--sp-4:24px;--sp-5:32px;--sp-6:48px;--r-sm:8px;--r-md:12px;--r-lg:16px;--shadow-1:0 1px 2px rgb(40 50 30 / 8%),0 1px 6px rgb(40 50 30 / 6%);--shadow-2:0 8px 32px rgb(30 40 25 / 22%);--tap:44px;--topbar-h:56px;--font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--fs-sm:.8125rem;--fs-md:.9375rem;--fs-lg:1.125rem;--fs-xl:1.5rem;--fs-2xl:2rem}@media (max-width:719.98px){:root{--topbar-h:62px}}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--canvas:#121812;--surface:#1a221b;--soft:#232d24;--tint:#24372a;--overlay:rgb(0 0 0 / 60%);--ink:#e8eee5;--ink-2:#b9c4b6;--muted:#94a192;--line:#2f3a30;--line-strong:#435044;--brand:#6fbf85;--brand-strong:#7fc994;--brand-strong-hover:#95d6a8;--brand-text:#8fd3a2;--on-brand:#0f1a11;--focus:#8fd3a2;--good-bg:#223a28;--good-text:#9fdcae;--warn-bg:#3d3416;--warn-text:#ecce78;--bad-bg:#432421;--bad-text:#f0a69d;--neutral-bg:#2b352c;--neutral-text:#b9c4b6;--danger:#e0786b;--amount-pos:#9fdcae;--amount-neg:#f0a69d;--chart-income:#6fbf85;--chart-expense:#e8894a;--chart-lost:#98a2b3;--part-liquid:#6fbf85;--part-owed:#dcb35a;--part-assets:#a3adc0;--shadow-1:0 1px 2px rgb(0 0 0 / 40%);--shadow-2:0 8px 32px rgb(0 0 0 / 55%)}}*,::after,::before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:var(--fs-md);line-height:1.5;color:var(--ink);background:var(--canvas);overflow-wrap:anywhere}h1,h2,h3{margin:0;line-height:1.25;font-weight:650}h1{font-size:var(--fs-xl)}h1:focus{outline:0}h2{font-size:var(--fs-lg)}p{margin:0}a{color:var(--brand-text)}button,input,select,textarea{font:inherit;color:inherit}table{border-collapse:collapse}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.amount,.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;transition-duration:0s!important}}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:6px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--ink);font-weight:600;font-size:var(--fs-md);white-space:nowrap;cursor:pointer;text-decoration:none}.btn:hover:not(:disabled){background:var(--soft)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.is-busy:not(:disabled){cursor:progress;pointer-events:none;opacity:.85}.btn--primary{background:var(--brand-strong);border-color:var(--brand-strong);color:var(--on-brand)}.btn--primary:hover:not(:disabled){background:var(--brand-strong-hover);border-color:var(--brand-strong-hover)}.btn--ghost{background:0 0;border-color:transparent;color:var(--ink-2)}.btn--danger{color:var(--bad-text);border-color:var(--bad-text)}.btn--danger:hover:not(:disabled){background:var(--bad-bg)}.btn__spinner{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite}@media (max-width:719.98px){.btn{min-height:var(--tap)}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);min-width:0}.card__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-3) var(--sp-3) 0;flex-wrap:wrap}.card__title{font-size:var(--fs-lg);font-weight:650}.card__body{padding:var(--sp-3)}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field__label{font-weight:600;font-size:var(--fs-sm);color:var(--ink-2)}.field__hint{font-size:var(--fs-sm);color:var(--muted)}.field__error{font-size:var(--fs-sm);color:var(--bad-text);font-weight:550}.field.has-error :is(.input,.select){border-color:var(--bad-text)}.input,.select{width:100%;min-height:40px;padding:6px 12px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--ink)}.input::placeholder,.select::placeholder{color:var(--muted);opacity:1}.input:disabled,.select:disabled{opacity:.6}@media (max-width:719.98px){.input,.select{min-height:var(--tap);font-size:16px}}.input--money{text-align:right;font-variant-numeric:tabular-nums}.select{appearance:none;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat}.select optgroup,.select option{background:var(--surface);color:var(--ink)}@supports (appearance:base-select){.select,.select::picker(select){appearance:base-select}.select{display:inline-flex;align-items:center}.select>button{display:flex;align-items:center;width:100%;min-width:0;padding:0;border:0;background:0 0;color:inherit;font:inherit}.select selectedcontent{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select::picker-icon{display:none}.select::picker(select){max-height:min(60vh,440px);margin-block:var(--sp-1);padding:var(--sp-1);overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2)}.select optgroup{padding-top:var(--sp-1);background:0 0;font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.select option{min-height:36px;padding:6px 12px;border-radius:6px;background:0 0;color:var(--ink);font-size:var(--fs-md);font-weight:400}.select option:focus-visible,.select option:hover{background:var(--tint);outline:0}.select option:checked{color:var(--brand-text);font-weight:600}.select option:disabled{color:var(--muted)}.select option::checkmark{display:none}}.sheet-backdrop{position:fixed;inset:0;z-index:50;background:var(--overlay);display:flex;justify-content:flex-end}@media (min-width:720px){.sheet-backdrop--center{justify-content:center;align-items:center;padding:var(--sp-3)}}.sheet{display:flex;flex-direction:column;width:min(480px,100%);height:100%;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2)}.sheet:focus{outline:0}.sheet--wide{width:min(960px,100%)}@media (min-width:720px){.sheet--wide{height:min(90dvh,100%);border-radius:var(--r-md)}}.sheet__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-3);border-bottom:1px solid var(--line)}.sheet__title{font-size:var(--fs-lg);font-weight:650}.sheet__body{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-3)}.sheet__foot{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3);border-top:1px solid var(--line)}@media (max-width:719.98px){.sheet{width:100%}.sheet__foot .btn{flex:1}}.badge{display:inline-flex;align-items:center;padding:1px 10px;border-radius:999px;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-text)}.badge--good{background:var(--good-bg);color:var(--good-text)}.badge--warn{background:var(--warn-bg);color:var(--warn-text)}.badge--bad{background:var(--bad-bg);color:var(--bad-text)}.toasts{position:fixed;z-index:60;right:var(--sp-3);bottom:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2);width:min(360px,100vw - 32px)}@media (max-width:719.98px){.toasts{left:var(--sp-3);width:auto}}.toast{display:flex;align-items:flex-start;gap:var(--sp-2);padding:10px 12px;border-radius:var(--r-sm);box-shadow:var(--shadow-2);background:var(--good-bg);color:var(--good-text);border:1px solid currentColor}.toast--error{background:var(--bad-bg);color:var(--bad-text)}.toast__text{flex:1;font-weight:550}.toast__x{border:0;background:0 0;color:inherit;cursor:pointer;font-size:var(--fs-lg);line-height:1;padding:0 4px}@media (min-width:900px){body:has(.sheet) .toasts{right:calc(480px + var(--sp-3))}}@media (max-width:899.98px){body:has(.sheet) .toasts{top:var(--sp-3);bottom:auto}}.table-wrap{overflow-x:auto;max-width:100%}.table{width:100%}.table td,.table th{padding:10px var(--sp-3);text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.table th{font-size:var(--fs-sm);color:var(--muted);font-weight:600;white-space:nowrap}.table tbody tr:last-child td{border-bottom:0}.table .num{text-align:right;white-space:nowrap}.amount{white-space:nowrap}.amount--pos{color:var(--amount-pos)}.amount--neg{color:var(--amount-neg)}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:var(--sp-3);display:flex;flex-direction:column;gap:4px;min-width:0}.tile__label{font-size:var(--fs-sm);color:var(--muted);font-weight:600}.tile__value{font-size:var(--fs-2xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15}.tile__sub{font-size:var(--fs-sm);color:var(--ink-2)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center;padding:var(--sp-5) var(--sp-3);border:1px dashed var(--line-strong);border-radius:var(--r-md);color:var(--ink-2)}.empty__title{font-size:var(--fs-lg);font-weight:650;color:var(--ink)}.shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;min-height:var(--topbar-h);display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--surface);border-bottom:1px solid var(--line)}.topbar__brand{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--fs-lg);color:var(--brand-text);text-decoration:none}.topbar__brand img{width:24px;height:24px}.topbar__nav{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.topbar__spacer{flex:1}.topbar__actions{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto}.topbar__menu{display:none}@media (max-width:719.98px){.topbar{gap:var(--sp-2)}.topbar__nav{display:none}.topbar__menu{display:inline-flex}.topbar__logout{display:none}}.nav-link{display:inline-flex;align-items:center;min-height:36px;padding:4px 12px;border-radius:var(--r-sm);color:var(--ink-2);text-decoration:none;font-weight:550;white-space:nowrap}.nav-link:hover{background:var(--soft)}.nav-link.active{background:var(--tint);color:var(--brand-text)}.nav-list{display:flex;flex-direction:column;gap:2px}.nav-list .nav-link{min-height:var(--tap);font-size:var(--fs-lg)}.nav-divider{width:100%;margin:var(--sp-2) 0;border:0;border-top:1px solid var(--line-strong)}.more{position:relative}.more__btn{border:0;background:0 0;font:inherit;font-weight:550;cursor:pointer;gap:4px}.more__caret{font-size:.8em}.more__backdrop{position:fixed;inset:0;z-index:1}.more__panel{position:absolute;top:calc(100% + var(--sp-1));right:0;z-index:2;min-width:11rem;padding:var(--sp-1);display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-2)}.more__item{display:flex;align-items:center;min-height:36px;padding:6px 12px;border-radius:6px;color:var(--ink);font-size:var(--fs-md);text-decoration:none;white-space:nowrap}.more__item:focus-visible,.more__item:hover{background:var(--tint);outline:0}.more__item.active{color:var(--brand-text);font-weight:600}@media (max-width:719.98px){.more{display:none}}.main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:var(--sp-4) var(--sp-3) var(--sp-6)}@media (max-width:719.98px){.main{padding-top:var(--sp-3)}}.page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}.stack{display:flex;flex-direction:column;gap:var(--sp-3)}.row{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.grid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}.seg{display:inline-flex;padding:2px;gap:2px;background:var(--soft);border:1px solid var(--line);border-radius:var(--r-sm)}.seg__btn{min-height:32px;padding:2px 10px;border:0;border-radius:6px;background:0 0;color:var(--ink-2);font-weight:600;font-size:var(--fs-sm);cursor:pointer}.seg__btn[aria-pressed=true]{background:var(--surface);color:var(--brand-text);box-shadow:var(--shadow-1)}dialog.reconnect{border:0;border-radius:var(--r-md);padding:0;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2);width:min(360px,100vw - 32px)}dialog.reconnect::backdrop{background:var(--overlay)}dialog.reconnect[data-state=hidden]{display:none}.reconnect__card{padding:var(--sp-4);text-align:center;display:flex;flex-direction:column;gap:var(--sp-2);align-items:center}.reconnect__title{font-weight:650;font-size:var(--fs-lg)}.reconnect__hint{color:var(--muted)}.reconnect__spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line-strong);border-top-color:var(--brand);animation:spin .8s linear infinite}.reconnect[data-state=failed] .reconnect__spinner{display:none}.reconnect[data-state=retrying] .reconnect__retry{display:none}.login{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-3)}.login__card{width:min(100%,380px)}.login__brand{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-xl);font-weight:700;color:var(--brand-text);margin-bottom:var(--sp-3)}.login__brand img{width:32px;height:32px}.owner-switch{width:auto;max-width:11rem;min-height:38px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:var(--soft);border-color:var(--line);border-radius:var(--r-sm);color:var(--brand-text);font-weight:600;background-image:linear-gradient(45deg,transparent 50%,var(--brand-text) 50%),linear-gradient(135deg,var(--brand-text) 50%,transparent 50%)}@media (max-width:719.98px){.owner-switch{max-width:6rem;min-height:38px;font-size:var(--fs-md);padding-left:8px}}.topbar .seg,.topbar__brand{white-space:nowrap;flex-shrink:0}@media (max-width:719.98px){.topbar:has(.owner-switch) .topbar__brand{font-size:0}}.login__error{margin:0;color:var(--bad-text);font-weight:550}.user-menu{display:flex;align-items:center;gap:var(--sp-2);margin:0}.user-menu__name{color:var(--ink-2);font-weight:550;max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:719.98px){.user-menu__name{display:none}}