:root{--bg: #0c0e14;--bg-card: #141824;--bg-elevated: #1a1f2e;--bg-secondary: #1e2433;--border: #2a3142;--text: #e8eaef;--text-muted: #8b92a8;--primary: #3b82f6;--primary-hover: #2563eb;--success: #22c55e;--warning: #eab308;--warning-light: rgba(234, 179, 8, .15);--danger: #ef4444;--radius: 8px;--shadow: 0 8px 32px rgba(0, 0, 0, .35);font-family:DM Sans,system-ui,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}#app{min-height:100vh}.mono{font-family:JetBrains Mono,monospace}a{color:var(--primary)}button{font-family:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);font-size:13px;font-weight:500;transition:background .15s,border-color .15s}.btn:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--text-muted)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-ghost{background:transparent}.btn-sm{padding:4px 10px;font-size:12px}.btn-danger{background:#ef444426;border-color:var(--danger);color:#fca5a5}input,select,textarea{font-family:inherit;font-size:13px;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #3b82f640}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);max-height:100%}table.data-table{width:100%;border-collapse:collapse;font-size:13px}table.data-table th{text-align:left;padding:10px 12px;background:var(--bg-secondary);color:var(--text-muted);font-weight:500;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}table.data-table td{padding:8px 12px;border-bottom:1px solid var(--border)}table.data-table tr:hover td{background:#ffffff05}table.data-table tr.row-selected td{background:#3b82f61f}.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sortable:hover{color:var(--text)}.status-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.status-pending{background:#eab30833;color:#fbbf24}.status-approved{background:#22c55e33;color:#4ade80}.status-submitted{background:#3b82f633;color:#60a5fa}.status-rejected{background:#ef444433;color:#f87171}.status-processing{background:#8b5cf633;color:#a78bfa}.status-duplicated,.status-error{background:#f8717126;color:#fca5a5}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.modal-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);max-width:720px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-panel header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-panel .body{padding:16px 20px;overflow-y:auto}.popover{position:fixed;z-index:900;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:200px;max-width:320px;max-height:280px;overflow-y:auto}.popover-item{display:block;width:100%;text-align:left;padding:8px 12px;border:none;background:transparent;color:var(--text);font-size:12px;border-bottom:1px solid var(--border)}.popover-item:hover{background:var(--bg-secondary)}.popover-item:last-child{border-bottom:none}.toast-bar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:2000;padding:12px 20px;border-radius:var(--radius);font-size:14px;font-weight:500;box-shadow:var(--shadow)}.toast-success{background:#166534;color:#fff}.toast-error{background:#991b1b;color:#fff}.toast-warning{background:#854d0e;color:#fff}.toast-info{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text)}
