:root{--color-primary:#0071e3;--color-primary-hover:#0077ed;--color-primary-active:#006edb;--color-primary-soft:#0071e314;--color-primary-ring:#0071e33d;--color-success:#34c759;--color-success-bg:#34c7591f;--color-warning:#ff9f0a;--color-warning-bg:#ff9f0a1f;--color-danger:#ff3b30;--color-danger-bg:#ff3b301a;--color-bg:#f5f5f7;--color-bg-elevated:#fff;--color-surface:#fff;--color-surface-secondary:#fbfbfd;--color-border:#00000014;--color-border-strong:#0000001f;--color-divider:#0000000f;--color-text:#1d1d1f;--color-text-secondary:#6e6e73;--color-text-muted:#aeaeb2;--color-text-inverse:#fff;--sidebar-width:248px;--sidebar-width-collapsed:72px;--sidebar-bg:#fbfbfdd1;--sidebar-border:#0000000f;--sidebar-text:#1d1d1f;--sidebar-text-secondary:#6e6e73;--sidebar-hover:#0000000a;--sidebar-active:#0071e31a;--sidebar-active-text:#0071e3;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:22px;--radius-pill:980px;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 2px 8px #0000000a, 0 1px 2px #0000000f;--shadow-md:0 8px 24px #00000014, 0 2px 6px #0000000a;--shadow-lg:0 20px 48px #0000001f, 0 8px 16px #0000000f;--shadow-card:0 0 0 1px var(--color-border), var(--shadow-sm);--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Inter", "Segoe UI", sans-serif;--font-mono:"SF Mono", ui-monospace, "Cascadia Code", monospace;--ease-out:cubic-bezier(.25, .46, .45, .94);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--transition-fast:.15s var(--ease-out);--transition-base:.22s var(--ease-out);--header-height:52px;--content-max:1200px}*,:before,:after{box-sizing:border-box;margin:0}html{-webkit-text-size-adjust:100%;height:100%}body{min-height:100%;font-family:var(--font-sans);letter-spacing:-.022em;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:15px;font-weight:400;line-height:1.47059}#app{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;letter-spacing:inherit}::selection{background:var(--color-primary-soft);color:var(--color-primary)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.settings-modal-backdrop{z-index:1000;background:#0006;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.settings-modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:min(90vh,720px);box-shadow:var(--shadow-lg);border:1px solid var(--color-border);flex-direction:column;display:flex;overflow:hidden}.settings-modal.settings-modal-wide{max-width:720px}.settings-modal-header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem 1.5rem;display:flex}.settings-modal-header h2{letter-spacing:-.02em;font-size:1.125rem;font-weight:600}.settings-modal-sub{color:var(--color-text-muted);margin-top:.25rem;font-size:.8125rem}.settings-modal-close{background:var(--color-bg);cursor:pointer;width:32px;height:32px;color:var(--color-text-secondary);border:none;border-radius:50%;flex-shrink:0;font-size:1.25rem;line-height:1}.settings-modal-body{-webkit-overflow-scrolling:touch;flex:1;padding:1.25rem 1.5rem;overflow-y:auto}.settings-modal .form-field{margin-bottom:1rem}.settings-modal .form-field label{color:var(--color-text-secondary);margin-bottom:.375rem;font-size:.8125rem;font-weight:500;display:block}.settings-modal .form-field input,.settings-modal .form-field select{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);width:100%;color:var(--color-text);padding:.5625rem .75rem;font-size:.875rem}.settings-modal .checkbox-row{cursor:pointer;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.settings-modal-footer{border-top:1px solid var(--color-border);background:var(--color-surface-secondary);flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;display:flex}.settings-modal-error{color:#c41e1e;margin-top:.5rem;font-size:.8125rem}.settings-modal-meta{color:var(--color-text-secondary);margin-bottom:1rem;font-size:.875rem}.settings-modal-meta strong{color:var(--color-text);text-transform:capitalize}.settings-diff-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.settings-diff-grid h3{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.5rem;font-size:.75rem;font-weight:600}.settings-diff-grid pre{background:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border);white-space:pre-wrap;word-break:break-word;max-height:min(40vh,320px);margin:0;padding:.75rem;font-size:.6875rem;line-height:1.45;overflow:auto}@media (width<=700px){.settings-diff-grid{grid-template-columns:1fr}}.settings-form-section{margin-bottom:1.5rem}.settings-form-section:last-child{margin-bottom:0}.settings-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:1rem;font-size:.8125rem;font-weight:600}.perm-group{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:1.25rem;overflow:hidden}.perm-group-head{text-transform:uppercase;letter-spacing:.05em;background:var(--color-surface-secondary);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);padding:.5rem .875rem;font-size:.75rem;font-weight:600}.perm-list{margin:0;padding:0;list-style:none}.perm-list li{border-bottom:1px solid var(--color-divider)}.perm-list li:last-child{border-bottom:none}.perm-row{cursor:pointer;transition:background var(--transition-fast);align-items:flex-start;gap:.75rem;padding:.625rem .875rem;display:flex}.perm-row:hover{background:#0071e30a}.perm-row input{width:1rem;height:1rem;accent-color:var(--color-primary);flex-shrink:0;margin-top:.2rem}.perm-label{flex-direction:column;gap:.15rem;min-width:0;display:flex}.perm-name{color:var(--color-text);font-size:.875rem;font-weight:500}.perm-slug{color:var(--color-text-muted);word-break:break-all;font-size:.6875rem}.settings-perms-empty,.perm-group-empty{color:var(--color-text-muted);margin:0;padding:.625rem .875rem;font-size:.8125rem}@media (width<=600px){.settings-modal-backdrop{align-items:stretch;padding:0}.settings-modal{border-radius:0;max-width:none;height:100%;max-height:none}}.multi-select{width:100%;position:relative}.multi-select-trigger{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);width:100%;color:var(--color-text);cursor:pointer;text-align:left;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);justify-content:space-between;align-items:center;gap:.75rem;padding:.5625rem .75rem;font-size:.875rem;display:flex}.multi-select-trigger:hover{border-color:var(--color-text-muted)}.multi-select.is-open .multi-select-trigger{border-color:var(--color-primary);box-shadow:0 0 0 3px #0071e326}.multi-select-value{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.multi-select-value.is-placeholder{color:var(--color-text-muted)}.multi-select-chevron{border-right:2px solid var(--color-text-secondary);border-bottom:2px solid var(--color-text-secondary);width:.5rem;height:.5rem;transition:transform var(--transition-fast);flex-shrink:0;transform:rotate(45deg)translateY(-2px)}.multi-select.is-open .multi-select-chevron{transform:rotate(-135deg)translateY(1px)}.multi-select-panel{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:.35rem 0;overflow-y:auto}.multi-select-empty{color:var(--color-text-muted);margin:0;padding:.75rem 1rem;font-size:.8125rem}.multi-select-option{cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:.625rem;padding:.5rem .875rem;font-size:.875rem;display:flex}.multi-select-option:hover:not(.is-disabled){background:#0071e30f}.multi-select-option.is-disabled{opacity:.55;cursor:not-allowed}.multi-select-option input{width:1rem;height:1rem;accent-color:var(--color-primary);cursor:pointer;flex-shrink:0}.multi-select-option.is-disabled input{cursor:not-allowed}.multi-select-option-text{min-width:0;line-height:1.35}.page{max-width:var(--content-max);animation:pageIn .35s var(--ease-out) both;margin:0 auto}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-header{justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2rem;padding-bottom:0;display:flex}.page-header h1{letter-spacing:-.03em;color:var(--color-text);font-size:2rem;font-weight:700;line-height:1.1}.page-header p{color:var(--color-text-secondary);margin-top:.35rem;font-size:.9375rem;font-weight:400}.card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.card-header{border-bottom:1px solid var(--color-divider);letter-spacing:-.01em;color:var(--color-text);padding:1.125rem 1.5rem;font-size:.9375rem;font-weight:600}.card-body{padding:1.5rem}.card-body.flush{padding:0}.btn{letter-spacing:-.01em;border-radius:var(--radius-pill);cursor:pointer;transition:background var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.5625rem 1.125rem;font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);box-shadow:0 1px 3px #0071e34d}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);box-shadow:0 0 0 1px var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-ghost{color:var(--color-primary);background:0 0;padding:.5rem .875rem}.btn-ghost:hover:not(:disabled){background:var(--color-primary-soft)}.form-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.25rem;margin-bottom:1.5rem;display:grid}.form-field{flex-direction:column;gap:.5rem;display:flex}.form-field label{color:var(--color-text-secondary);letter-spacing:-.01em;font-size:.8125rem;font-weight:500}.form-field input,.form-field select,.form-field textarea,.coa-select,.line-input,.balance-input{border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);box-shadow:0 0 0 1px var(--color-border-strong);transition:box-shadow var(--transition-fast), background var(--transition-fast);border:none;padding:.625rem .875rem}.form-field input:hover,.form-field select:hover,.form-field textarea:hover,.coa-select:hover,.line-input:hover,.balance-input:hover{background:var(--color-surface)}.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.coa-select:focus,.line-input:focus,.balance-input:focus{background:var(--color-surface);box-shadow:0 0 0 1px var(--color-primary), 0 0 0 4px var(--color-primary-ring);outline:none}.filter-bar{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;padding:1.25rem 1.5rem;display:flex}.table-wrap{border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-card);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.875rem}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:var(--color-surface-secondary);border-bottom:1px solid var(--color-divider);white-space:nowrap;padding:.75rem 1.25rem;font-size:.6875rem;font-weight:600}.data-table td{border-bottom:1px solid var(--color-divider);vertical-align:middle;color:var(--color-text);padding:.875rem 1.25rem}.data-table tbody tr{transition:background var(--transition-fast)}.data-table tbody tr:hover{background:#0071e308}.data-table tbody tr:last-child td{border-bottom:none}.data-table tfoot td{background:var(--color-surface-secondary);border-top:1px solid var(--color-border-strong);letter-spacing:-.01em;padding:1rem 1.25rem;font-size:.9375rem;font-weight:600}.data-table .num{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-family:var(--font-sans);letter-spacing:-.02em}.badge{text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-pill);align-items:center;padding:.2rem .625rem;font-size:.6875rem;font-weight:600;display:inline-flex}.badge-posted{background:var(--color-success-bg);color:#248a3d}.badge-draft{background:var(--color-warning-bg);color:#b25000}.badge-reversed{background:var(--color-danger-bg);color:#d70015}.code-tag{font-family:var(--font-mono);background:var(--color-bg);border-radius:var(--radius-xs);color:var(--color-text-secondary);box-shadow:0 0 0 1px var(--color-border);letter-spacing:0;padding:.2rem .5rem;font-size:.75rem;font-weight:500}.kpi-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:1.75rem;display:grid}.kpi-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:transform var(--transition-fast), box-shadow var(--transition-fast);padding:1.375rem 1.5rem}.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.kpi-card .kpi-icon{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:1rem;display:flex}.kpi-card .kpi-icon svg{width:18px;height:18px}.kpi-card .kpi-label{color:var(--color-text-secondary);letter-spacing:-.01em;font-size:.8125rem;font-weight:500}.kpi-card .kpi-value{letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--color-text);margin-top:.25rem;font-size:1.75rem;font-weight:700;line-height:1.15;display:block}.kpi-card.accent{background:linear-gradient(135deg,#0071e3 0%,#40a9ff 100%);box-shadow:0 4px 20px #0071e359}.kpi-card.accent .kpi-label{color:#ffffffbf}.kpi-card.accent .kpi-value{color:#fff}.kpi-card.accent .kpi-icon{color:#fff;background:#fff3}.kpi-card .kpi-icon.revenue{color:#34c759;background:#34c7591f}.kpi-card .kpi-icon.expense{color:#ff3b30;background:#ff3b301a}.kpi-card .kpi-icon.journal{background:var(--color-primary-soft);color:var(--color-primary)}.kpi-card .kpi-icon.draft{color:#ff9f0a;background:#ff9f0a1f}.alert{border-radius:var(--radius-sm);letter-spacing:-.01em;margin-top:1rem;padding:.875rem 1.125rem;font-size:.875rem;font-weight:500}.alert-success{background:var(--color-success-bg);color:#248a3d}.alert-error{background:var(--color-danger-bg);color:#d70015}.alert-info{background:var(--color-primary-soft);color:var(--color-primary)}.grid-2{grid-template-columns:repeat(2,1fr);gap:1.25rem;display:grid}.loading-state{text-align:center;color:var(--color-text-secondary);padding:4rem 2rem;font-size:.9375rem}.loading-state:before{content:"";border:2.5px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:50%;width:28px;height:28px;margin:0 auto 1rem;animation:.7s linear infinite spin;display:block}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:4rem 2rem;font-size:.9375rem}.section-title{letter-spacing:-.02em;color:var(--color-text);margin-bottom:1rem;font-size:1.0625rem;font-weight:600}.form-actions{border-top:1px solid var(--color-divider);justify-content:flex-end;gap:.75rem;margin-top:1.75rem;padding-top:1.5rem;display:flex}@media (width<=900px){.grid-2{grid-template-columns:1fr}.page-header h1{font-size:1.625rem}}@media (width<=768px){.page-header{flex-direction:column;align-items:flex-start;gap:1rem}}
