:root{--ink: #1d2826;--ink-2: #44514d;--muted: #7b8682;--line: #e3e8e5;--line-2: #eef2ef;--bg: #f4f6f4;--surface: #ffffff;--surface-2: #f8faf8;--brand: #17634c;--brand-2: #1f7d61;--brand-soft: #e6f2ec;--pos: #12805c;--neg: #c2412d;--warn: #b7791f;--warn-soft: #fdf4e3;--bad-soft: #fcebe7;--info-soft: #e9f1fb;--info: #2f6db3;--radius: 14px;--radius-sm: 9px;--shadow: 0 1px 2px rgba(16, 32, 28, .05), 0 4px 16px rgba(16, 32, 28, .04);--side: 248px;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--ink);background:var(--bg);font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}@media(prefers-color-scheme:dark){:root{--ink: #e7ecea;--ink-2: #c3ccc8;--muted: #8d9894;--line: #2b3532;--line-2: #232c29;--bg: #141a18;--surface: #1b2220;--surface-2: #1f2725;--brand: #3fb28c;--brand-2: #56c39d;--brand-soft: #1f3a31;--pos: #4cc493;--neg: #ff8a75;--warn: #e2b04f;--warn-soft: #3a3020;--bad-soft: #3d2420;--info-soft: #1f2d3d;--info: #79aee8;--shadow: none}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}h1,h2,h3,p{margin:0}h1{font-size:24px;font-weight:750;letter-spacing:-.4px}h2{font-size:15px;font-weight:700}h3{font-size:13px;font-weight:700;margin:18px 0 8px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.4px}p{line-height:1.6}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;background:var(--line-2);padding:1px 5px;border-radius:5px}pre.code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;overflow:auto;max-height:60vh;font-size:12px}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;min-height:36px;min-width:0;width:100%;outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}input:disabled,select:disabled{background:var(--surface-2);color:var(--muted)}input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--brand)}input[type=file]{border-style:dashed;padding:10px}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);padding:8px 14px;min-height:36px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.btn:hover{border-color:var(--brand);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-2)}.btn.danger{background:var(--neg);border-color:var(--neg);color:#fff}.btn.ghost{background:transparent}.btn.sm{padding:5px 10px;min-height:30px;font-size:13px}.btn.block{width:100%}.danger-text{color:var(--neg)}.icon-btn{display:inline-grid;place-items:center;width:34px;height:34px;border:0;background:transparent;border-radius:8px;cursor:pointer;color:var(--ink-2)}.icon-btn:hover{background:var(--line-2)}.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 12px;gap:16px;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:4px 6px}.brand strong{display:block;font-size:15px}.brand small{color:var(--muted);font-size:12px}.logo{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--brand);color:#fff;font-weight:800}.brand.big .logo{width:44px;height:44px;font-size:20px}.side nav{display:flex;flex-direction:column;gap:2px}.side nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--ink-2);font-weight:550}.side nav a:hover{background:var(--line-2);text-decoration:none}.side nav a.on{background:var(--brand-soft);color:var(--brand)}.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:12px}.me{display:flex;gap:10px;align-items:center;padding:0 6px;color:var(--ink-2)}.me strong{display:block;font-size:13px}.me small{color:var(--muted)}.main{min-width:0;display:flex;flex-direction:column}.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 28px;min-height:56px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.top-title{font-weight:700}.company-switch{margin-left:auto;display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}.company-switch button{border:0;background:transparent;padding:6px 12px;border-radius:7px;cursor:pointer;font-weight:600;color:var(--ink-2)}.company-switch button.on{background:var(--brand);color:#fff}.content{padding:24px 28px 64px;display:flex;flex-direction:column;gap:16px;max-width:1440px;width:100%}.only-mobile,.scrim{display:none}.splash{display:grid;place-items:center;height:100vh;color:var(--muted)}.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(circle at 20% 10%,var(--brand-soft),transparent 50%),var(--bg)}.login-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:28px;display:flex;flex-direction:column;gap:14px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-head p{max-width:760px;margin-top:4px}.page-head .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.page-head .actions select{width:auto}.muted{color:var(--muted)}.small{font-size:12px}.block{display:block}.nowrap{white-space:nowrap}.pos{color:var(--pos)}.neg{color:var(--neg)}.spacer{flex:1}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0;overflow-x:auto}.card.narrow{max-width:460px}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.link{font-weight:600;font-size:13px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.card.project{text-align:left;cursor:pointer;font:inherit;color:inherit}.card.project:hover{border-color:var(--brand)}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.stat{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;min-width:0}.stat.clickable{cursor:pointer}.stat.clickable:hover{border-color:var(--brand)}.stat.bad{background:var(--bad-soft);border-color:color-mix(in srgb,var(--neg) 30%,transparent)}.stat-title{font-size:12px;color:var(--muted);font-weight:600}.stat strong{font-size:20px;font-weight:750;letter-spacing:-.3px;overflow-wrap:anywhere}.stat-sub{font-size:12px;color:var(--muted)}.money small{color:var(--muted);font-size:.75em;font-weight:500}.kv{display:grid;grid-template-columns:1fr auto;gap:6px 12px;font-size:13px}.kv span{color:var(--muted)}.kv b{text-align:right}.month-result{border-top:1px dashed var(--line);padding-top:10px}.mr{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:13px;color:var(--ink-2)}.mr>span:first-child{font-weight:700}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px}ul.plain{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle}.dot.ok{background:var(--pos)}.dot.bad{background:var(--neg)}.alerts{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px}.alert{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:11px;font-weight:550;color:var(--ink);border:1px solid transparent}.alert:hover{text-decoration:none;filter:brightness(.98)}.alert .go{margin-left:auto;color:var(--muted)}.alert.info{background:var(--info-soft)}.alert.info svg{color:var(--info)}.alert.warn{background:var(--warn-soft)}.alert.warn svg{color:var(--warn)}.alert.bad{background:var(--bad-soft)}.alert.bad svg{color:var(--neg)}.trend{display:flex;align-items:flex-end;gap:14px;height:170px;padding-top:6px}.trend-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.bars{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:4px}.bar{width:40%;max-width:26px;min-height:2px;border-radius:5px 5px 0 0}.bar.in,.legend i.in{background:var(--pos)}.bar.out,.legend i.out{background:var(--neg);opacity:.8}.legend{font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin:0 4px 0 10px;vertical-align:middle}.progress{height:7px;background:var(--line-2);border-radius:9px;overflow:hidden}.progress span{display:block;height:100%;background:var(--brand);border-radius:9px}.progress span.warn{background:var(--warn)}.progress span.bad{background:var(--neg)}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.card .table-wrap{border:0;border-radius:0}.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th{text-align:left;font-size:11.5px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface-2)}.tbl td{padding:10px 12px;border-bottom:1px solid var(--line-2);vertical-align:top}.tbl tr:last-child td{border-bottom:0}.tbl .r{text-align:right}.tbl tr.clickable{cursor:pointer}.tbl tr.clickable:hover td{background:var(--surface-2)}.tbl tr.voided td{opacity:.5}.tbl tr.voided .money{text-decoration:line-through}.tbl tr.group-row td{background:var(--surface-2);font-weight:700}.tbl tr.warn-row td{background:var(--warn-soft)}.tbl td.desc{max-width:320px;overflow-wrap:anywhere}.tbl.matrix td,.tbl.matrix th{padding:8px 10px;white-space:nowrap}.tbl .sticky{position:sticky;left:0;background:var(--surface);z-index:1;white-space:normal;min-width:180px}.tbl th.sticky,.tbl tr.group-row .sticky{background:var(--surface-2)}.empty{padding:28px 16px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius)}.card .empty{border:0;padding:14px}.error-box{background:var(--bad-soft);color:var(--neg);padding:10px 14px;border-radius:10px;font-weight:550}.pager{display:flex;justify-content:center;align-items:center;gap:14px;color:var(--muted)}.timeline{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:13px}.errors{color:var(--neg);font-size:13px;max-height:240px;overflow:auto}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:650;background:var(--line-2);color:var(--ink-2);white-space:nowrap}.b-IN,.b-POSTED,.b-ACTIVE,.b-PAID,.b-APPROVED,.b-PROCESSED,.b-SENT,.b-MATCHED,.b-CREATED{background:var(--brand-soft);color:var(--pos)}.b-OUT,.b-REJECTED,.b-OVERDUE,.b-FAILED{background:var(--bad-soft);color:var(--neg)}.b-PENDING,.b-RETURNED,.b-PLANNED,.b-NEW{background:var(--warn-soft);color:var(--warn)}.b-TRANSFER,.b-IN_TRANSIT,.b-OPEN{background:var(--info-soft);color:var(--info)}.tag{display:inline-block;font-size:11px;font-weight:650;padding:1px 7px;border-radius:6px;background:var(--warn-soft);color:var(--warn)}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.filters>input,.filters>select{width:auto;max-width:230px}.filters .rec{font-size:13px;color:var(--ink-2)}.filters .rec input{width:auto}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.tabs button{border:0;background:transparent;padding:9px 12px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs button.on{color:var(--brand);border-bottom-color:var(--brand)}.seg{display:flex;background:var(--line-2);border-radius:10px;padding:3px;gap:3px}.seg button{flex:1;border:0;background:transparent;padding:8px;border-radius:8px;font-weight:650;cursor:pointer;color:var(--ink-2)}.seg button.on{background:var(--surface);color:var(--brand);box-shadow:var(--shadow)}.bulk{display:flex;gap:12px;align-items:center}.check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:13.5px}.checks{display:flex;flex-wrap:wrap;gap:8px 18px}.overlay{position:fixed;inset:0;z-index:50;background:#0a141273;display:grid;place-items:center;padding:16px;animation:fade .12s ease}.modal{width:min(520px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:var(--surface);border-radius:16px;box-shadow:0 20px 60px #0003}.modal.wide{width:min(820px,100%)}.modal header{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 10px}.modal header h2{font-size:17px}.modal-body{padding:4px 18px 18px;overflow-y:auto}.modal footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);flex-wrap:wrap}.footer-actions{display:flex;gap:8px;width:100%;flex-wrap:wrap}@keyframes fade{0%{opacity:0}}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}.form-grid.one{grid-template-columns:1fr}.form-grid .wide{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span{font-size:12.5px;font-weight:650;color:var(--ink-2)}.hint{color:var(--muted);font-size:11.5px;line-height:1.45}.line{display:grid;grid-template-columns:1fr 160px 34px;gap:8px;margin-bottom:8px}.attach{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.attach-add{margin-top:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;background:var(--line-2);font-size:12.5px;color:var(--ink)}.chip button{border:0;background:transparent;cursor:pointer;font-size:15px;line-height:1;color:var(--muted)}.detail-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.detail-head .money{font-size:24px;font-weight:750}.dl{display:grid;grid-template-columns:160px 1fr;gap:8px 16px;margin:0;font-size:13.5px}.dl dt{color:var(--muted)}.dl dd{margin:0;overflow-wrap:anywhere}.prose p{color:var(--ink-2)}.toasts{position:fixed;right:16px;bottom:16px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{background:var(--ink);color:var(--surface);padding:11px 15px;border-radius:11px;box-shadow:0 8px 30px #0003;font-weight:550;animation:fade .15s ease}.toast.err{background:var(--neg);color:#fff}@media(max-width:1100px){.grid2{grid-template-columns:1fr}}@media(max-width:860px){.shell{grid-template-columns:1fr}.side{position:fixed;z-index:40;left:0;top:0;width:270px;transform:translate(-100%);transition:transform .2s ease}.shell.menu-open .side{transform:none}.shell.menu-open .scrim{display:block;position:fixed;inset:0;z-index:30;background:#00000059}.only-mobile{display:inline-grid}.top{padding:8px 16px}.content{padding:16px 16px 48px}.company-switch button{padding:6px 9px}.hide-sm{display:none}.form-grid{grid-template-columns:1fr}.dl{grid-template-columns:1fr;gap:2px}.dl dd{margin-bottom:8px}.filters>input,.filters>select{max-width:none;flex:1 1 140px}.modal{max-height:calc(100vh - 16px)}.overlay{padding:8px;align-items:end}h1{font-size:21px}.alerts{grid-template-columns:1fr}}a.me{text-decoration:none;border-radius:8px}a.me:hover{background:var(--surface-2)}.inline-group{display:inline-flex;gap:6px;align-items:center}.tbl.budget td{min-width:78px;padding:5px 6px}.tbl.budget input.cell{width:100%;min-width:68px;text-align:right;padding:3px 5px;font:inherit;font-variant-numeric:tabular-nums}.tbl.budget td.over small,.tbl.budget td.over span{color:var(--neg);font-weight:600}.tbl.budget th.now{color:var(--brand)}.filters .tabs{margin:0}.stat.warn{background:var(--warn-soft)}.stat.good{background:var(--brand-soft)}.codebox{display:flex;gap:8px;align-items:flex-start;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:12px}.codebox code{flex:1;min-width:0;white-space:pre-wrap;word-break:break-all;font-size:12px;background:none}.warn-text{color:var(--warn)}
