:root{--paper:#faf8f3;--paper-2:#f3efe6;--panel:#fff;--line:#e7e1d5;--line-strong:#d8d1c2;--ink:#1b1a16;--ink-2:#6c675c;--ink-3:#9a948663;--accent:#0e7c5a;--accent-press:#0b6147;--accent-soft:#e2efe8;--accent-ring:#0e7c5a33;--ok:#0e7c5a;--ok-soft:#e2efe8;--info:#3b5bdb;--info-soft:#e7ecfd;--warn:#b3791b;--warn-soft:#f7eed9;--danger:#b23b3b;--danger-soft:#f7e3e1;--muted:#7c7669;--muted-soft:#ece7dc;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-ui:"Hanken Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, monospace;--r-sm:6px;--r-md:10px;--r-lg:16px;--shadow-sm:0 1px 2px #1b1a160a, 0 1px 3px #1b1a160f;--shadow-md:0 4px 16px -4px #1b1a161a, 0 2px 6px #1b1a160d;--shadow-lg:0 18px 48px -12px #1b1a162e;--ease:cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(circle at 1px 1px,#1b1a1606 1px,#0000 0);background-size:22px 22px;margin:0;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{font-family:inherit}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.app{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--paper-2);border-right:1px solid var(--line);flex-direction:column;gap:22px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.brand{align-items:baseline;gap:8px;padding:4px 8px 0;display:flex}.brand-mark{font-family:var(--font-display);letter-spacing:-.02em;font-size:22px;font-weight:600}.brand-dot{background:var(--accent);border-radius:50%;width:7px;height:7px;display:inline-block}.brand-sub{color:var(--ink-2);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.nav{flex-direction:column;gap:2px;display:flex}.nav-item{border-radius:var(--r-sm);color:var(--ink-2);cursor:pointer;transition:background .15s var(--ease), color .15s var(--ease);align-items:center;gap:10px;padding:9px 12px;font-weight:500;display:flex}.nav-item:hover{color:var(--ink);background:#1b1a160a}.nav-item.active{background:var(--accent-soft);color:var(--accent-press);font-weight:600}.nav-label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin-top:6px;padding:0 12px;font-size:10px}.sidebar-foot{flex-direction:column;gap:10px;margin-top:auto;display:flex}.main{flex-direction:column;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;justify-content:space-between;align-items:center;gap:16px;padding:20px 32px;display:flex;position:sticky;top:0}.page-title{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:26px;font-weight:500}.page-sub{color:var(--ink-2);margin-top:2px;font-size:13px}.content{padding:28px 32px 64px}.switcher{text-align:left;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-md);cursor:pointer;width:100%;box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.switcher:hover{border-color:var(--accent)}.switcher-name{font-weight:600}.switcher-meta{color:var(--ink-2);font-size:11px}.menu{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:var(--shadow-lg);overflow:hidden}.menu-item{cursor:pointer;justify-content:space-between;gap:8px;padding:10px 12px;display:flex}.menu-item:hover{background:var(--paper-2)}.btn{border-radius:var(--r-sm);cursor:pointer;transition:all .15s var(--ease);white-space:nowrap;border:1px solid #0000;align-items:center;gap:8px;padding:9px 16px;font-size:13px;font-weight:600;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-press);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-ghost{color:var(--ink);border-color:var(--line-strong);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--paper-2);border-color:var(--ink-2)}.btn-sm{padding:6px 11px;font-size:12px}.btn-danger{color:var(--danger);border-color:var(--danger-soft);background:0 0}.btn-danger:hover:not(:disabled){background:var(--danger-soft)}.field{flex-direction:column;gap:6px;display:flex}.label{color:var(--ink-2);letter-spacing:.01em;font-size:12px;font-weight:600}.input,.select{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--ink);transition:border .15s var(--ease), box-shadow .15s var(--ease);padding:9px 11px;font-family:inherit;font-size:13px}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.input::placeholder{color:var(--ink-3)}.select-sm{padding:6px 9px;font-size:12px}.sections{flex-wrap:wrap;gap:14px;margin-bottom:20px;display:flex}.section-card{text-align:left;cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);min-width:200px;max-width:320px;transition:border .15s var(--ease), box-shadow .15s var(--ease);flex:1 1 0;padding:15px 18px}.section-card:hover{border-color:var(--line-strong)}.section-card.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.section-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.section-title{color:var(--ink);font-size:16px;font-weight:700}.section-count{background:var(--ink);color:var(--panel);border-radius:7px;padding:2px 9px;font-size:12px;font-weight:600;line-height:1.5}.section-total{color:var(--ink-2);margin-top:5px;font-size:13px}.acct-cell{align-items:center;gap:6px;min-width:0;max-width:150px;display:flex}.table-wrap.scroll-x{overflow-x:auto}.tbl .col-sticky{background:var(--panel);position:sticky;right:0;box-shadow:-10px 0 10px -10px #0000001f}.tbl tbody tr:hover .col-sticky{background:var(--paper)}.tbl thead .col-sticky{background:var(--paper-2,var(--panel))}.acct-cell .select{text-overflow:ellipsis;flex:auto;min-width:0}.acct-cell .btn{flex:none}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:20px 22px}.pill{letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11.5px;font-weight:600;display:inline-flex}.pill .dot{border-radius:50%;width:6px;height:6px}.pill-ok{background:var(--ok-soft);color:var(--ok)}.pill-ok .dot{background:var(--ok)}.pill-info{background:var(--info-soft);color:var(--info)}.pill-info .dot{background:var(--info)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-warn .dot{background:var(--warn)}.pill-danger{background:var(--danger-soft);color:var(--danger)}.pill-danger .dot{background:var(--danger)}.pill-muted{background:var(--muted-soft);color:var(--muted)}.pill-muted .dot{background:var(--muted)}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}table.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl thead th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);border-bottom:1px solid var(--line);background:var(--paper-2);padding:13px 16px;font-size:10.5px;font-weight:600}.tbl tbody td{border-bottom:1px solid var(--line);vertical-align:middle;padding:13px 16px}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody tr{transition:background .12s var(--ease)}.tbl tbody tr:hover{background:var(--paper)}.tbl tbody tr.is-skipped{opacity:.55}.td-amount,.td-right{text-align:right}.cell-strong{font-weight:600}.cell-dim{color:var(--ink-2);font-size:12px}.clip{color:var(--line-strong)}.clip.has{color:var(--accent)}.clip.expired{color:var(--danger)}.auth-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{width:100%;max-width:380px}.auth-head{text-align:center;margin-bottom:24px}.auth-title{font-family:var(--font-display);letter-spacing:-.02em;font-size:30px;font-weight:500}.row{align-items:center;gap:12px;display:flex}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{flex-direction:column;display:flex}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.muted-text{color:var(--ink-2)}.empty{text-align:center;color:var(--ink-2);padding:56px 20px}.toast{background:var(--ink);color:var(--paper);border-radius:var(--r-md);box-shadow:var(--shadow-lg);z-index:50;padding:11px 18px;font-size:13px;font-weight:500;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);text-align:center;color:var(--ink-2);cursor:pointer;transition:all .15s var(--ease);background:var(--panel);padding:30px}.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-press)}.kbd{font-family:var(--font-mono);background:var(--paper-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-size:11px}.stat{flex-direction:column;gap:2px;display:flex}.stat-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:600}.stat-label{color:var(--ink-2);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.months{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;margin-bottom:18px;padding-bottom:12px;display:flex}.month-tab{border-radius:var(--r-sm);color:var(--ink-2);cursor:pointer;transition:all .15s var(--ease);background:0 0;border:1px solid #0000;padding:7px 14px;font-size:13px;font-weight:600}.month-tab:hover{background:var(--paper-2);color:var(--ink)}.month-tab.active{background:var(--accent-soft);color:var(--accent-press)}.month-tab .count{font-family:var(--font-mono);opacity:.65;font-variant-numeric:tabular-nums;margin-left:6px;font-size:11px}.modal-scrim{z-index:40;background:#1b1a1659;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:var(--r-lg);width:100%;max-width:480px;box-shadow:var(--shadow-lg)}
