:root{--bg: #f4f5fb;--surface: #ffffff;--ink: #1a1f36;--muted: #6b7392;--line: #e7e9f3;--brand: #5b5bd6;--brand-2: #7c5cff;--brand-ink: #ffffff;--ok: #11875a;--ok-bg: #e3f6ec;--warn: #b4540a;--warn-bg: #fdeede;--book: #b4308a;--book-bg: #fbe6f3;--gst: #6b4ec0;--gst-bg: #efeafc;--typo: #1f7a98;--typo-bg: #e0f3f8;--danger: #c0392b;--radius: 14px;--shadow-sm: 0 1px 2px rgba(20, 24, 60, .05), 0 1px 3px rgba(20, 24, 60, .08);--shadow-md: 0 6px 22px rgba(40, 40, 90, .1)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{letter-spacing:-.01em}.muted{color:var(--muted)}.small{font-size:12.5px}.ok{color:var(--ok)}.warn{color:var(--warn)}code{background:#eef0f8;padding:1px 6px;border-radius:6px;font-size:12.5px}.center{min-height:100vh;display:grid;place-items:center}.center-cell{text-align:center;padding:28px}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:9px 15px;border-radius:10px;cursor:pointer;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s}.btn:hover{background:#f1f2fb}.btn.active{border-color:var(--brand);color:var(--brand)}.btn.primary{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:var(--brand-ink);border-color:transparent;box-shadow:0 4px 14px #5b5bd659}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.ghost:hover{background:#eef0f8;color:var(--ink)}.btn.xs{padding:5px 10px;font-size:12.5px;border-radius:8px}.btn.block{width:100%;padding:11px;justify-content:center}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.link-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:12.5px;padding:0}.link-btn:hover{color:var(--brand)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 26px;background:#ffffffd9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{font-weight:700;font-size:16px;display:flex;align-items:center;gap:9px}.topbar nav{display:flex;align-items:center;gap:10px}.who{text-align:right;margin-left:8px}.who-firm{font-size:13px;font-weight:600}.logo-badge{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-weight:800;font-size:20px;box-shadow:0 4px 14px #5b5bd666}.logo-badge.sm{width:28px;height:28px;font-size:15px;border-radius:8px}.container{max-width:1120px;margin:0 auto;padding:26px}.auth-wrap{min-height:100vh;display:grid;place-items:center;position:relative;overflow:hidden;padding:24px}.auth-aurora{position:absolute;top:-40%;right:-40%;bottom:-40%;left:-40%;z-index:0;filter:blur(70px);opacity:.5;background:linear-gradient(120deg,#7c5cff,#5b5bd6,#18b8a6,#7c5cff);background-size:300% 300%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-md)}.auth{width:392px;max-width:100%;padding:26px;position:relative;z-index:1;display:flex;flex-direction:column;gap:13px}.auth-brand{display:flex;gap:12px;align-items:center;margin-bottom:4px}.auth-brand h1{font-size:19px;margin:0}.seg{display:flex;background:#eef0f8;border-radius:10px;padding:3px}.seg-btn{flex:1;border:none;background:transparent;padding:8px;border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--muted)}.seg-btn.active{background:#fff;color:var(--brand);box-shadow:var(--shadow-sm)}.field{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted);font-weight:600}.field input:not([type=checkbox]),.field select,select,input[type=text],input[type=email],input[type=password],input[type=number],input[type=month]{border:1px solid var(--line);border-radius:9px;padding:10px 11px;font-size:14px;line-height:1.4;color:var(--ink);background:#fff;font-weight:400;width:100%;height:40px;transition:border-color .15s,box-shadow .15s}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7392' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}.field input:focus,.field select:focus,input:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #5b5bd626}input.invalid{border-color:var(--danger)}.hint{font-size:11.5px;font-weight:600}.hint.err{color:var(--danger)}.hint.ok{color:var(--ok)}.pw-meter{display:flex;align-items:center;gap:8px;margin:2px 0 8px}.pw-bar{height:5px;border-radius:3px;background:var(--danger);transition:width .3s,background .3s;min-width:6px}.pw-bar.s0,.pw-bar.s1{background:#e0564a}.pw-bar.s2{background:#e6a23c}.pw-bar.s3{background:#5bb56b}.pw-bar.s4{background:var(--ok)}.msg{font-size:13px;padding:9px 11px;border-radius:9px;background:#eef2f8}.msg.error{background:#fdecea;color:var(--danger)}.msg.ok{background:var(--ok-bg);color:var(--ok)}.card-list{display:flex;flex-direction:column;gap:12px}.recon-card{display:flex;align-items:center;gap:18px;text-align:left;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow-sm);transition:box-shadow .15s}.recon-card:hover{box-shadow:var(--shadow-md)}.recon-card-main{flex:1;min-width:0}.recon-client{font-weight:700;font-size:15px}.recon-stats{display:flex;gap:8px;flex-wrap:wrap}.stat{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;background:#eef0f8;color:var(--muted)}.stat.ok{background:var(--ok-bg);color:var(--ok)}.stat.warn{background:var(--warn-bg);color:var(--warn)}.stat.typo{background:var(--typo-bg);color:var(--typo)}.recon-go{font-size:20px;color:var(--muted)}.empty{text-align:center;padding:70px 20px}.empty-art{font-size:46px;margin-bottom:8px}.empty h2{margin:0 0 6px}.empty .btn{margin-top:16px}.wizard>h2{margin:0 0 16px}.wsection{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.wsection-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.wsection-head h3{margin:0;font-size:15px}.step-num{width:24px;height:24px;border-radius:7px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;flex:none}.step-num.sub{background:#eef0f8;color:var(--muted)}.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.batch-note{background:var(--typo-bg);color:var(--typo);border-radius:10px;padding:10px 13px;font-size:13px;margin-bottom:13px}.mode-desc{margin:7px 2px 14px}.sample-row{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.sample-divider{width:1px;height:18px;background:var(--line);margin:0 4px}.uploads{display:grid;grid-template-columns:1fr 1fr;gap:14px}.filebox{border:1.5px dashed var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:7px;cursor:pointer;transition:border-color .15s,background .15s}.filebox:hover{border-color:var(--brand);background:#faf9ff}.filebox.has-file{border-style:solid;border-color:var(--ok);background:var(--ok-bg)}.filebox-title{font-weight:700;font-size:14px}.filebox input[type=file]{font-size:12px}.map-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}.map-col h4{margin:0 0 10px;font-size:13.5px}.mapper-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.mapper-grid{display:flex;flex-direction:column;gap:7px}.map-row{display:grid;grid-template-columns:1fr 1.2fr;align-items:center;gap:10px}.map-label{font-size:12.5px;font-weight:600;color:var(--muted)}.req{color:var(--danger);margin-left:2px}.map-select{position:relative;display:flex;align-items:center}.map-select select{width:100%;padding-right:26px}.map-select.mapped select{border-color:var(--ok)}.map-select.unmapped select{border-color:#f0c0a0}.map-dot{position:absolute;right:9px;font-size:10px;color:var(--ok);pointer-events:none}.map-select.unmapped .map-dot{color:#f0c0a0}.preview{margin-top:10px}.preview-scroll{overflow:auto;max-height:260px;border:1px solid var(--line);border-radius:10px;margin-top:8px}.mini-grid{border-collapse:collapse;font-size:12px;white-space:nowrap}.mini-grid th,.mini-grid td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left}.mini-grid th{background:#fafbff;position:sticky;top:0;color:var(--muted);font-weight:600}.toggle{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:13.5px;cursor:pointer}.toggle input{width:16px;height:16px}.keyrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;overflow:hidden}.chip-check{display:flex;align-items:center;gap:6px;font-size:12.5px;background:#eef0f8;padding:5px 11px;border-radius:999px;cursor:pointer}.chip-check input{width:15px;height:15px}.preview-strip{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 16px}.pill{font-size:13px;padding:7px 14px;border-radius:999px;background:#eef0f8}.pill b{font-weight:800}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.book{background:var(--book-bg);color:var(--book)}.pill.gst{background:var(--gst-bg);color:var(--gst)}.pill.typo{background:var(--typo-bg);color:var(--typo)}.actions{display:flex;justify-content:flex-end;gap:10px}.reporthead{display:flex;align-items:center;gap:16px;margin-bottom:18px}.reporttitle{flex:1}.reporttitle h2{margin:0}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm);border-top:3px solid var(--line)}.tile.ok{border-top-color:var(--ok)}.tile.warn{border-top-color:var(--warn)}.tile.gst{border-top-color:var(--gst)}.tile.typo{border-top-color:var(--typo)}.tile-label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.tile-value{font-size:25px;font-weight:800;margin:5px 0 2px}.typo-card{background:var(--surface);border:1px solid var(--typo);border-radius:var(--radius);padding:18px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.typo-head{margin-bottom:12px}.typo-head h3{margin:0 0 2px;font-size:15px}.typo-grid code{background:#fff;border:1px solid var(--line)}.decide{display:flex;gap:6px}.ok-btn{background:var(--ok-bg);color:var(--ok);border-color:transparent}.reject-btn{background:var(--warn-bg);color:var(--warn);border-color:transparent}tr.status-confirmed{background:var(--ok-bg)}tr.status-rejected{background:#f7f8fb;opacity:.7}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{border:1px solid var(--line);background:#fff;padding:7px 13px;border-radius:999px;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:7px}.chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}.chip .cnt{font-size:11px;background:#00000014;padding:1px 7px;border-radius:999px}.chip.active .cnt{background:#ffffff40}.grid{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}.grid th,.grid td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:13.5px}.grid th{font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#fafbff}.grid tbody tr:last-child td{border-bottom:none}.grid tbody tr:hover{background:#faf9ff}.badge{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}.badge.MATCH{background:var(--ok-bg);color:var(--ok)}.badge.MISMATCH{background:var(--warn-bg);color:var(--warn)}.badge.ONLY_IN_BOOKS{background:var(--book-bg);color:var(--book)}.badge.ONLY_IN_2B{background:var(--gst-bg);color:var(--gst)}button.badge{font-family:inherit;border:none}.badge.undo{cursor:pointer;transition:filter .15s}.badge.undo:hover{filter:brightness(.94)}@media (max-width: 820px){.uploads,.map-cols{grid-template-columns:1fr}.container{padding:16px}.recon-card{flex-direction:column;align-items:flex-start}}
