:root{--bg-base: #0d0f14;--bg-surface: #151820;--bg-elevated: #1c2030;--bg-hover: #222638;--border: #2a2f45;--border-focus: #4f6ef7;--text-primary: #e6e8f0;--text-secondary: #8890aa;--text-muted: #555d78;--accent: #4f6ef7;--accent-hover: #6b87ff;--accent-dim: rgba(79, 110, 247, .15);--green: #3ecf8e;--green-dim: rgba(62, 207, 142, .12);--red: #f06c6c;--red-dim: rgba(240, 108, 108, .12);--amber: #f5a623;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow: 0 4px 24px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg-base);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}ul{list-style:none}button{cursor:pointer;font-family:inherit}input,button,select{font-size:14px}select{background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:8px 12px;outline:none}select:focus{border-color:var(--border-focus)}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:52px;background:var(--bg-surface);border-bottom:1px solid var(--border);flex-shrink:0}.topbar-title{font-size:15px;font-weight:600;letter-spacing:.02em;color:var(--text-primary)}.topbar-title span{color:var(--accent)}.topbar-user{display:flex;align-items:center;gap:12px;color:var(--text-secondary);font-size:13px}.page{flex:1;overflow-y:auto;padding:32px}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%;background:var(--bg-base)}.login-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px;width:360px;box-shadow:var(--shadow)}.login-logo{text-align:center;margin-bottom:28px}.login-logo h1{font-size:20px;font-weight:700;color:var(--text-primary)}.login-logo p{font-size:13px;color:var(--text-secondary);margin-top:4px}.login-card .form-group{margin-bottom:14px}.login-card .btn-primary{width:100%;margin-top:6px}.access-denied{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;color:var(--text-secondary)}.access-denied h2{font-size:18px;color:var(--text-primary)}.loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:13px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:12px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.input{background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:8px 12px;width:100%;outline:none;transition:border-color .15s}.input:focus{border-color:var(--border-focus)}.input::placeholder{color:var(--text-muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.checkbox-group{display:flex;gap:20px;align-items:center;padding:4px 0}.checkbox-label{display:flex;align-items:center;gap:7px;color:var(--text-secondary);cursor:pointer;font-size:13px}.checkbox-label input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.spinner{display:inline-block;width:14px;height:14px;margin-right:8px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;vertical-align:-2px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 16px;border-radius:var(--radius-sm);font-weight:500;border:1px solid transparent;transition:background .15s,border-color .15s,opacity .15s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--text-muted)}.btn-danger{background:var(--red-dim);color:var(--red);border-color:transparent}.btn-danger:hover:not(:disabled){background:#f06c6c38}.btn-ghost{background:transparent;color:var(--text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-primary)}.btn-sm{padding:4px 10px;font-size:12px}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:24px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-title{font-size:16px;font-weight:600;color:var(--text-primary)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}table{width:100%;border-collapse:collapse}thead{background:var(--bg-elevated)}thead th{padding:10px 16px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);border-bottom:1px solid var(--border)}tbody tr{border-bottom:1px solid var(--border);transition:background .1s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--bg-elevated)}tbody td{padding:12px 16px;color:var(--text-primary);font-size:13px}tbody td.muted{color:var(--text-secondary)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}.badge-green{background:var(--green-dim);color:var(--green)}.badge-red{background:var(--red-dim);color:var(--red)}.badge-amber{background:#f5a6231f;color:var(--amber)}.project-panel td{background:var(--bg-base);padding:16px 24px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.project-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,background .15s;color:var(--text-secondary);font-size:13px}.project-item:hover{border-color:var(--accent);color:var(--text-primary)}.project-item.selected{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}.project-item input[type=checkbox]{accent-color:var(--accent);cursor:pointer;flex-shrink:0}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-md);padding:32px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;display:flex;flex-direction:column;align-items:center;gap:10px}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--accent);background:var(--accent-dim)}.drop-zone.has-file{border-style:solid;border-color:var(--border)}.drop-zone-icon{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px}.drop-zone-label{font-size:13px;color:var(--text-secondary)}.drop-zone-label strong{color:var(--accent);font-weight:600}.drop-zone-meta{font-size:12px;color:var(--text-muted)}.add-vendor-card{margin-top:24px}.add-vendor-card .form-fields{display:flex;flex-direction:column;gap:14px}.add-vendor-card .form-actions{display:flex;align-items:center;gap:12px;margin-top:18px}.error-text{color:var(--red);font-size:13px}.status-text{color:var(--text-secondary);font-size:13px}.vendor-page{max-width:720px}.vendor-page h3{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:14px}.project-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.project-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 20px;display:flex;align-items:center;gap:12px;color:var(--text-primary);font-size:14px;font-weight:500;transition:border-color .15s,background .15s}.project-card:hover{border-color:var(--accent);background:var(--bg-elevated)}.project-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}.empty-state{color:var(--text-muted);font-size:13px;padding:24px 0}
