:root{--bg: #fafbfc;--surface: #ffffff;--border: #d0d7de;--border-soft: #e4e8ec;--text: #1f2328;--muted: #656d76;--accent: #0969da;--accent-hover: #0860c7;--row-hover: #f6f8fa;--header-bg: #f6f8fa;--warn: #9a6700;--warn-bg: #fff8c5;--ok: #1a7f37;--ok-bg: #dafbe1;--shadow: 0 1px 3px rgba(31,35,40,.06)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Microsoft JhengHei,PingFang TC,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}header{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;gap:24px}header .brand{font-weight:600;font-size:15px;letter-spacing:.2px}header .brand b{color:var(--accent);font-weight:700}header nav{display:flex;gap:4px}header nav a{padding:6px 12px;border-radius:6px;color:var(--muted);font-weight:500}header nav a:hover{background:var(--row-hover);text-decoration:none}header nav a.active{color:var(--text);background:var(--row-hover)}header .right{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:13px;color:var(--muted)}header .right button{font:inherit;padding:4px 10px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;color:var(--text)}header .right button:hover{background:var(--row-hover)}main{padding:24px;max-width:1280px;margin:0 auto}h1,h2{margin:0;font-weight:600}h1{font-size:20px;margin-bottom:16px}h2{font-size:15px;margin-bottom:12px}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;box-shadow:var(--shadow);padding:16px 20px;margin-bottom:16px}.card-header{margin:-16px -20px 12px;padding:12px 20px;border-bottom:1px solid var(--border-soft);background:var(--header-bg);border-radius:8px 8px 0 0;font-weight:600;font-size:14px;display:flex;align-items:center;gap:12px}.card-header .count{color:var(--muted);font-weight:400;font-size:13px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.toolbar .grow{flex:1;min-width:200px}.toolbar .spacer{flex:1}input[type=text],input[type=search],input[type=password],select{font:inherit;padding:6px 10px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;min-width:0}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}button{font:inherit;padding:6px 14px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;cursor:pointer;font-weight:500}button:hover{background:var(--row-hover)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button:disabled{opacity:.5;cursor:not-allowed}table{width:100%;border-collapse:collapse;font-size:14px}thead th{text-align:left;padding:8px 12px;background:var(--header-bg);border-bottom:1px solid var(--border);color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px}tbody td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--row-hover)}td.actions{text-align:right;white-space:nowrap}td.num{text-align:right;font-variant-numeric:tabular-nums}td.mono,.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.2px;background:var(--header-bg);border:1px solid var(--border-soft);color:var(--muted)}.badge.docx{background:#ddf4ff;border-color:#80ccff;color:#0550ae}.badge.pdf{background:#ffebe9;border-color:#ffaba8;color:#82071e}.badge.json{background:#fff8c5;border-color:#d4a72c;color:#633c01}.badge.pending{background:var(--warn-bg);border-color:#d4a72c;color:var(--warn)}.badge.processed{background:var(--ok-bg);border-color:#4ac26b;color:var(--ok)}.muted{color:var(--muted)}.empty{padding:32px;text-align:center;color:var(--muted);font-size:13px}.dropzone{display:block;border:2px dashed var(--border);border-radius:8px;padding:32px 24px;text-align:center;background:var(--surface);transition:background .15s,border-color .15s;cursor:pointer}.dropzone:hover,.dropzone.over{background:#f0f6ff;border-color:var(--accent)}.dropzone .icon{font-size:32px;color:var(--muted);margin-bottom:8px}.dropzone .hint{color:var(--muted);font-size:13px;margin-top:4px}.dropzone .hint b{color:var(--accent)}.dropzone input[type=file]{display:none}.queue{margin-top:16px;display:flex;flex-direction:column;gap:8px}.queue-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--border-soft);border-radius:6px;background:var(--surface);font-size:13px}.queue-item .name{flex:1}.queue-item .size{color:var(--muted);font-variant-numeric:tabular-nums}.queue-item .status{min-width:80px;text-align:right}.queue-item .bar{width:100%;height:4px;background:var(--border-soft);border-radius:2px;margin-top:4px;overflow:hidden}.queue-item .bar>div{height:100%;background:var(--accent);transition:width .2s;width:0%}.queue-item.done .status{color:var(--ok)}.queue-item.error .status{color:#c00}.queue-item .col{flex:1;min-width:0}.queue-item .col .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
