:root{--bg-primary:#0a0e17;--bg-secondary:#111827;--bg-card:#1a2236;--bg-card-hover:#1f2a42;--bg-input:#151d2e;--bg-overlay:#0009;--accent:#6366f1;--accent-hover:#818cf8;--accent-glow:#6366f140;--accent-light:#a5b4fc;--danger:#ef4444;--danger-hover:#f87171;--danger-glow:#ef444433;--success:#22c55e;--success-glow:#22c55e33;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--border:#1e293b;--border-hover:#334155;--border-active:#6366f1;--glass-bg:#1a2236cc;--glass-border:#ffffff0f;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 12px #00000080;--shadow-lg:0 8px 32px #0009;--shadow-glow:0 0 20px var(--accent-glow);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--transition:all .2s cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg-primary);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5;overflow:hidden}::selection{background:var(--accent);color:#fff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:var(--transition);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{background:var(--bg-card-hover);border-color:var(--border-hover);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.4;pointer-events:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:var(--shadow-glow)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--bg-card);border-color:var(--border)}.btn-danger{color:var(--danger);background:0 0;border-color:#0000}.btn-danger:hover{background:var(--danger-glow);border-color:var(--danger)}.btn-active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:var(--shadow-glow)}.btn-icon{width:36px;height:36px;padding:0;font-size:18px;font-weight:700}.btn-sm{padding:5px 10px;font-size:12px}.btn-file-upload{cursor:pointer}.login-page{background:radial-gradient(ellipse at 20% 50%,#6366f114 0%,transparent 60%),radial-gradient(ellipse at 80% 20%,#8b5cf60f 0%,transparent 60%),var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:40px;animation:.6s ease-out fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:32px}.login-logo{margin-bottom:12px;font-size:48px;animation:2s ease-in-out infinite bounce}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.login-header h1{letter-spacing:-.5px;background:linear-gradient(135deg,var(--text-primary),var(--accent-light));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:28px;font-weight:800}.login-header p{color:var(--text-secondary);margin-top:6px;font-size:14px}.login-form{flex-direction:column;gap:20px;display:flex}.login-error{background:var(--danger-glow);border:1px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);padding:10px 14px;font-size:13px;animation:.4s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.form-group input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);transition:var(--transition);outline:none;padding:12px 14px;font-family:inherit;font-size:14px}.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-group input::placeholder{color:var(--text-muted)}.btn-login{background:linear-gradient(135deg,var(--accent),#8b5cf6);border-radius:var(--radius-sm);color:#fff;cursor:pointer;transition:var(--transition);border:none;padding:14px;font-family:inherit;font-size:15px;font-weight:700}.btn-login:hover{transform:translateY(-2px);box-shadow:0 4px 20px #6366f166}.btn-login:active{transform:translateY(0)}.btn-login:disabled{opacity:.7;cursor:not-allowed;transform:none}.dashboard{flex-direction:column;height:100vh;display:flex;overflow:hidden}.dashboard-header{background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 20px;display:flex}.header-left{align-items:center;gap:10px;display:flex}.logo{font-size:24px}.dashboard-header h1{letter-spacing:-.3px;font-size:18px;font-weight:700}.btn-logout{color:var(--text-secondary);font-size:12px}.dashboard-main{flex:1;display:flex;overflow:hidden}.panel{flex-direction:column;display:flex;overflow:hidden}.panel-left{border-right:1px solid var(--border);flex:3}.panel-right{flex:2;min-width:380px;max-width:520px;overflow-y:auto}.pdf-viewer{flex-direction:column;height:100%;display:flex}.pdf-toolbar{background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:10px 14px;display:flex}.pdf-filename{text-overflow:ellipsis;white-space:nowrap;max-width:200px;color:var(--text-secondary);background:var(--bg-card);border-radius:var(--radius-sm);padding:4px 8px;font-size:12px;display:inline-block;overflow:hidden}.toolbar-separator{background:var(--border);width:1px;height:24px;margin:0 4px}.zoom-label{color:var(--text-secondary);text-align:center;min-width:40px;font-size:12px;font-weight:600}.pen-size-label{color:var(--text-secondary);align-items:center;gap:6px;font-size:12px;display:flex}.pen-size-label input[type=range]{width:60px;accent-color:var(--accent)}.page-info{color:var(--text-muted);font-size:12px}.pdf-scroll{background:#0d1117;flex-direction:column;flex:1;align-items:center;gap:16px;padding:20px;display:flex;overflow-y:auto}.pdf-page-container{box-shadow:var(--shadow-md);border-radius:var(--radius-sm);transition:var(--transition);display:inline-block;position:relative;overflow:hidden}.pdf-page-container:hover{box-shadow:var(--shadow-lg)}.pdf-overlay-canvas{z-index:10;position:absolute;top:0;left:0}.pdf-placeholder{height:100%;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.pdf-placeholder-icon{opacity:.3;font-size:64px;animation:3s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.5;transform:scale(1.05)}}.pdf-loading,.pdf-error{height:200px;color:var(--text-secondary);justify-content:center;align-items:center;font-size:14px;display:flex}.pdf-error{color:var(--danger)}.category-tree{border-bottom:1px solid var(--border);padding:16px}.tree-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.tree-header h3{font-size:14px;font-weight:700}.tree-hint{color:var(--text-muted);font-size:11px;font-style:italic}.tree-content{max-height:280px;padding-right:4px;overflow-y:auto}.tree-node{-webkit-user-select:none;user-select:none}.tree-item{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);align-items:center;gap:6px;padding:5px 8px;font-size:13px;display:flex}.tree-item:hover{background:var(--bg-card)}.tree-selected{border:1px solid var(--accent);background:var(--accent-glow)!important}.tree-leaf{color:var(--accent-light)}.tree-leaf:hover{background:var(--accent-glow)}.tree-toggle{color:var(--text-muted);text-align:center;flex-shrink:0;width:14px;font-size:9px}.tree-leaf .tree-toggle{color:var(--accent);font-size:6px}.tree-label{flex:1}.tree-actions{flex-wrap:wrap;gap:4px;margin-top:10px;display:flex}.tree-input-row{gap:6px;margin-top:8px;display:flex}.tree-input-row input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);transition:var(--transition);outline:none;flex:1;padding:6px 10px;font-family:inherit;font-size:13px}.tree-input-row input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}.tree-loading{color:var(--text-muted);text-align:center;padding:20px}.entry-popup{z-index:1000;background:var(--bg-card);border:1px solid var(--border-hover);border-radius:var(--radius-lg);width:320px;box-shadow:var(--shadow-lg),0 0 40px #0006;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding:20px;animation:.2s ease-out popupIn;position:fixed}@keyframes popupIn{0%{opacity:0;transform:scale(.95)translateY(5px)}to{opacity:1;transform:scale(1)translateY(0)}}.popup-header{color:var(--accent-light);border-bottom:1px solid var(--border);margin-bottom:16px;padding-bottom:10px;font-size:16px;font-weight:700}.popup-row{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.popup-row label{color:var(--text-secondary);font-size:13px;font-weight:500}.qty-controls{align-items:center;gap:0;display:flex}.qty-btn{background:var(--danger);border:1px solid var(--danger);color:#fff;cursor:pointer;width:36px;height:36px;transition:var(--transition);justify-content:center;align-items:center;font-size:18px;font-weight:800;display:flex}.qty-btn:first-child{border-radius:var(--radius-sm)0 0 var(--radius-sm)}.qty-btn:last-child{border-radius:0 var(--radius-sm)var(--radius-sm)0}.qty-btn:hover{background:var(--danger-hover)}.qty-input{text-align:center;background:var(--bg-input);border:1px solid var(--border);width:60px;height:36px;color:var(--text-primary);-moz-appearance:textfield;border-left:none;border-right:none;outline:none;font-family:inherit;font-size:15px;font-weight:600}.qty-input::-webkit-inner-spin-button{-webkit-appearance:none}.qty-input::-webkit-outer-spin-button{-webkit-appearance:none}.value-input{text-align:right;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);width:120px;height:36px;color:var(--text-primary);transition:var(--transition);outline:none;padding:0 10px;font-family:inherit;font-size:15px;font-weight:500}.value-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}.popup-actions{gap:8px;margin-top:18px;display:flex}.popup-submit{flex:1;padding:10px;font-weight:600}.popup-cancel{flex:1;padding:10px}.entries-section{flex-direction:column;flex:1;min-height:0;padding:16px;display:flex}.entries-header{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.entries-header h3{font-size:14px;font-weight:700}.entries-header-actions{gap:6px;display:flex}.table-container{border:1px solid var(--border);border-radius:var(--radius-md);flex:1;overflow-y:auto}.entries-table{border-collapse:collapse;width:100%;font-size:13px}.entries-table thead{z-index:5;position:sticky;top:0}.entries-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:10px 12px;font-size:11px;font-weight:600}.entries-table td{border-bottom:1px solid var(--border);transition:var(--transition);padding:8px 12px}.entries-table tbody tr:hover{background:var(--bg-card)}.entries-table tbody tr:last-child td{border-bottom:none}.cell-num{text-align:right;font-variant-numeric:tabular-nums}.cell-editable{cursor:text;position:relative}.cell-editable:hover:after{content:"✏";opacity:.4;font-size:10px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.cell-input{background:var(--bg-input);border:1px solid var(--accent);width:100%;color:var(--text-primary);box-shadow:0 0 0 2px var(--accent-glow);border-radius:3px;outline:none;padding:4px 6px;font-family:inherit;font-size:13px}.cell-input-num{text-align:right;width:80px}.cell-total{color:var(--success);font-weight:600}.cell-summary-label{text-transform:uppercase;letter-spacing:.5px;font-weight:800}.summary-row{background:var(--bg-secondary)!important}.summary-row td{border-top:2px solid var(--accent);font-weight:600;border-bottom:none!important}.btn-delete-row{width:26px;height:26px;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:16px;display:flex}.btn-delete-row:hover{background:var(--danger-glow);color:var(--danger)}.table-empty{text-align:center;color:var(--text-muted);font-style:italic;padding:30px 12px!important}@media (max-width:1024px){.dashboard-main{flex-direction:column}.panel-left{border-right:none;border-bottom:1px solid var(--border);flex:1;max-height:50vh}.panel-right{flex:1;min-width:0;max-width:none}}@media (max-width:640px){.pdf-toolbar{gap:4px;padding:8px}.entry-popup{width:calc(100vw - 32px);left:16px!important}}
