*,:before,:after{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;color:#111827;background:#f5f6fa;margin:0;font-family:Pretendard,Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a2e;-webkit-font-smoothing:antialiased;background:#f5f6fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif;font-size:13px}.app-wrapper{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-topbar{-webkit-user-select:none;user-select:none;z-index:200;background:linear-gradient(#f5f6fa 0%,#e4e8f2 100%);border-bottom:2px solid #b8bdd0;flex-shrink:0;align-items:stretch;height:56px;display:flex}.app-topbar-menus{background:#2b3245;flex-shrink:0;align-items:center;gap:0;width:240px;min-width:240px;padding:0 4px;display:flex}.topbar-brand{color:#63b3ed;letter-spacing:1.5px;white-space:nowrap;padding:0 14px 0 10px;font-size:13px;font-weight:700}.menu-tab{color:#ffffffa6;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;height:100%;padding:0 12px;font-size:12px;transition:color .15s,border-color .15s}.menu-tab:hover{color:#ffffffe6}.menu-tab.active{color:#63b3ed;border-bottom-color:#63b3ed;font-weight:600}.topbar-divider{background:#b8bdd0;flex-shrink:0;width:2px}.app-topbar-btns{flex:1;align-items:center;gap:1px;padding:4px 6px;display:flex;overflow-x:auto}.app-topbar-btns::-webkit-scrollbar{height:0}.tbtn{cursor:pointer;color:#2b3245;white-space:nowrap;background:linear-gradient(#fff 0%,#dde2ef 100%);border:1px solid #b0b6cc;border-radius:3px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:2px;min-width:52px;height:46px;padding:3px 6px;font-size:10px;transition:background .1s,border-color .1s,box-shadow .1s;display:flex;box-shadow:0 1px 2px #0000001f,inset 0 1px #ffffffb3}.tbtn svg{flex-shrink:0}.tbtn:hover:not(:disabled){color:#1a2a5a;background:linear-gradient(#e8f0ff 0%,#c8d4f0 100%);border-color:#57c;box-shadow:0 1px 3px #0000002e,inset 0 1px #fffc}.tbtn:active:not(:disabled){background:linear-gradient(#c8d4f0 0%,#d8e0f8 100%);box-shadow:inset 0 1px 3px #0003}.tbtn-primary{color:#fff;background:linear-gradient(#58f 0%,#24c 100%);border-color:#1a3aaa;font-weight:600;box-shadow:0 1px 2px #0003,inset 0 1px #ffffff40}.tbtn-primary:hover:not(:disabled){color:#fff;background:linear-gradient(#69f 0%,#35d 100%)}.tbtn-danger{color:#c20}.tbtn-danger:hover:not(:disabled){color:#a10;border-color:#c20}.tbtn-disabled{opacity:.38;cursor:default}.tbsep{background:#b0b6cc;flex-shrink:0;width:1px;height:36px;margin:0 4px}.app{flex:1;min-height:0;display:flex;overflow:hidden}.sidebar{background:#16213e;flex-direction:column;flex-shrink:0;width:240px;min-width:240px;display:flex;overflow:hidden}.sidebar-logo{border-bottom:1px solid #ffffff12;padding:18px 20px 14px;text-decoration:none;transition:background .15s;display:block}.sidebar-logo:hover{cursor:pointer;background:#ffffff0d}.sidebar-logo-text{color:#fff;letter-spacing:.5px;font-size:16px;font-weight:700}.sidebar-logo-sub{color:#ffffff59;letter-spacing:.3px;margin-top:2px;font-size:10px}.sidebar-scroll{flex:1;padding-bottom:16px;overflow:hidden auto}.sidebar-scroll::-webkit-scrollbar{width:4px}.sidebar-scroll::-webkit-scrollbar-track{background:0 0}.sidebar-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.nav-section-label{color:#ffffff4d;text-transform:uppercase;letter-spacing:.8px;padding:16px 16px 6px;font-size:10px;font-weight:600}.sb-section-label{color:#ffffff47;text-transform:uppercase;letter-spacing:.8px;-webkit-user-select:none;user-select:none;padding:10px 10px 5px 16px;font-size:10px;font-weight:600}.sb-search-wrap{flex:1;min-width:0;position:relative}.sb-search-input{color:#ffffffbf;text-transform:none;letter-spacing:0;box-sizing:border-box;background:#ffffff12;border:1px solid #ffffff1f;border-radius:4px;outline:none;width:100%;padding:2px 18px 2px 6px;font-size:10px}.sb-search-input::placeholder{color:#ffffff40}.sb-search-input:focus{background:#ffffff1a;border-color:#63b3ed80}.sb-search-clear{color:#ffffff59;cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1;position:absolute;top:50%;right:3px;transform:translateY(-50%)}.sb-search-clear:hover{color:#ffffffb3}.sb-nav-item{text-align:left;color:#ffffff9e;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;align-items:center;gap:8px;width:100%;padding:9px 16px 9px 14px;font-size:13px;transition:background .12s,color .12s,border-color .12s;display:flex}.sb-nav-item:hover{color:#ffffffe0;background:#ffffff0f}.sb-nav-item.active{color:#63b3ed;background:#63b3ed1f;border-left-color:#63b3ed;font-weight:500}.sb-nav-item svg{opacity:.7;flex-shrink:0}.sb-nav-item.active svg{opacity:1}.sb-empty{color:#ffffff40;padding:8px 16px;font-size:11px}.nav-item{color:#ffffff9e;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;background:0 0;border:none;border-radius:0;align-items:center;gap:9px;width:100%;padding:8px 16px;font-size:13px;font-weight:400;transition:background .12s,color .12s;display:flex}.nav-item:hover{color:#ffffffe0;background:#ffffff12}.nav-item.active{color:#63b3ed;background:#63b3ed2e;font-weight:500}.nav-item svg,.nav-item .nav-icon{opacity:.7;flex-shrink:0}.nav-item.active svg,.nav-item.active .nav-icon{opacity:1}.year-header{color:#fff6;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:6px 16px 6px 28px;font-size:11px;font-weight:600;transition:color .12s;display:flex}.year-header:hover{color:#ffffffa6}.year-toggle{font-size:9px}.year-count{margin-left:auto;font-size:10px}.type-header{color:#ffffff80;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 16px 4px 28px;font-size:11px;transition:color .12s;display:flex}.type-header:hover{color:#ffffffbf}.ledger-item{cursor:pointer;border-radius:0;padding:5px 16px 5px 36px;transition:background .1s}.ledger-item-sub{padding-left:44px}.ledger-item:hover{background:#ffffff0d}.ledger-item.selected{background:#63b3ed26}.ledger-name{color:#ffffffad;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:5px;font-size:12px;display:flex;overflow:hidden}.ledger-item.selected .ledger-name{color:#63b3ed}.ledger-balance{color:#ffffff4d;text-align:right;margin-top:1px;font-size:10px}.ledger-balance.negative{color:#fc8181}.sidebar-error{color:#fc8181;padding:12px 16px;font-size:11px}.ledger-item:hover .ledger-delete-btn{color:#ffffff8c!important}.ledger-delete-btn:hover{color:#fc8181!important}.ac-item:hover{background:#eff4ff}.app-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.topbar{background:#fff;border-bottom:1px solid #e8eaf0;flex-shrink:0;align-items:center;gap:10px;height:52px;padding:0 28px;display:flex}.topbar-title{color:#1a1a2e;font-size:14px;font-weight:600}.topbar-sep{color:#c5c8d6;font-size:12px}.content-scroll{flex:1;min-width:0;padding:28px;overflow:hidden auto}.content-scroll::-webkit-scrollbar{width:6px}.content-scroll::-webkit-scrollbar-track{background:0 0}.content-scroll::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.page-title{color:#1a1a2e;margin-bottom:20px;font-size:18px;font-weight:700}.cards{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.card{background:#fff;border:1px solid #f0f1f5;border-radius:12px;padding:18px 20px;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.card-label{color:#8b8fa8;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;font-size:11px;font-weight:500}.card-value{color:#1a1a2e;font-size:22px;font-weight:700}.card-value.blue{color:#3b82f6}.card-value.green{color:#10b981}.card-value.red{color:#ef4444}.section{background:#fff;border:1px solid #f0f1f5;border-radius:12px;margin-bottom:18px;padding:20px 22px;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.section-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.section h3{color:#374151;font-size:13px;font-weight:600}.chart{align-items:flex-end;gap:12px;min-height:140px;padding:4px;display:flex}.chart-col{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.bars{align-items:flex-end;gap:3px;height:120px;display:flex}.bar{border-radius:3px 3px 0 0;width:14px;min-height:2px}.bar-in{background:#3b82f6}.bar-out{background:#e5e7eb}.chart-label{color:#9ca3af;font-size:10px}.chart-legend{color:#6b7280;align-items:center;gap:14px;margin-top:10px;font-size:12px;display:flex}.legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.legend-dot.blue{background:#3b82f6}.legend-dot.gray{background:#e5e7eb}.summary-bar{background:#f8f9fc;border:1px solid #e8eaf0;border-radius:10px;gap:32px;margin-bottom:16px;padding:12px 18px;font-size:13px;display:flex}.summary-bar .label{color:#8b8fa8;margin-right:8px;font-size:12px}.table-wrap{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:500px;font-size:13px}.data-table th{color:#6b7280;text-align:left;white-space:nowrap;background:#f8f9fc;border-bottom:1px solid #e8eaf0;padding:10px 14px;font-size:12px;font-weight:500}.data-table td{color:#374151;vertical-align:middle;border-bottom:1px solid #f0f1f5;padding:10px 14px}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:#fafbff}.data-table tbody tr.tr-selected td{background:#eff6ff}.data-table tbody tr.tr-selected:hover td{background:#dbeafe}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.data-table .date{color:#6b7280;white-space:nowrap;font-size:12px}.data-table .muted{color:#9ca3af;font-size:12px}.data-table td:last-child,.data-table th:last-child{background:inherit;position:sticky;right:0}.data-table th:last-child{background:#f8f9fc}.data-table tbody tr:hover td:last-child{background:#fafbff}.entries-table-wrap{background:#fff;border:1px solid #f0f1f5;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.badge{vertical-align:middle;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-sale{color:#1d4ed8;background:#dbeafe}.badge-buy{color:#166534;background:#dcfce7}.badge-common{color:#374151;background:#f3f4f6}.blue{color:#2563eb}.red{color:#ef4444}.green{color:#10b981}.bold{font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.toolbar-right{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.search-form{gap:8px;display:flex}.btn{color:#fff;cursor:pointer;white-space:nowrap;background:#3b82f6;border:none;border-radius:8px;align-items:center;gap:5px;padding:7px 16px;font-size:13px;font-weight:500;text-decoration:none;transition:background .12s;display:inline-flex}.btn:hover{background:#2563eb}.btn-ghost{color:#374151;background:#fff;border:1px solid #e2e4ec}.btn-ghost:hover{background:#f5f6fa;border-color:#c5c8d6}.btn-sm{color:#374151;cursor:pointer;white-space:nowrap;background:#f0f1f5;border:none;border-radius:6px;margin-right:4px;padding:4px 10px;font-size:12px;font-weight:400;transition:background .1s}.btn-sm:hover{background:#e2e4ec}.btn-sm-danger{color:#ef4444}.btn-sm-danger:hover{background:#fee2e2}.input{color:#1a1a2e;background:#fff;border:1px solid #e2e4ec;border-radius:8px;outline:none;padding:7px 11px;font-size:13px;transition:border-color .12s,box-shadow .12s}.input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.num-input{text-align:right}.modal-overlay{z-index:999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f142873;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:440px;max-width:95vw;box-shadow:0 20px 60px #0000002e,0 4px 12px #00000014}.modal-header{border-bottom:1px solid #f0f1f5;align-items:center;padding:18px 22px 16px;display:flex}.modal-title{color:#1a1a2e;flex:1;font-size:15px;font-weight:600}.modal-close{cursor:pointer;color:#9ca3af;background:0 0;border:none;padding:2px;font-size:18px;line-height:1}.modal-close:hover{color:#374151}.modal-body{padding:20px 22px}.modal-footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.form-grid{grid-template-columns:96px 1fr;align-items:center;gap:11px 14px;display:grid}.form-grid label{color:#6b7280;text-align:right;font-size:12px;font-weight:500}.flash{border:1px solid #0000;border-radius:9px;margin-bottom:14px;padding:10px 16px;font-size:13px}.flash-ok{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.flash-err{color:#991b1b;background:#fef2f2;border-color:#fecaca}.upload-result{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:9px;margin-bottom:14px;padding:12px 16px;font-size:13px}.upload-errors{color:#991b1b;margin:6px 0 0 16px}.modal-wide{width:720px;max-width:96vw}.entry-header-grid{grid-template-columns:80px 1fr;align-items:center;gap:8px 12px;margin-bottom:10px;display:grid}.entry-header-grid label{color:#6b7280;text-align:right;font-size:12px;font-weight:500}.vat-options{border-top:1px solid #f0f1f5;border-bottom:1px solid #f0f1f5;gap:20px;margin-bottom:10px;padding:8px 0;display:flex}.vat-chk{color:#374151;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:13px;display:flex}.item-input-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.item-lines-wrap{border:1px solid #e8eaf0;border-radius:8px;max-height:220px;margin-bottom:10px;overflow:hidden auto}.item-lines-table{border-collapse:collapse;width:100%;font-size:12px}.item-lines-table th{color:#6b7280;text-align:left;background:#f8f9fc;border-bottom:1px solid #e8eaf0;padding:6px 10px;font-weight:500}.item-lines-table td{border-bottom:1px solid #f0f1f5;padding:4px 8px}.item-lines-table tr:last-child td{border-bottom:none}.item-lines-table .num{text-align:right}.entry-total-bar{background:#f0f4ff;border:1px solid #dbe4ff;border-radius:8px;gap:24px;margin-bottom:14px;padding:8px 12px;font-size:13px;display:flex}.entry-total-bar .label{color:#6b7280;margin-right:6px;font-size:12px}.report-filter-bar{background:#fff;border:1px solid #f0f1f5;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:12px 16px;display:flex}.report-filter-bar label{color:#6b7280;white-space:nowrap;font-size:12px}.report-quick-btns{gap:6px;margin-left:8px;display:flex}.report-quick-btn{cursor:pointer;color:#374151;background:#fff;border:1px solid #e2e4ec;border-radius:6px;padding:3px 10px;font-size:11px}.report-quick-btn:hover{background:#f5f6fa}.report-summary{background:#f8f9fc;border:1px solid #e8eaf0;border-radius:8px;gap:24px;margin:12px 0;padding:10px 16px;font-size:13px;display:flex}.report-summary .label{color:#8b8fa8;margin-right:8px;font-size:12px}.loading,.error,.empty-state,.no-data{text-align:center;color:#9ca3af;padding:48px 20px;font-size:14px}.error{color:#ef4444}
