:root{--primary: #1e3a5f;--primary-light: #2d6cdf;--bg: #f4f6fb;--surface: #ffffff;--border: #d9e0ec;--text: #1f2933;--muted: #6b7280;--danger: #c0392b;--success: #1e7e34}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}.container{max-width:1100px;margin:0 auto;padding:24px 20px 64px}h1,h2,h3{color:var(--primary)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px 24px;margin-bottom:20px;box-shadow:0 1px 3px #1428500f}button{font:inherit;border:none;border-radius:8px;padding:10px 18px;cursor:pointer;background:var(--primary-light);color:#fff;transition:background .15s ease}button:hover:not(:disabled){background:var(--primary)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:#eef2fa;color:var(--primary)}button.link{background:none;color:var(--primary-light);padding:4px 8px;text-decoration:underline}input[type=text],input[type=number]{font:inherit;padding:6px 8px;border:1px solid var(--border);border-radius:6px;width:100%}table{width:100%;border-collapse:collapse;margin-top:8px}th,td{border:1px solid var(--border);padding:6px 8px;text-align:left;font-size:14px;vertical-align:top}th{background:#eef2fa}.dropzone{border:2px dashed var(--border);border-radius:10px;padding:28px;text-align:center;color:var(--muted);background:#fbfcfe}.file-list{list-style:none;padding:0;margin:12px 0 0}.file-list li{padding:6px 10px;background:#f1f4fa;border-radius:6px;margin-bottom:6px;font-size:14px}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.warning{background:#fff6e5;border:1px solid #f0d089;color:#8a6d3b;padding:10px 14px;border-radius:8px;font-size:14px}.error{background:#fdecea;border:1px solid #f5b5ae;color:var(--danger);padding:10px 14px;border-radius:8px;font-size:14px}.muted{color:var(--muted);font-size:13px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}
