:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f0f2f5;--text: #1a1917;--text-muted: #5a574f;--border: #d0cdc4;--primary: #1b6b4a;--primary-hover: #15583d;--danger: #cc3d3d;--warning: #d4922a;--success: #2d8b55;--radius: 8px;--radius-sm: 4px;--shadow: 0 1px 3px rgba(0, 0, 0, .08)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}h1{font-size:22px;font-weight:700;margin:0}h2{font-size:18px;font-weight:600;margin:0}input,select,textarea,button{font:inherit;color:inherit}input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;outline:none;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1b6b4a26}button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 14px;cursor:pointer;font-weight:500;transition:background .1s}button:hover{background:var(--surface-2)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.primary:hover{background:var(--primary-hover)}button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 20px;display:flex;align-items:center;gap:24px}.topbar .brand{font-weight:700}.topbar nav{display:flex;gap:16px;flex:1}.topbar nav a{text-decoration:none;color:var(--text-muted);font-weight:500}.topbar nav a.active{color:var(--primary)}.topbar .user{color:var(--text-muted);font-size:13px}main{padding:24px;max-width:1400px;margin:0 auto;width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:20px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:48px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;background:var(--surface)}.dropzone:hover,.dropzone.dragover{border-color:var(--primary);background:#1b6b4a0a}.candidates-table{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;border-collapse:collapse}.candidates-table th,.candidates-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}.candidates-table th{background:var(--surface-2);font-weight:600;font-size:12px;text-transform:uppercase;color:var(--text-muted)}.candidates-table tr:last-child td{border-bottom:0}.candidates-table tr.invalid{background:#cc3d3d0a}.candidates-table tr.expanded{background:var(--surface-2)}.candidates-table td.actions{white-space:nowrap;text-align:right}.tag{display:inline-block;padding:2px 8px;background:var(--surface-2);border-radius:12px;font-size:12px;color:var(--text-muted)}.flash{padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:12px}.flash.error{background:#cc3d3d1a;color:var(--danger)}.flash.success{background:#2d8b551a;color:var(--success)}.flash.info{background:#1b6b4a14;color:var(--primary)}.field-row{display:grid;grid-template-columns:140px 1fr;gap:8px 12px;align-items:center;margin-bottom:8px}.field-row label{font-size:13px;color:var(--text-muted)}.field-row .full{grid-column:1 / -1}.metric{display:inline-flex;gap:4px;align-items:center}.metric .value{font-weight:600}.metric .unit{color:var(--text-muted);font-size:12px}.checks{display:flex;gap:16px;flex-wrap:wrap}.checks label{display:flex;gap:6px;align-items:center;font-size:13px;cursor:pointer}.minimap{height:160px;background:var(--surface-2);border-radius:var(--radius-sm);overflow:hidden}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px;width:360px;box-shadow:var(--shadow)}.login-card h1{margin-bottom:24px}.login-card .row{margin-bottom:14px}.login-card .row label{display:block;margin-bottom:4px;font-size:13px;color:var(--text-muted)}.login-card button{width:100%}
