:root{--bg:#0f1115;--surface:#171a21;--surface-2:#1e222b;--border:#2a2f3a;--text:#e6e8ec;--muted:#9aa3b2;--accent:#4f8cff;--accent-hover:#6ea0ff;--good:#3fb950;--warn:#d29922;--bad:#f85149;--radius:8px;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{max-width:1200px;margin:0 auto;padding:24px}.topbar{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.topbar .brand{letter-spacing:-.01em;font-weight:600}.topbar nav{align-items:center;gap:18px;display:flex}.topbar nav a{color:var(--muted);font-size:14px}.topbar nav a:hover{color:var(--text);text-decoration:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.muted{color:var(--muted)}.mono{font-family:var(--mono)}h1{letter-spacing:-.02em;margin:0 0 4px;font-size:22px}h2{margin:0 0 12px;font-size:16px}label{color:var(--muted);margin-bottom:6px;font-size:13px;display:block}input[type=text],input[type=password]{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:10px 12px;font-size:15px}input:focus{outline:2px solid var(--accent);outline-offset:-1px}button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:10px 16px;font-size:15px;font-weight:500}button:hover:not(:disabled){background:var(--accent-hover)}button:disabled{opacity:.55;cursor:not-allowed}button.secondary{background:var(--surface-2);border:1px solid var(--border);color:var(--text)}.error{color:#ffb4ae;background:#f851491f;border:1px solid #f8514959;border-radius:6px;padding:10px 12px;font-size:14px}.login-wrap{place-items:center;min-height:100dvh;padding:24px;display:grid}.login-card{width:100%;max-width:380px}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.stat{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.stat .value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:24px;font-weight:600}.dot{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot.good{background:var(--good)}.dot.bad{background:var(--bad)}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ellipsis{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:100%;display:inline-block;overflow:hidden}table{border-collapse:collapse;width:100%;font-size:14px}thead th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 14px;font-size:12px;font-weight:500}tbody td{border-bottom:1px solid var(--border);padding:11px 14px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-2)}tbody tr.assigned{background:#4f8cff0f}.num{text-align:right;font-variant-numeric:tabular-nums}select{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:7px 10px;font-size:14px}select:focus{outline:2px solid var(--accent);outline-offset:-1px}.badge{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-block}.badge.mapped{color:#9ec5ff;background:#4f8cff1f;border-color:#4f8cff66}.badge.running{color:#ffd479;background:#d2992224;border-color:#d2992273}.badge.done{color:#86e29a;background:#3fb9501f;border-color:#3fb95066}.badge.failed,.badge.cancelled{color:#ffb4ae;background:#f851491f;border-color:#f8514966}.dropzone{border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;background:var(--surface-2);padding:40px 20px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:#4f8cff12}.dropzone:focus-visible{outline:2px solid var(--accent)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:4px 12px;font-size:13px}.chip b{color:var(--text);font-weight:500}.meter{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.meter-fill{background:var(--good);height:100%;transition:width .25s}.success{color:#a5e8b4;background:#3fb9501f;border:1px solid #3fb95059;border-radius:6px;padding:12px 14px;font-size:14px}.empty{text-align:center;padding:40px 20px}.cost-card{border-color:#4f8cff59;margin-top:4px}.cost-headline{flex-wrap:wrap;align-items:center;gap:28px;display:flex}.cost-headline .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;font-size:12px}.cost-value{font-variant-numeric:tabular-nums;font-size:36px;font-weight:600;line-height:1.1}.cost-value.accent{color:var(--accent)}.cost-sep{color:var(--muted);font-size:28px}.breakdown td{border-bottom:1px solid var(--border);padding:8px 0}.breakdown td:nth-child(2){width:130px}.breakdown td:nth-child(3){width:220px;font-size:13px}.breakdown tr:last-child td{border-bottom:0}.breakdown tr.subtotal td{border-top:1px solid var(--border)}.breakdown tr.total td{border-top:2px solid var(--border);padding-top:12px;font-size:16px}.breakdown .good{color:var(--good)}.confirm-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px;padding:16px;display:flex}.checkbox{color:var(--text);align-items:center;gap:10px;margin:0;font-size:15px;display:flex}.checkbox input{width:16px;height:16px;accent-color:var(--accent)}button.danger{color:#ff9d96;background:0 0;border:1px solid #f8514980}button.danger:hover:not(:disabled){background:#f851491f}.warn-box{color:#f0cd82;background:#d299221f;border:1px solid #d2992266;border-radius:6px;padding:12px 14px;font-size:14px}.meter-fill.paused{background:var(--warn)}.stat .value.good{color:var(--good)}.review-layout{grid-template-columns:280px 1fr;align-items:start;gap:16px;display:grid}@media (max-width:900px){.review-layout{grid-template-columns:1fr}}.review-list{max-height:74vh;padding:0;overflow-y:auto}.review-item{text-align:left;border:0;border-bottom:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;background:0 0;border-radius:0;padding:10px 12px;font-size:14px;font-weight:400;display:block}.review-item:hover{background:var(--surface-2)}.review-item.selected{box-shadow:inset 3px 0 0 var(--accent);background:#4f8cff24}.review-detail{flex-direction:column;gap:12px;display:flex}.review-detail .card{margin:0}.conf{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.conf.big{font-size:22px}.conf.good{color:var(--good)}.conf.warn{color:var(--warn)}.conf.bad{color:var(--bad)}.candidate{border-left:3px solid #0000}.candidate.chosen{border-left-color:var(--accent);background:#4f8cff0f}.chosen-tag{color:var(--accent);vertical-align:middle;border:1px solid #4f8cff80;border-radius:999px;margin-left:10px;padding:2px 8px;font-size:11px;font-weight:500}.match-tag{color:var(--good);border:1px solid #3fb95073;border-radius:999px;margin-left:8px;padding:1px 7px;font-size:11px}.danger-text{color:var(--bad)}.cand-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin-top:14px;font-size:14px;display:grid}.cand-grid .label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:3px;font-size:11px;display:block}.actions-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;display:flex}kbd{border:1px solid var(--border);font-family:var(--mono);color:var(--muted);background:#00000059;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:11px;display:inline-block}.chip-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:999px;padding:5px 13px;font-size:13px;font-weight:400}.chip-btn:hover{color:var(--text);background:var(--surface-2)}.chip-btn.active{border-color:var(--accent);color:#cfe0ff;background:#4f8cff29}.chip-btn.small{padding:4px 10px;font-size:12px}.chip-btn b{color:var(--text);margin-left:3px;font-weight:600}.warn-chip{color:#f0cd82;border-color:#d2992273}.badge.accepted{color:#86e29a;background:#3fb9501f;border-color:#3fb95066}.badge.rejected{color:#ffb4ae;background:#f851491f;border-color:#f8514966}.badge.reassigned,.badge.review{color:#ffd479;background:#d2992224;border-color:#d2992273}.pager{justify-content:center;align-items:center;gap:10px;padding:10px;display:flex}.pager button{padding:4px 12px;font-size:13px}.linkish{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0 0 0 8px;font-size:12px;text-decoration:underline}.radio-list{flex-direction:column;gap:2px;display:flex}.radio-row{cursor:pointer;color:var(--text);border:1px solid #0000;border-radius:6px;align-items:center;gap:12px;margin:0;padding:10px 12px;font-size:15px;display:flex}.radio-row:hover{background:var(--surface-2)}.radio-row.active{background:#4f8cff1a;border-color:#4f8cff66}.radio-row input{width:16px;height:16px;accent-color:var(--accent)}.radio-label{flex:1}.radio-count{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600}.radio-row.active .radio-count{color:var(--text)}.plain-list{color:var(--muted);margin:0;padding-left:20px;font-size:14px}.plain-list li{margin-bottom:6px}.two-col{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}@media (max-width:900px){.two-col{grid-template-columns:1fr}}.bar{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.bar-fill{background:var(--accent);opacity:.75;height:100%}
