:root{--bg:#f6f7f9;--surface:#fff;--surface-alt:#f0f2f5;--border:#d5dae1;--border-strong:#b3bbc7;--text:#1c2430;--text-muted:#5b6676;--accent:#1f5fa8;--accent-hover:#184c88;--accent-soft:#e6eef8;--danger:#b3261e;--danger-soft:#fbeceb;--warning:#8a5a00;--warning-soft:#fdf3dc;--success:#1e6b3a;--success-soft:#e6f4ea;--nav-bg:#1f2a3a;--nav-text:#d6dde8;--nav-heading:#8d9bb0;--focus:#1f5fa8;--radius:4px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--font:"Segoe UI", system-ui, -apple-system, Arial, sans-serif;--font-size:13px;--row-height:30px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--font-size);margin:0;line-height:1.4}h1,h2,h3{margin:0;font-weight:600}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px}p{margin:0 0 var(--space-2)}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{flex-direction:column;height:100%;display:flex}.shell-body{flex:1;min-height:0;display:flex}.shell-main{min-width:0;padding:var(--space-4) var(--space-5);flex:1;position:relative;overflow:auto}.bare{min-height:100%;padding:var(--space-5);justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.titlebar{align-items:center;gap:var(--space-4);height:44px;padding:0 var(--space-4);background:var(--surface);border-bottom:1px solid var(--border);flex:none;display:flex}.titlebar-brand{color:var(--accent);white-space:nowrap;font-weight:700}.titlebar-start{align-items:center;gap:var(--space-2);min-width:0;display:flex}.titlebar-organization{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.titlebar-center{flex:1;justify-content:center;min-width:0;display:flex}.titlebar-end{align-items:center;gap:var(--space-2);white-space:nowrap;min-width:0;display:flex}.titlebar-user{min-width:0;max-width:380px;color:var(--text-muted);display:flex}.titlebar-email{text-overflow:ellipsis;min-width:0;overflow:hidden}.titlebar-role{white-space:pre;color:var(--text-muted);flex:none}.sidenav{background:var(--nav-bg);width:190px;color:var(--nav-text);padding:var(--space-2) 0 var(--space-4);flex:none;overflow-y:auto}.sidenav ul{margin:0;padding:0;list-style:none}.sidenav-heading{padding:var(--space-3) var(--space-4) var(--space-1);letter-spacing:.06em;text-transform:uppercase;color:var(--nav-heading);font-size:11px;font-weight:600}.sidenav-link{padding:5px var(--space-4) 5px var(--space-5);color:var(--nav-text);border-left:3px solid #0000;text-decoration:none;display:block}.sidenav-link:hover{background:#ffffff12}.sidenav-link.is-active{color:#fff;background:#ffffff1f;border-left-color:#6fa8e6}.sidenav-link:focus-visible{outline-offset:-2px;outline-color:#fff}.offline-banner{padding:6px var(--space-4);text-align:center;background:var(--warning-soft);color:var(--warning);border-bottom:1px solid #e8cf8e;flex:none;align-self:stretch;font-weight:600}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4);display:flex}.page-subtitle{gap:var(--space-3);color:var(--text-muted);margin-top:2px;display:flex}.page-organization{font-weight:600}.page-actions{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;display:flex}.page-body{gap:var(--space-4);flex-direction:column;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4)}.toolbar{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.empty-state{text-align:center;padding:var(--space-5);color:var(--text-muted);max-width:520px;margin:0 auto}.empty-state h2{color:var(--text);margin-bottom:var(--space-2)}.btn{justify-content:center;align-items:center;gap:var(--space-1);height:var(--row-height);padding:0 var(--space-3);font:inherit;white-space:nowrap;cursor:pointer;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-weight:600;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-alt)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#8f1e18}.btn-quiet{color:var(--accent);background:0 0;border-color:#0000}.btn-small{height:24px;padding:0 var(--space-2);font-size:12px}.form{gap:var(--space-3);flex-direction:column;display:flex}.form-row{gap:var(--space-3);flex-wrap:wrap;align-items:flex-start;display:flex}.form-row>.field{flex:180px}.form-row>.field-date,.form-row>.field-money{flex:0 0 140px}.form-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border);display:flex}.form-actions-extra{gap:var(--space-2);margin-right:auto;display:flex}.form-actions-reason{color:var(--text-muted);text-align:right;max-width:420px;font-size:12px}.field{flex-direction:column;gap:3px;min-width:0;display:flex}.field-label{color:var(--text-muted);font-size:12px;font-weight:600}.field-required{color:var(--danger)}.field-hint{color:var(--text-muted);font-size:12px}.field-error{color:var(--danger);font-size:12px}.field-checkbox{align-items:center;gap:var(--space-2);flex-flow:wrap}.field-checkbox .field-hint{flex-basis:100%}.form-row:has(>.field:not(.field-checkbox))>.field-checkbox{min-height:var(--row-height);margin-top:20px}.input{height:var(--row-height);width:100%;padding:0 var(--space-2);font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius)}.input:disabled{background:var(--surface-alt);color:var(--text-muted)}.input::placeholder{color:#6b7686}.field-invalid .input{border-color:var(--danger)}.textarea{height:auto;padding:var(--space-1) var(--space-2);resize:vertical}.input-money{text-align:right;font-variant-numeric:tabular-nums}.input-date{font-variant-numeric:tabular-nums}.picker{position:relative}.picker-list{z-index:30;min-width:100%;max-width:420px;max-height:260px;padding:var(--space-1) 0;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);margin:0;list-style:none;position:absolute;top:calc(100% + 2px);left:0;overflow-y:auto;box-shadow:0 6px 18px #141e2d29}.picker-option{justify-content:space-between;gap:var(--space-4);padding:5px var(--space-3);cursor:pointer;white-space:nowrap;display:flex}.picker-option.is-active{background:var(--accent-soft)}.picker-option.is-disabled{color:var(--text-muted);cursor:not-allowed}.picker-detail{color:var(--text-muted)}.picker-create{color:var(--accent);border-top:1px solid var(--border);font-weight:600}.picker-empty{padding:5px var(--space-3);color:var(--text-muted)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{padding:5px var(--space-3);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.table th{background:var(--surface-alt);color:var(--text-muted);z-index:1;font-size:12px;font-weight:600;position:sticky;top:0}.table tbody tr:last-child td{border-bottom:0}.table tbody tr[data-row]:hover{background:#f7f9fc}.table tbody tr[data-row]:focus-visible{outline-offset:-2px;background:var(--accent-soft)}.table tr.is-openable{cursor:pointer}.table tr.is-void td{color:var(--text-muted);text-decoration:line-through}.table tfoot td{border-top:2px solid var(--border-strong);border-bottom:0;font-weight:600}.cell-number{font-variant-numeric:tabular-nums;text-align:right!important}.cell-date{font-variant-numeric:tabular-nums}.table td.cell-wrap,.table th.cell-wrap{white-space:normal;overflow-wrap:break-word}.table th{vertical-align:bottom}.table-empty{color:var(--text-muted);text-align:center!important;padding:var(--space-5)!important;white-space:normal!important}.table-sort{all:unset;cursor:pointer;font:inherit;color:inherit}.table-sort:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.banner{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);border:1px solid;display:flex}.banner-info{background:var(--accent-soft);color:#173f6e;border-color:#bcd2ec}.banner-warning{background:var(--warning-soft);color:var(--warning);border-color:#e8cf8e}.banner-error{background:var(--danger-soft);color:var(--danger);border-color:#efc1bd}.banner-success{background:var(--success-soft);color:var(--success);border-color:#b9dfc5}.toasts{left:var(--space-4);bottom:var(--space-4);pointer-events:none;gap:var(--space-2);z-index:60;flex-direction:column;max-width:380px;display:flex;position:fixed}.toast{pointer-events:auto;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--text);color:#fff;display:flex;box-shadow:0 6px 18px #141e2d40}.toast-error{background:var(--danger)}.toast-success{background:var(--success)}.toast-close{all:unset;cursor:pointer;padding:0 var(--space-1);font-size:16px;line-height:1}.toast-close:focus-visible{outline:2px solid #fff}.spinner{align-items:center;gap:var(--space-2);color:var(--text-muted);padding:var(--space-4);display:flex}.spinner-dot{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}.loading-placeholder{min-height:48px}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner-dot{animation:none}}.dialog-backdrop{z-index:50;padding:var(--space-4);background:#141e2d73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:6px;flex-direction:column;width:520px;max-height:100%;display:flex;box-shadow:0 16px 48px #141e2d4d}.dialog-narrow{width:400px}.dialog-wide{width:860px}.dialog-title{padding:var(--space-4) var(--space-4) var(--space-2)}.dialog-body{padding:0 var(--space-4) var(--space-4);overflow:auto}.dialog-footer{justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);display:flex}.dialog-message{color:var(--text)}.term{border-bottom:1px dotted var(--text-muted);cursor:help;position:relative}.term-tip{z-index:40;width:260px;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--text);color:#fff;white-space:normal;text-transform:none;letter-spacing:normal;font-size:12px;font-weight:400;line-height:1.4;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 6px 18px #141e2d40}.term-tip[hidden]{display:none}.tag{background:var(--surface-alt);color:var(--text-muted);border:1px solid var(--border);border-radius:10px;padding:0 6px;font-size:11px;font-weight:600;display:inline-block}.tag-warning{background:var(--warning-soft);color:var(--warning);border-color:#e8cf8e}.tag-danger{background:var(--danger-soft);color:var(--danger);border-color:#efc1bd}.tag-success{background:var(--success-soft);color:var(--success);border-color:#b9dfc5}.muted{color:var(--text-muted)}.money{font-variant-numeric:tabular-nums;text-align:right}.money-negative{color:var(--danger)}.stack{gap:var(--space-3);flex-direction:column;display:flex}.row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.grow{flex:1}
