@font-face{font-family:Plex;src:url(/static/v2/fonts/plex-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Plex;src:url(/static/v2/fonts/plex-500.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Plex;src:url(/static/v2/fonts/plex-600.woff2) format("woff2");font-weight:600;font-display:swap}:root{--paper: #EEF2F1;--surface: #FFFFFF;--sunk: #F5F7F7;--ink: #16282D;--ink-2: #4F6166;--ink-3: #74848A;--line: #DFE6E5;--line-2: #C8D2D1;--pine: #1D6A5B;--pine-2: #175547;--pine-soft: #DCEBE6;--in: #2B7A4B;--over: #B0412D;--amber: #9A6414;--amber-soft: #F8ECD4;--r-s: 8px;--r-m: 12px;--r-l: 16px;--tabbar-h: 64px;--safe-b: env(safe-area-inset-bottom, 0px);--f: "Plex", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}html{background:var(--paper);-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--f);color:var(--ink);font-size:14.5px;line-height:1.4;-webkit-font-smoothing:antialiased}html.sheet-open body{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}button:disabled{cursor:default;opacity:.55}input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--pine);outline-offset:2px;border-radius:6px}h1,h2{margin:0}.amt,.num{font-variant-numeric:tabular-nums;white-space:nowrap}.amt-plus,.pos{color:var(--in)}.amt-muted{color:var(--ink-3)}.neg{color:var(--over)}.muted{color:var(--ink-3)}.pine{color:var(--pine)}html.private .amt{filter:blur(7px)}@media (prefers-reduced-motion: no-preference){.amt{transition:filter .2s}}.ic{width:20px;height:20px;flex:none}.ic-sm{width:16px;height:16px}.ic-xs{width:13px;height:13px}.shell{min-height:100vh}.side{display:none}.main{padding:env(safe-area-inset-top,0px) 0 calc(var(--tabbar-h) + var(--safe-b) + 24px);max-width:640px;margin:0 auto}.tabbar{position:fixed;z-index:20;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + var(--safe-b));padding:6px 6px var(--safe-b);display:flex;justify-content:space-around;align-items:flex-start;background:#ffffffeb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--ink-3);width:68px;padding-top:4px;position:relative}.tabbar a .ic{width:23px;height:23px}.tabbar a[aria-current=page]{color:var(--pine);font-weight:500}.tabbar .cnt{position:absolute;top:-1px;left:40px;background:var(--over);color:#fff;font-size:10px;font-weight:600;min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 4px}.tabbar .cam{width:50px;height:50px;margin-top:-14px;border-radius:50%;background:var(--pine);color:#fff;display:grid;place-items:center;box-shadow:0 6px 14px -4px #1d6a5b99}.tabbar .cam .ic{width:24px;height:24px}@media (min-width: 900px){.shell{display:grid;grid-template-columns:228px 1fr}.tabbar{display:none}.side{display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--surface);border-right:1px solid var(--line);padding:20px 12px}.side .brand{font-weight:600;font-size:17px;padding:0 10px 16px}.side a,.side-privacy{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink-2);width:100%}.side a .ic,.side-privacy .ic{width:18px;height:18px}.side a:hover,.side-privacy:hover{background:var(--sunk)}.side a[aria-current=page]{background:var(--pine-soft);color:var(--pine);font-weight:500}.side .cnt{margin-left:auto;font-size:12px;color:var(--ink-3)}.side-sep{height:1px;background:var(--line);margin:10px 4px}.side-grp{font-size:12px;color:var(--ink-3);padding:8px 10px 2px}.side-foot{margin-top:auto;padding-top:12px}.main{max-width:1180px;width:100%;padding:24px 32px 48px}.privacy-btn{display:none}}.topbar{display:flex;align-items:center;gap:6px;padding:14px 16px 10px}.topbar h1{font-size:23px;font-weight:600;flex:1;letter-spacing:-.01em}.icon-btn{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);flex:none}.icon-btn:hover{background:#16282d0f}.icon-btn.on{background:var(--ink);color:#fff}.scope{display:flex;gap:6px;padding:0 16px 12px;overflow-x:auto;scrollbar-width:none}.scope::-webkit-scrollbar{display:none}.scope button{flex:none;height:32px;padding:0 13px;border-radius:16px;border:1px solid var(--line-2);font-size:13.5px;color:var(--ink-2);background:var(--surface)}.scope button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:22px 20px 8px}.sec-h h2{font-size:15px;font-weight:600;display:flex;align-items:center;gap:6px}.sec-h a{font-size:13.5px;color:var(--pine);font-weight:500}.lead{color:var(--ink-2);margin:0 20px 4px;max-width:64ch}.foot-note{text-align:center;color:var(--ink-3);font-size:12.5px;margin:20px 0 0}.empty{color:var(--ink-3);padding:18px 16px;margin:0}.panel{background:var(--surface);border-radius:var(--r-l);margin:0 16px;overflow:hidden}.panel.pad{padding:4px 16px}.panel .panel{margin:0}.skeleton{height:240px;margin:12px 16px;border-radius:var(--r-l);background:linear-gradient(90deg,var(--surface) 0%,#F7F9F9 50%,var(--surface) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite linear}.skeleton-sm{height:160px;margin:0}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.boot-wait{min-height:100vh}.boot-error{max-width:420px;margin:20vh auto;padding:0 20px}.boot-error h1{font-size:20px;margin-bottom:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:42px;padding:0 16px;border-radius:12px;font-weight:500;font-size:14.5px;white-space:nowrap}.btn-main{background:var(--pine);color:#fff}.btn-main:hover{background:var(--pine-2)}.btn-ghost{background:var(--surface);border:1px solid var(--line-2)}.btn-ghost:hover{background:var(--sunk)}.btn-text{color:var(--pine);height:36px;padding:0 10px}.btn-mini{height:28px;padding:0 12px;border-radius:7px;background:var(--pine);color:#fff;font-size:13px;font-weight:500}.btn-sm{height:34px;font-size:13.5px;padding:0 12px}.btn-block{width:100%}.link-btn{color:var(--ink-3);font-size:12.5px}.link-btn:hover{color:var(--ink)}.row-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}body.ui-v2{--bg: var(--paper);--card-bg: var(--surface);--border: var(--line);--text: var(--ink);--muted: var(--ink-3);--accent: var(--pine);--accent-light: #5E9C8E;--accent-text: #fff;--green: var(--in);--green-bg: var(--pine-soft);--red: var(--over);--red-bg: #F6E1DC;--badge-bg: #EDF1F0;--badge-warn-bg: var(--amber-soft);--badge-warn-fg: var(--amber);--badge-info-bg: var(--pine-soft);--badge-info-fg: var(--pine);--badge-split-bg: #ECE6F3;--badge-split-fg: #6A4C93;--shadow-1: none;--shadow-2: 0 8px 24px -12px rgba(22, 40, 45, .35);--shadow-3: 0 16px 40px -16px rgba(22, 40, 45, .4);font-family:var(--f);background:var(--paper);color:var(--ink);font-size:14.5px}body.ui-v2 .shell{min-height:100vh}body.ui-v2 .main.content{padding:calc(env(safe-area-inset-top,0px) + 14px) 16px calc(var(--tabbar-h) + var(--safe-b) + 28px);max-width:760px;margin:0 auto;flex:none}@media (min-width: 900px){body.ui-v2 .main.content{max-width:1180px;width:100%;padding:24px 32px 48px;margin:0}}body.ui-v2 .scope-classic{padding:0 0 14px;margin:0}body.ui-v2 .scope-classic a{flex:none;height:32px;padding:0 13px;border-radius:16px;border:1px solid var(--line-2);font-size:13.5px;color:var(--ink-2)!important;background:var(--surface);display:inline-flex;align-items:center}body.ui-v2 .scope-classic a[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff!important}body.ui-v2 .tabbar .cam{width:50px;height:50px;margin-top:-14px;padding:0}body.ui-v2 .side-privacy{font-size:13.5px}.page-header{margin-bottom:14px;gap:10px}.page-header h1{font-size:23px;font-weight:600;letter-spacing:-.01em}.page-header h2{font-size:15px;font-weight:600}.section{background:var(--surface);border-radius:var(--r-l);padding:18px 20px;margin-bottom:16px;box-shadow:none}.section h2{font-size:15px;font-weight:600;margin:0 0 12px}.section h3{font-size:13.5px;font-weight:600;color:var(--ink-2)}details.section>summary h2{margin:0}details.section>summary:after{content:"";width:8px;height:8px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);margin:-4px 6px 0 0}details.section[open]>summary:after{transform:rotate(-135deg);margin-top:4px}details.section[open]>summary{margin-bottom:12px}@media (max-width: 700px){.section{padding:14px;border-radius:14px}}.cards{gap:10px;margin-bottom:16px}.card{border-radius:var(--r-l);border-top:0;box-shadow:none;padding:14px 16px}a.card:hover{transform:none;box-shadow:none;background:var(--sunk)}.card .label{font-size:12px;text-transform:none;letter-spacing:0;font-weight:400;margin-bottom:4px}.card .value{font-size:20px;font-weight:600}table{font-size:14px}th,td{padding:9px 10px;border-bottom:1px solid var(--line)}th{background:transparent;font-size:12px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink-3)}tbody tr:hover{background:var(--sunk)}.amount-positive{color:var(--in);font-weight:500}.amount-negative{color:var(--ink);font-weight:500}td,.card .value{font-variant-numeric:tabular-nums}.table-scroll{margin:0 -4px;padding:0 4px}input,select,textarea,button{font-family:var(--f);font-size:14.5px}input[type=text],input[type=number],input[type=date],input[type=month],input[type=week],input[type=password],input[type=search],input[type=email],input[type=url],select,textarea{min-height:40px;padding:8px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--ink)}input[type=file]{border:1px dashed var(--line-2);border-radius:10px;padding:8px 10px;background:var(--surface);max-width:100%}input:focus,select:focus,textarea:focus{border-color:var(--pine);box-shadow:0 0 0 3px var(--pine-soft);outline:0}input[type=checkbox],input[type=radio]{accent-color:var(--pine);width:18px;height:18px}.field label{font-size:12.5px;color:var(--ink-3);font-weight:400}.form-grid{gap:12px}select.cat-select{min-height:30px;padding:3px 12px;font-size:12.5px;font-weight:500;border-radius:15px}button,.btn{background:var(--pine);color:#fff;border:1px solid transparent;border-radius:10px;padding:9px 16px;font-weight:500;line-height:1.25}button:hover,.btn:hover{background:var(--pine-2);box-shadow:none;filter:none}button:active,.btn:active{transform:none}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn-secondary:hover{background:var(--sunk)}.btn-danger{background:var(--surface);color:var(--over);border-color:#e9c4bb}.btn-danger:hover{background:#fbede9}.btn-small{padding:5px 11px;font-size:13px;border-radius:8px}.btn-icon{padding:6px;min-width:32px;min-height:32px;border-radius:8px}.btn-icon:not(.btn-danger):not(.btn-secondary){background:var(--sunk);color:var(--ink-2);border-color:var(--line)}.btn-icon:not(.btn-danger):not(.btn-secondary):hover{background:var(--pine-soft);color:var(--pine)}.pagination a,.pagination span{border-radius:8px;border-color:var(--line-2)}.pagination .current{background:var(--pine);border-color:var(--pine)}.side-privacy,.side-privacy:hover{background:none;color:var(--ink-2);border:0;font-weight:400}.side-privacy:hover{background:var(--sunk)}a{color:var(--pine)}.badge{border-radius:6px;font-size:11.5px;font-weight:500;padding:2px 8px}.flash{border-radius:12px;padding:10px 14px;border:0;font-size:14px}.flash-success{background:var(--pine-soft);color:var(--pine)}.flash-error{background:#f6e1dc;color:var(--over)}.flash-info{background:var(--surface);color:var(--ink-2)}.flash-warn{background:var(--amber-soft);color:var(--amber)}dialog.modal{border:0;border-radius:18px;padding:20px 22px;box-shadow:var(--shadow-3);background:var(--surface);color:var(--ink);max-width:calc(100vw - 24px)}dialog.modal::backdrop{background:#16282d59}dialog.modal h2{font-size:17px;font-weight:600}@media (max-width: 700px){dialog.modal:not(.modal-preview){margin:auto 0 0;width:100vw;max-width:100vw;border-radius:20px 20px 0 0;padding-bottom:calc(20px + var(--safe-b));max-height:90vh}}.login-page{background:var(--paper);min-height:100vh;height:auto;padding:24px 16px}.login-box{border-radius:20px;box-shadow:none;width:100%;max-width:360px;padding:32px 28px;gap:10px}.login-box h1{font-size:24px;font-weight:600;text-align:left;margin-bottom:8px}.login-box label{font-size:12.5px;color:var(--ink-3)}.login-box input{min-height:46px;font-size:16px}.login-box button{min-height:46px;margin-top:6px;font-size:15.5px}html.private body.ui-v2 .amount-positive,html.private body.ui-v2 .amount-negative,html.private body.ui-v2 .card .value,html.private body.ui-v2 td.text-right:not(:has(button,a,form,input,select)){filter:blur(7px)}.section{overflow-x:auto}td.text-right,th.text-right,.amount-positive,.amount-negative,.cell-amount{white-space:nowrap}.recurring-matrix,.recurring-matrix th,.recurring-matrix td{table-layout:auto;width:auto;font-size:12.5px}.recurring-matrix{min-width:100%}.recurring-matrix th,.recurring-matrix td{padding:7px 5px;overflow-wrap:normal}.recurring-matrix td:not(:first-child),.recurring-matrix th:not(:first-child),.recurring-matrix .amount-positive,.recurring-matrix .amount-negative{white-space:nowrap}.recurring-matrix td:first-child{min-width:150px}.recurring-matrix td:first-child,.recurring-matrix th:first-child{position:sticky;left:0;background:var(--surface);z-index:1}.actions-cell form.inline+form.inline,.actions-cell>*+*{margin-left:4px}
