:root{--brand:#ae131e;--brand-dark:#7a0e19;--brand-light:#fbe9ea;--brand-glow:#ae131e47;--info:#0a6ce0;--info-light:#2e8bff24;--danger:#e02348;--danger-light:#ff4d6d24;--warning:#c47a00;--warning-light:#ffb0202e;--success:#009a8c;--success-light:#10c4b224;--backdrop-app:radial-gradient(1100px 700px at 6% -8%, #2e8bff12 0%, #2e8bff00 55%), radial-gradient(900px 650px at 100% 0%, #10c4b20f 0%, #10c4b200 55%), radial-gradient(1000px 800px at 50% 130%, #ae131e09 0%, #ae131e00 60%), #eef1f4;--bg:#eef1f4;--surface:#fff;--border:#0a0c101a;--text:#14161c;--text-muted:#0a0c109e;--glass-fill:#ffffffad;--glass-fill-hover:#ffffffd1;--glass-fill-press:#ffffffe6;--glass-blur:20px;--glass-blur-sm:12px;--glass-saturate:160%;--glass-ring:inset 0 0 0 .5px #0a0c101a;--glass-highlight:inset 0 1px 0 #ffffffbf, inset 0 -1px 0 #ffffff1f;--shadow-1:0 1px 2px #0a0c100f, 0 6px 16px #0a0c1014;--shadow-2:0 2px 4px #0a0c1014, 0 14px 28px #0a0c101f;--shadow-press:0 1px 2px #0a0c101f;--hover-lift:-1px;--focus-ring:0 0 0 3px #ae131e40;--radius:14px;--radius-sm:10px;--radius-lg:20px;--radius-pill:999px;--font-body:"Figtree", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:"Figtree", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;font-family:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--backdrop-app);color:var(--text);background-attachment:fixed;margin:0;font-size:14px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600}a{color:var(--brand);text-decoration:none}button{font-family:inherit}.app-shell{min-height:100vh;display:flex}.mobile-topbar{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur-sm)) saturate(var(--glass-saturate));box-shadow:var(--glass-ring);z-index:40;align-items:center;gap:12px;padding:12px 16px;display:none;position:sticky;top:0}.mobile-topbar img{width:auto;height:28px}.mobile-nav-toggle{background:var(--glass-fill);box-shadow:var(--glass-ring);border-radius:var(--radius-sm);cursor:pointer;color:var(--text);border:none;padding:6px 10px;font-size:18px;line-height:1}.sidebar-backdrop{display:none}.sidebar{border-radius:var(--radius-lg);background:var(--glass-fill);width:232px;-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-ring), var(--glass-highlight), var(--shadow-1);color:var(--text);flex-direction:column;flex-shrink:0;margin:12px 0 12px 12px;padding:18px 0;display:flex}.sidebar .brand{margin-bottom:10px;padding:0 18px 16px;box-shadow:inset 0 -1px #0a0c1014}.sidebar .brand img{width:auto;height:38px;display:block}.sidebar .brand small{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--brand);margin-top:8px;font-size:11px;font-weight:600;display:block}.sidebar nav{flex-direction:column;flex:1;gap:2px;min-height:0;padding:4px 10px;display:flex;overflow-y:auto}.sidebar nav a{color:var(--text-muted);border-radius:var(--radius-pill);padding:9px 14px;font-size:13.5px;font-weight:500;transition:background .14s,color .14s}.sidebar nav a:hover{color:var(--text);background:#ae131e14}.sidebar nav a.active{background:var(--brand);color:#fff;box-shadow:0 8px 20px var(--brand-glow);font-weight:600}.sidebar .nav-leaf{align-items:center;gap:2px;display:flex}.sidebar .nav-leaf-link{flex:1;min-width:0}.sidebar .nav-add-btn{border-radius:var(--radius-pill);width:24px;height:24px;color:var(--brand);background:#ae131e1a;flex:none;justify-content:center;align-items:center;margin-right:8px;padding:0;font-size:15px;font-weight:700;line-height:1;transition:background .14s,color .14s,transform 80ms;display:flex}.sidebar .nav-add-btn:hover{background:var(--brand);color:#fff;transform:scale(1.08)}.sidebar .nav-group{flex-direction:column;display:flex}.sidebar .nav-group-header{cursor:pointer;width:100%;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:7px;margin-top:2px;padding:12px 14px 6px;font-size:10.5px;font-weight:700;display:flex}.sidebar .nav-group-header:hover{color:var(--text)}.sidebar .nav-caret{border-radius:var(--radius-pill);width:18px;height:18px;color:var(--text-muted);background:#0a0c100f;flex:none;justify-content:center;align-items:center;font-size:11px;transition:transform .12s,background .14s,color .14s;display:inline-flex}.sidebar .nav-group-header:hover .nav-caret{color:var(--brand);background:#ae131e1f}.sidebar .nav-caret.open{color:var(--brand);background:#ae131e24;transform:rotate(90deg)}.sidebar .nav-group-items{flex-direction:column;gap:2px;display:flex}.sidebar .user-box{margin-top:10px;padding:14px 18px 0;font-size:12.5px;box-shadow:inset 0 1px #0a0c1014}.sidebar .user-box .role-badge{border-radius:var(--radius-pill);background:var(--brand-light);color:var(--brand-dark);letter-spacing:.03em;margin-top:4px;padding:2px 8px;font-size:10.5px;display:inline-block}.sidebar .logout-btn{background:var(--glass-fill);box-shadow:var(--glass-ring);color:var(--text);border-radius:var(--radius-pill);cursor:pointer;border:none;margin:10px 18px 0;padding:7px 12px;font-size:12.5px}.sidebar .logout-btn:hover{color:var(--brand);background:#ae131e14}.main{flex:1;min-width:0;padding:28px 36px 60px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.page-header h1{letter-spacing:-.015em;margin:0;font-size:22px}.page-header .subtitle{color:var(--text-muted);margin-top:2px;font-size:13px}.card{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-ring), var(--glass-highlight), var(--shadow-1);border-radius:var(--radius);margin-bottom:20px;padding:20px}.card h2,.card h3{margin-top:0}.grid{gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}@media (width<=900px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr 1fr}}.stat-card{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-ring), var(--glass-highlight), var(--shadow-1);border-radius:var(--radius);border-left:3px solid #0000;padding:16px 18px}.stat-card.accent-brand{border-left-color:var(--brand)}.stat-card.accent-info{border-left-color:var(--info)}.stat-card.accent-warning{border-left-color:var(--warning)}.stat-card.accent-success{border-left-color:var(--success)}.stat-card.accent-danger{border-left-color:var(--danger)}.section-label{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--brand);margin:24px 0 10px;font-size:12.5px;font-weight:600}.snapshot-list{flex-direction:column;gap:12px;display:flex}.snapshot-list>div{box-shadow:inset 0 -1px 0 var(--border);justify-content:space-between;align-items:center;padding-bottom:12px;font-size:13.5px;display:flex}.snapshot-list>div:last-child{box-shadow:none;padding-bottom:0}.snapshot-list a{font-family:var(--font-display);color:var(--text);font-size:18px;font-weight:700}.snapshot-list a:hover{color:var(--brand)}.stat-card .label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:12px}.stat-card .value{font-family:var(--font-mono);margin-top:6px;font-size:24px;font-weight:600}.stat-card .value.positive{color:var(--success)}.stat-card .value.negative{color:var(--danger)}table{border-collapse:collapse;width:100%;font-size:13.5px}thead th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);box-shadow:inset 0 -2px 0 var(--border);white-space:nowrap;padding:8px 10px;font-size:11.5px}tbody td{box-shadow:inset 0 -1px 0 var(--border);vertical-align:middle;padding:10px}tbody tr:hover{background:#ae131e0a}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}.table-wrap{overflow-x:auto}.btn{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur-sm)) saturate(140%);box-shadow:var(--glass-ring), var(--shadow-1);color:var(--text);border-radius:var(--radius-pill);cursor:pointer;border:none;align-items:center;gap:6px;padding:9px 16px;font-size:13px;font-weight:600;transition:background .14s,box-shadow .14s,transform .1s;display:inline-flex}.btn:hover{background:var(--glass-fill-hover);box-shadow:var(--glass-ring), var(--shadow-2);transform:translateY(var(--hover-lift))}.btn:active:not(:disabled){box-shadow:var(--glass-ring), var(--shadow-press);transform:translateY(0)scale(.97)}.btn.primary{background:var(--brand);color:#fff;box-shadow:var(--shadow-1), 0 8px 20px var(--brand-glow)}.btn.primary:hover{background:var(--brand-dark);box-shadow:var(--shadow-2), 0 10px 26px var(--brand-glow)}.btn.danger{background:var(--danger);color:#fff;box-shadow:var(--shadow-1), 0 8px 20px #e0234847}.btn.danger:hover{opacity:.9;box-shadow:var(--shadow-2), 0 10px 26px #e023484d}.btn.small{padding:6px 12px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.badge{border-radius:var(--radius-pill);letter-spacing:.02em;text-transform:uppercase;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.badge.draft{color:var(--text-muted);background:#0a0c1014}.badge.sent,.badge.open{background:var(--warning-light);color:var(--warning)}.badge.partially_paid{background:var(--info-light);color:var(--info)}.badge.paid,.badge.closed{background:var(--success-light);color:var(--success)}.badge.void{background:var(--danger-light);color:var(--danger)}.badge.on_account{background:var(--info-light);color:var(--info)}.badge.role-admin{color:#7f31e6;background:#a45bff29}.badge.role-accountant{background:var(--brand-light);color:var(--brand-dark)}.badge.role-viewer{color:var(--text-muted);background:#0a0c1014}.field{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}label{color:var(--text-muted);font-size:12.5px;font-weight:600}input,select,textarea{border-radius:var(--radius-sm);box-shadow:var(--glass-ring);color:var(--text);background:#ffffffb8;border:none;padding:8px 11px;font-family:inherit;font-size:13.5px}input:focus,select:focus,textarea:focus{box-shadow:var(--focus-ring);outline:none}.form-row{gap:12px;display:flex}.form-row>.field{flex:1}.alert{border-radius:var(--radius-sm);box-shadow:var(--glass-ring);margin-bottom:16px;padding:10px 14px;font-size:13px}.alert.error{background:var(--danger-light);color:var(--danger)}.alert.success{background:var(--success-light);color:var(--success)}.empty-state{text-align:center;color:var(--text-muted);padding:40px 20px}.login-page{background:radial-gradient(1200px 900px at 12% -10%, #2e8bff47, #2e8bff00 55%), radial-gradient(1000px 800px at 100% 100%, #10c4b233, #10c4b200 55%), linear-gradient(160deg, var(--brand-dark), #1c0a0d);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{-webkit-backdrop-filter:blur(28px)saturate(180%);box-shadow:var(--glass-ring), var(--glass-highlight), 0 20px 60px #00000059;border-radius:var(--radius-lg);background:#ffffffe0;width:380px;padding:36px}.login-logo{width:auto;height:56px;margin:0 0 16px;display:block}.login-card h1{margin:0 0 4px;font-size:20px}.login-card p.sub{color:var(--text-muted);margin:0 0 24px;font-size:13px}.tabs{box-shadow:inset 0 -1px 0 var(--border);flex-wrap:wrap;gap:4px;margin-bottom:20px;display:flex}.tabs button{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:13.5px;font-weight:600}.tabs button.active{color:var(--brand-dark);border-bottom-color:var(--brand)}.category-tabs{box-shadow:none;gap:8px;margin-bottom:10px}.category-tabs button{background:var(--glass-fill);-webkit-backdrop-filter:blur(var(--glass-blur-sm));box-shadow:var(--glass-ring), var(--shadow-1);border-radius:var(--radius-pill);border-bottom:none;margin-bottom:0;padding:6px 14px;transition:background .14s,box-shadow .14s,transform .1s,color .14s}.category-tabs button:hover{box-shadow:var(--glass-ring), var(--shadow-2);transform:translateY(var(--hover-lift))}.category-tabs button.active{background:var(--brand);color:#fff;box-shadow:var(--shadow-1), 0 6px 16px var(--brand-glow)}.category-tabs button.active:hover{box-shadow:var(--shadow-2), 0 8px 20px var(--brand-glow)}.text-muted{color:var(--text-muted)}.text-right{text-align:right}.line-items-table input,.line-items-table select{width:100%}.remove-line-btn{color:var(--danger);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:16px}.cost-breakdown{border-radius:var(--radius-sm);background:#0a0c1009;padding:10px 12px}.cost-breakdown-row{grid-template-columns:1fr 1fr 120px auto;gap:8px;margin-bottom:6px;display:grid}.cost-breakdown-row input,.cost-breakdown-row select{width:100%}.inv-grid-scroll{overflow-x:auto}.inv-grid-cols{grid-template-columns:minmax(200px,2.2fr) 120px 110px 52px 88px 96px 118px 24px;align-items:center;gap:8px;min-width:860px;display:grid}.inv-line-header{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding:4px 10px 10px;font-size:11.5px;font-weight:600}.inv-line-header span:not(:first-child){text-align:right}.inv-line-row{box-shadow:var(--glass-ring);border-radius:var(--radius-sm);background:#ffffff8c;margin-bottom:6px;padding:8px 10px}.inv-line-row.drawer-open{box-shadow:inset 0 0 0 1.5px var(--brand)}.inv-item-cell{gap:6px;min-width:0;display:flex}.inv-item-cell select{flex:0 0 84px;min-width:0;padding-left:6px;padding-right:4px;font-size:12px}.inv-item-cell input{flex:1;min-width:0}.inv-line-row input,.inv-line-row select{background:#ffffffbf}.inv-num-input{text-align:right}.inv-amount{text-align:right;padding-right:4px;font-weight:600}.costs-pill{text-align:right;width:100%;box-shadow:var(--glass-ring), var(--shadow-1);border-radius:var(--radius-pill);font-size:12px;font-weight:600;font-family:var(--font-mono);color:var(--text-muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:#0a0c100d;border:none;padding:7px 12px;transition:background .14s,box-shadow .14s,transform .1s,color .14s;display:block;overflow:hidden}.costs-pill:hover{box-shadow:var(--glass-ring), var(--shadow-2);transform:translateY(var(--hover-lift))}.costs-pill.has-costs{background:var(--info-light);color:var(--info)}.costs-pill.drawer-open{background:var(--brand);color:#fff;box-shadow:var(--shadow-1), 0 8px 20px var(--brand-glow)}.costs-pill.drawer-open:hover{box-shadow:var(--shadow-2), 0 10px 26px var(--brand-glow)}.inv-add-row{margin-top:4px}.spinner-wrap{color:var(--text-muted);justify-content:center;align-items:center;padding:60px;display:flex}.section-total-row td{box-shadow:inset 0 -2px 0 var(--border);font-weight:700}.modal-backdrop{-webkit-backdrop-filter:blur(3px);z-index:50;background:#0a0c1066;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{-webkit-backdrop-filter:blur(28px)saturate(180%);box-shadow:var(--glass-ring), var(--glass-highlight), var(--shadow-2);border-radius:var(--radius-lg);background:#ffffffe0;width:420px;max-width:100%;max-height:90vh;padding:24px;overflow-y:auto}.modal.modal-wide{width:800px}.modal h3{margin-top:0}.modal-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}@media (width<=520px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}@media (width<=768px){.mobile-topbar{display:flex}.app-shell{display:block}.sidebar{z-index:60;border-radius:0;margin:0;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%);box-shadow:2px 0 16px #00000026}.sidebar.open{transform:translate(0)}.sidebar-backdrop.open{z-index:55;background:#0a0c1073;display:block;position:fixed;inset:0}.main{padding:16px}.form-row{flex-direction:column;gap:0}.cost-breakdown-row{grid-template-columns:1fr}.modal-backdrop{padding:12px}.login-page{padding:16px}.login-card{width:100%;max-width:380px;padding:24px}}
