:root{--bg:#f5f7fb;--card:#fff;--ink:#18212f;--muted:#697586;--line:#e4e9f0;--brand:#3d5afe;--brand2:#243bdb;--danger:#c93b43;--success:#18794e;--warn:#9a6700;--shadow:0 12px 32px rgba(22,34,54,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(--bg);color:var(--ink)}a{color:var(--brand);text-decoration:none}input,select,textarea{width:100%;border:1px solid #ccd5e2;border-radius:9px;padding:10px 12px;font:inherit;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#8091ff;box-shadow:0 0 0 3px rgba(61,90,254,.1)}label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:650;color:#344054}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:800}.brand.big{font-size:21px;margin-bottom:28px}.brandmark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--brand),#7b61ff);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;box-shadow:0 6px 14px rgba(61,90,254,.22)}.topright{display:flex;gap:18px;align-items:center;font-size:14px}.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 66px)}.sidebar{padding:22px 14px;border-right:1px solid var(--line);background:#fbfcfe}.navlink{display:block;padding:11px 13px;border-radius:9px;color:#455269;margin:3px 0;font-size:14px;font-weight:650}.navlink:hover{background:#edf1ff;color:var(--brand)}.content{padding:30px 34px;max-width:1500px;width:100%;margin:0 auto}.pagehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.pagehead h1{font-size:26px;margin:0}.authwrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px}.authwrap>.pagehead{display:none}.authcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:32px;width:min(470px,100%);box-shadow:var(--shadow)}.authcard h1,.authcard h2{margin:0 0 8px}.grid{display:grid;gap:18px}.grid.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 2px 4px rgba(16,24,40,.02)}.metric .value{font-size:29px;font-weight:800;margin-top:8px}.metric .label{font-size:13px;color:var(--muted);font-weight:650}.muted{color:var(--muted)}.small{font-size:12px}.stack{display:flex;flex-direction:column;gap:16px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.formgrid .full{grid-column:1/-1}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cfd7e4;background:#fff;color:#344054;padding:9px 14px;border-radius:9px;font-weight:700;font-size:14px;cursor:pointer}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand2)}.btn.danger{color:var(--danger);border-color:#efc7cb;background:#fff7f8}.btn.ghost{background:transparent}.btn.wide{width:100%}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.tablewrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:12px 14px;text-align:left;border-bottom:1px solid #edf0f5;vertical-align:middle}th{font-size:12px;color:#687386;text-transform:uppercase;letter-spacing:.04em;background:#fafbfc}tr:last-child td{border-bottom:0}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:750;background:#eef1f6;color:#4b5565}.badge.active,.badge.review,.badge.processed,.badge.approved{background:#e8f6ef;color:#18794e}.badge.failed,.badge.deleted,.badge.disabled{background:#fdecee;color:#b42318}.badge.suspended,.badge.partial{background:#fff4df;color:#9a6700}.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px;border:1px solid}.alert.success{background:#ebf8f1;border-color:#b7e2ca;color:#16623d}.alert.danger{background:#fff0f1;border-color:#f1c5c8;color:#9e2931}.alert.warning{background:#fff8e8;border-color:#ecd79f;color:#7d5900}.dropzone{border:2px dashed #c9d2e3;border-radius:16px;padding:38px;text-align:center;background:#fbfcff}.dropzone input{max-width:420px;margin:14px auto}.split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(340px,.7fr);gap:20px}.jsonbox{background:#101828;color:#d9e2f1;border-radius:12px;padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:pre-wrap;overflow:auto;max-height:650px}.sectiontitle{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.sectiontitle h2,.sectiontitle h3{margin:0}.line-table input{min-width:90px;padding:7px 8px}.line-table input.sm{min-width:65px}.iconbtn{border:0;background:#f0f2f5;border-radius:8px;width:30px;height:30px;cursor:pointer}.actions{display:flex;gap:7px;flex-wrap:wrap}.upload-progress{padding:12px;background:#edf1ff;border-radius:10px;color:#2f45c8}.kv{display:grid;grid-template-columns:160px 1fr;gap:8px 14px;font-size:14px}.empty{padding:32px;text-align:center;color:var(--muted)}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:flex;overflow:auto;border-right:0;border-bottom:1px solid var(--line);padding:8px}.navlink{white-space:nowrap}.content{padding:20px}.grid.cols4,.grid.cols3,.grid.cols2,.split{grid-template-columns:1fr}.formgrid{grid-template-columns:1fr}.formgrid .full{grid-column:auto}.topright .muted{display:none}}
.authlinks{margin-top:16px;text-align:center;font-size:14px}.authlinks a{font-weight:650}

.mapping-table input,.mapping-table select{min-width:170px}.mapping-table td:first-child input{min-width:220px}.checkline{flex-direction:row;align-items:center;gap:9px}.checkline input{width:auto}.codehint{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f3f5f9;padding:2px 5px;border-radius:5px}.mapping-export{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.mapping-export select{width:auto;min-width:220px}
.quick-mapping-form{display:flex;gap:6px;align-items:center}.quick-mapping-form select{min-width:150px;padding:6px 8px;font-size:12px}.quick-mapping-form .btn{padding:6px 9px;font-size:12px}.mapping-assignment-card{border-left:4px solid var(--brand)}
