:root{--paper: #F3F0E7;--paper-2: #ECE8DB;--card: #FBFAF4;--ink: #16130F;--ink-2: #4A453D;--ink-3: #8A8377;--line: #16130F;--hairline: #D8D2C4;--cyan: #2ECEE6;--pink: #FF2E93;--lime: #A3E635;--yellow: #FBD024;--orange: #FF8A3C;--purple: #7C6CF0;--mint: #BCE8D3;--hl: #FBE94B;--income: #1E9E62;--expense: #E23D53;--income-bg: #E1F3E9;--expense-bg: #FBE3E6;--f-display: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;--f-body: "Poppins", system-ui, -apple-system, "Segoe UI", sans-serif;--f-serif: "Poppins", system-ui, "Segoe UI", sans-serif;--border-w: 2.5px;--radius: 4px;--radius-lg: 6px;--shadow: 5px 5px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--shadow-lg: 8px 8px 0 var(--ink);--sidebar-w: 256px}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body{height:100%}body{font-family:var(--f-body);background:var(--paper);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}a{color:inherit;text-decoration:none}ul{list-style:none;padding:0}h1,h2,h3,h4{font-weight:700;line-height:1.1}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(var(--hairline) .5px,transparent .5px);background-size:22px 22px;opacity:.35}.display{font-family:var(--f-display);font-weight:700;letter-spacing:-.3px}.mono{font-family:var(--f-mono)}.serif{font-family:var(--f-serif)}.eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:var(--ink-3);font-weight:700}.eyebrow .star{color:var(--pink)}.page-title{font-family:var(--f-display);font-weight:700;font-size:clamp(26px,3.1vw,38px);line-height:1;letter-spacing:-.8px}.hl{background:linear-gradient(var(--hl),var(--hl));background-size:100% 62%;background-repeat:no-repeat;background-position:0 78%;padding:0 .12em}.hl-mint{background-image:linear-gradient(var(--mint),var(--mint))}.hl-pink{background-image:linear-gradient(var(--pink),var(--pink))}.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.app{display:flex;min-height:100vh;position:relative;z-index:1}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--card);border-right:var(--border-w) solid var(--line);padding:20px 16px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:11px;padding-bottom:16px;border-bottom:var(--border-w) solid var(--line)}.brand .logo{display:grid;place-items:center;flex:0 0 auto}.brand .logo img{width:40px;height:40px;object-fit:contain;display:block}.brand .brand-name{font-family:var(--f-display);font-weight:700;font-size:18px;line-height:1;letter-spacing:-.4px}.brand .brand-sub{font-family:var(--f-mono);font-size:9.5px;letter-spacing:1.5px;color:var(--ink-3);text-transform:uppercase;margin-top:3px}.nav{display:flex;flex-direction:column;gap:4px}.nav-label{font-family:var(--f-mono);font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--ink-3);padding:8px 8px 4px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border:2px solid transparent;border-radius:var(--radius);font-weight:600;font-size:13.5px;color:var(--ink-2);transition:transform .05s ease}.nav-item .ico{width:18px;text-align:center;flex:0 0 18px}.nav-item .tag{margin-left:auto;font-family:var(--f-mono);font-size:10px;background:var(--paper-2);border:1.5px solid var(--line);border-radius:20px;padding:0 7px;color:var(--ink)}.nav-item:hover{background:var(--paper-2);color:var(--ink)}.nav-item.active{background:var(--ink);color:var(--paper);border-color:var(--ink);box-shadow:var(--shadow-sm)}.nav-item.active .tag{background:var(--paper);color:var(--ink)}.sidebar-foot{margin-top:auto;border-top:var(--border-w) solid var(--line);padding-top:14px;font-family:var(--f-mono);font-size:10px;letter-spacing:.5px;color:var(--ink-3);line-height:1.7}.sidebar-foot strong{color:var(--ink-2)}.main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:22px 30px 18px;border-bottom:var(--border-w) solid var(--line);background:var(--paper);position:sticky;top:0;z-index:20}.topbar .headings .eyebrow{display:block;margin-bottom:6px}.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.view-wrap{padding:26px 30px 60px;max-width:1240px;width:100%}.view{display:none;animation:fade .18s ease}.view.active{display:block}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:30px 0 14px;flex-wrap:wrap}.section-head:first-child{margin-top:4px}.section-head h2{font-family:var(--f-display);font-size:22px;font-weight:700;letter-spacing:-.5px}.section-head .eyebrow{margin-bottom:4px}.card{background:var(--card);border:var(--border-w) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;position:relative}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.card-head h3{font-size:15px;font-weight:700;letter-spacing:-.2px}.card-title-mono{font-family:var(--f-mono);font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-3)}.bar{display:block;width:40px;height:7px;border-radius:2px;margin-bottom:12px}.bar-cyan{background:var(--cyan)}.bar-pink{background:var(--pink)}.bar-lime{background:var(--lime)}.bar-yellow{background:var(--yellow)}.bar-orange{background:var(--orange)}.bar-purple{background:var(--purple)}.grid{display:grid;gap:16px}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-2-1{grid-template-columns:2fr 1fr}.grid-1-2{grid-template-columns:1fr 2fr}@media (max-width: 1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-2-1,.grid-1-2,.grid-3{grid-template-columns:1fr}}@media (max-width: 720px){.grid-4,.grid-2{grid-template-columns:1fr}}.stat{background:var(--card);border:var(--border-w) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px 18px}.stat.dark{background:var(--ink);color:var(--paper)}.stat .stat-label{font-family:var(--f-mono);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-3)}.stat.dark .stat-label{color:#b8b2a4}.stat .stat-value{font-family:var(--f-mono);font-weight:700;font-size:clamp(22px,2.4vw,30px);letter-spacing:-.5px;margin-top:6px;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:6px}.stat .stat-value .cur{font-size:13px;color:var(--ink-3);font-weight:400}.stat.dark .stat-value .cur{color:#b8b2a4}.stat .stat-foot{margin-top:8px;font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.stat.dark .stat-foot{color:#cfc9bb}.delta{font-family:var(--f-mono);font-weight:700;font-size:11.5px;padding:1px 6px;border-radius:20px;border:1.5px solid var(--line)}.delta.up{background:var(--income-bg);color:var(--income)}.delta.down{background:var(--expense-bg);color:var(--expense)}.stat.dark .delta{border-color:#ffffff4d}.btn{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:13px;padding:9px 15px;border:var(--border-w) solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-sm);transition:transform .06s ease,box-shadow .06s ease;white-space:nowrap}.btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-cyan{background:var(--cyan)}.btn-pink{background:var(--pink);color:#fff}.btn-lime{background:var(--lime)}.btn-yellow{background:var(--yellow)}.btn-ghost{box-shadow:none;background:transparent}.btn-ghost:hover{background:var(--paper-2);transform:none;box-shadow:none}.btn-sm{padding:6px 11px;font-size:12px;box-shadow:2px 2px 0 var(--ink)}.btn-icon{padding:7px 9px}.btn .plus{font-size:16px;line-height:1;margin-top:-2px}.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:11px;letter-spacing:.5px;padding:3px 9px;border:2px solid var(--line);border-radius:20px;background:var(--card);white-space:nowrap}.chip .dot{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--line);flex:0 0 auto}.chip.solid{color:#fff}.status{font-family:var(--f-mono);font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:3px 9px;border-radius:4px;border:2px solid var(--line)}.status.paid{background:var(--income-bg);color:var(--income)}.status.sent{background:#e4f1fb;color:#1f6fb2}.status.draft{background:var(--paper-2);color:var(--ink-2)}.status.overdue{background:var(--expense-bg);color:var(--expense)}.status.partial{background:#fff3d6;color:#a9791a}.status.accepted{background:var(--income-bg);color:var(--income)}.status.declined{background:var(--expense-bg);color:var(--expense)}.status.expired{background:var(--paper-2);color:var(--ink-3)}.status.converted{background:#e4f1fb;color:#1f6fb2}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data thead th{font-family:var(--f-mono);font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:12px 14px;border-bottom:var(--border-w) solid var(--line);background:var(--paper-2);white-space:nowrap;position:sticky;top:0}table.data tbody td{padding:12px 14px;border-bottom:1.5px solid var(--hairline);vertical-align:middle}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr:hover{background:var(--paper-2)}table.data .r{text-align:right}table.data .amt{font-family:var(--f-mono);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.amt.in{color:var(--income)}.amt.out{color:var(--expense)}.cell-title{font-weight:600}.cell-sub{font-size:11.5px;color:var(--ink-3)}.row-actions{display:flex;gap:6px;justify-content:flex-end}.icon-btn{width:30px;height:30px;display:grid;place-items:center;border:2px solid var(--line);border-radius:var(--radius);background:var(--card);font-size:13px;transition:transform .05s}.icon-btn:hover{background:var(--paper-2)}.icon-btn.danger:hover{background:var(--expense-bg)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-family:var(--f-mono);font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--ink-2);font-weight:700}.field .hint{font-size:11px;color:var(--ink-3);font-family:var(--f-body);letter-spacing:0;text-transform:none;font-weight:400}.input,.select,textarea.input{width:100%;padding:10px 12px;border:2px solid var(--line);border-radius:var(--radius);background:var(--card);font-size:13.5px;transition:box-shadow .1s,border-color .1s}.input:focus,.select:focus,textarea.input:focus{outline:none;box-shadow:var(--shadow-sm);border-color:var(--ink)}.input.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2316130F' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}@media (max-width: 560px){.field-row,.field-row-3{grid-template-columns:1fr}}.seg{display:inline-flex;border:2px solid var(--line);border-radius:var(--radius);overflow:hidden}.seg button{padding:8px 16px;font-weight:700;font-size:12.5px;font-family:var(--f-mono);letter-spacing:.5px;border-right:2px solid var(--line)}.seg button:last-child{border-right:none}.seg button.on-in{background:var(--income);color:#fff}.seg button.on-out{background:var(--expense);color:#fff}.seg button:not(.active){background:var(--card);color:var(--ink-2)}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.filters .input,.filters .select{width:auto;min-width:150px}.search{position:relative;flex:1 1 220px;min-width:200px}.search .input{padding-left:34px;width:100%}.search .s-ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--ink-3)}.pbar{height:12px;border:2px solid var(--line);border-radius:20px;background:var(--card);overflow:hidden}.pbar>span{display:block;height:100%;background:var(--lime);border-radius:20px 0 0 20px;transition:width .4s ease}.pbar.warn>span{background:var(--yellow)}.pbar.over>span{background:var(--expense)}.budget-row{padding:14px 0;border-bottom:1.5px solid var(--hairline)}.budget-row:last-child{border-bottom:none}.budget-meta{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;gap:10px}.budget-meta .amt{font-family:var(--f-mono);font-size:12.5px}.modal-host{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;background:#16130f80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-host.open{display:flex}.modal{background:var(--paper);border:var(--border-w) solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;animation:pop .18s ease}.modal.wide{max-width:820px}@keyframes pop{0%{transform:translateY(-10px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 22px;border-bottom:var(--border-w) solid var(--line)}.modal-head h3{font-family:var(--f-display);font-size:20px;font-weight:700;letter-spacing:-.5px}.modal-body{padding:22px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:var(--border-w) solid var(--line);background:var(--paper-2);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.x-btn{width:34px;height:34px;display:grid;place-items:center;border:2px solid var(--line);border-radius:var(--radius);background:var(--card);font-size:16px}.x-btn:hover{background:var(--expense);color:#fff}.toast-host{position:fixed;bottom:22px;right:22px;z-index:200;display:flex;flex-direction:column;gap:10px}.toast{background:var(--ink);color:var(--paper);border:var(--border-w) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px;font-weight:600;font-size:13px;display:flex;align-items:center;gap:10px;max-width:340px;animation:slidein .2s ease}.toast .t-ico{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:var(--lime);color:var(--ink);font-weight:800}.toast.err .t-ico{background:var(--expense);color:#fff}@keyframes slidein{0%{transform:translate(20px);opacity:0}to{transform:none;opacity:1}}.empty{text-align:center;padding:46px 20px;color:var(--ink-3)}.empty .em-ico{font-size:34px;margin-bottom:10px}.empty h4{font-family:var(--f-display);font-weight:700;font-size:18px;color:var(--ink-2);margin-bottom:6px;letter-spacing:-.3px}.strip{background:var(--ink);color:var(--paper);border-radius:var(--radius);padding:14px 20px;font-family:var(--f-serif);font-weight:700;text-align:center;font-size:15px;border:var(--border-w) solid var(--line);box-shadow:var(--shadow)}.legend{display:flex;flex-direction:column;gap:9px}.legend li{display:flex;align-items:center;gap:9px;font-size:12.5px}.legend .sw{width:13px;height:13px;border-radius:3px;border:1.5px solid var(--line);flex:0 0 auto}.legend .lg-val{margin-left:auto;font-family:var(--f-mono);font-weight:700;font-variant-numeric:tabular-nums}.legend .lg-pct{font-family:var(--f-mono);color:var(--ink-3);font-size:11px;min-width:42px;text-align:right}.chart-svg{width:100%;height:auto;display:block;overflow:visible}.chart-svg .grid-line{stroke:var(--hairline);stroke-width:1}.chart-svg .axis-label{font-family:var(--f-mono);font-size:10px;fill:var(--ink-3)}.bar-legend{display:flex;gap:16px;margin-top:6px}.bar-legend span{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:11px;color:var(--ink-2)}.bar-legend i{width:12px;height:12px;border-radius:3px;border:1.5px solid var(--line)}.muted{color:var(--ink-3)}.right{text-align:right}.center{text-align:center}.mt-0{margin-top:0}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-0{margin-bottom:0}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.flex{display:flex}.between{justify-content:space-between}.items-center{align-items:center}.gap-8{gap:8px}.gap-12{gap:12px}.wrap{flex-wrap:wrap}.divider{height:var(--border-w);background:var(--line);border:none;margin:0}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.big-num{font-family:var(--f-mono);font-weight:700;font-variant-numeric:tabular-nums}.stat .spark{margin-top:12px;height:30px}.menu-btn{display:none}@media (max-width: 900px){.sidebar{position:fixed;z-index:60;left:0;top:0;transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:none}.menu-btn{display:inline-flex}.view-wrap{padding:20px 16px 60px}.topbar{padding:16px}}@media print{.sidebar,.topbar-actions,.btn,.filters,.no-print{display:none!important}body,.card{box-shadow:none!important}.app{display:block}}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper)}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--hairline);border-top-color:var(--ink);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--paper);background-image:radial-gradient(circle at 12% 18%,rgba(46,206,230,.1),transparent 42%),radial-gradient(circle at 88% 82%,rgba(255,46,147,.09),transparent 42%);padding:24px}.login-card{width:100%;max-width:400px;background:var(--card);border:var(--border-w) solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px 26px 22px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:14px}.login-logo{width:46px;height:46px;flex:0 0 46px;border:var(--border-w) solid var(--line);border-radius:var(--radius);background:var(--ink);display:flex;align-items:center;justify-content:center;overflow:hidden}.login-logo img{width:78%;height:78%;object-fit:contain}.login-title{font-family:var(--f-display);font-weight:700;font-size:20px;letter-spacing:-.4px;line-height:1}.login-sub{font-family:var(--f-mono);font-size:9.5px;letter-spacing:1.5px;color:var(--ink-3);text-transform:uppercase;margin-top:4px}.login-lead{color:var(--ink-2);font-size:13.5px;line-height:1.5;margin:4px 0 18px}.login-btn{width:100%;justify-content:center;margin-top:6px}.login-msg{font-size:12.5px;line-height:1.45;padding:9px 11px;border-radius:var(--radius);border:2px solid var(--line);margin:4px 0 12px}.login-msg.err{background:var(--expense-bg)}.login-msg.ok{background:var(--income-bg)}.login-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1.5px dashed var(--hairline);gap:10px;flex-wrap:wrap}.link-btn{background:none;border:none;padding:0;cursor:pointer;font-family:var(--f-body);font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}.link-btn:hover{color:var(--ink)}.login-domain{font-family:var(--f-mono);font-size:9.5px;letter-spacing:1px;color:var(--ink-3);text-transform:uppercase}.login-legal{font-family:var(--f-mono);font-size:10px;letter-spacing:1px;color:var(--ink-3);text-transform:uppercase}.emp-avatar{width:34px;height:34px;flex:0 0 34px;border-radius:50%;border:2px solid var(--line);background:var(--mint);display:inline-flex;align-items:center;justify-content:center;font-family:var(--f-mono);font-weight:700;font-size:11px;color:var(--ink);overflow:hidden}.emp-avatar img{width:100%;height:100%;object-fit:cover;display:block}.user-chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:11px;color:var(--ink-2)}.user-chip .avatar{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--cyan);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;color:var(--ink);overflow:hidden;flex:0 0 28px}.user-chip .avatar img{width:100%;height:100%;object-fit:cover;display:block}.user-chip .user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.user-chip .user-name{display:none}}
