:root{--bg: #f6f7f9;--surface: #ffffff;--border: #e2e5ea;--text: #16181d;--muted: #6b7280;--accent: #1c6feb;--accent-text: #ffffff;--ok-bg: #e6f4ea;--ok-text: #146c36;--warn-bg: #fdf0d5;--warn-text: #8a5a00;--dupe-bg: #eceef1;--dupe-text: #5b6270;--danger: #b42318;--personal-bg: #f3e8ff;--personal-text: #6b21a8;--shadow: 0 1px 2px rgba(16, 24, 40, .06)}@media(prefers-color-scheme:dark){:root{--bg: #14161a;--surface: #1c1f25;--border: #2c3038;--text: #e8eaed;--muted: #9aa1ac;--accent: #5a9bff;--accent-text: #0b1220;--ok-bg: #16321f;--ok-text: #7ee2a0;--warn-bg: #3a2c10;--warn-text: #ffd280;--dupe-bg: #24272d;--dupe-text: #9aa1ac;--danger: #ff8a7a;--personal-bg: #2c1f3d;--personal-text: #d9b8ff;--shadow: none}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}.page{max-width:1000px;margin:0 auto;padding:24px 16px 48px}.header{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;justify-content:space-between;margin-bottom:16px}h1{font-size:22px;margin:0 0 4px;letter-spacing:-.01em}.tagline{margin:0;color:var(--muted);max-width:46em}.tabs{display:flex;gap:4px}.tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:7px 14px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500}.tabs button.on{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.count{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:9px;background:#7f7f7f38;font-size:11px}.banner{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--surface);border-radius:8px;padding:12px 14px;margin-bottom:20px;color:var(--muted)}.banner strong{color:var(--text)}.banner em{font-style:normal;font-weight:600;color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow)}.card h2{font-size:15px;margin:0 0 12px}.card h3{font-size:13px;margin:0 0 8px}.card.empty{color:var(--muted);text-align:center;padding:40px 18px}.dropzone{border:2px dashed var(--border);border-radius:12px;background:var(--surface);padding:40px 20px;text-align:center;cursor:pointer;margin-bottom:16px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.dragging{border-color:var(--accent)}.dz-title{margin:0 0 6px;font-size:15px;font-weight:600}.dz-sub{margin:0;color:var(--muted);font-size:13px}.grid{width:100%;border-collapse:collapse;display:block;overflow-x:auto}.grid thead th{text-align:left;font-size:12px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border);padding:8px 10px;white-space:nowrap}.grid tbody td{padding:10px;border-bottom:1px solid var(--border);vertical-align:top}.grid tbody tr:last-child td{border-bottom:none}.grid .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.grid tr.dim{opacity:.5}.merchant{font-weight:600}.raw{color:var(--muted);font-size:12px;font-family:ui-monospace,SFMono-Regular,monospace}.local{font-family:ui-monospace,SFMono-Regular,monospace;color:var(--muted)}select{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-size:13px;font-family:inherit}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;margin-right:4px;white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok-text)}.badge.warn{background:var(--warn-bg);color:var(--warn-text)}.badge.dupe{background:var(--dupe-bg);color:var(--dupe-text)}.badge.personal{background:var(--personal-bg);color:var(--personal-text);margin-top:4px}.willupload{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:18px 0 14px;padding-top:16px;border-top:1px solid var(--border)}@media(max-width:640px){.willupload{grid-template-columns:1fr}}.willupload ul{margin:0;padding:0;list-style:none}.willupload li{font-size:12.5px;padding:1px 0}ul.yes li:before{content:"✓ ";color:var(--ok-text);font-weight:700}ul.no li:before{content:"✗ ";color:var(--danger);font-weight:700}ul.yes,ul.no{margin:0 0 12px;padding:0;list-style:none}ul.yes li,ul.no li{padding:1px 0}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}button.primary,button.ghost,button.danger{border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;border:1px solid var(--border)}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button.primary:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:var(--surface);color:var(--text)}button.danger{background:var(--surface);color:var(--danger);border-color:var(--danger)}.json{margin:14px 0 0;padding:14px;border-radius:8px;overflow-x:auto;background:var(--bg);border:1px solid var(--border);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5}.failed{margin:0;padding:0;list-style:none}.failed li{padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}.failed li:last-child{border-bottom:none}.fname{font-family:ui-monospace,SFMono-Regular,monospace;margin-right:8px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.kpi{border:1px solid var(--border);border-radius:10px;padding:12px 14px}.kpi-label{color:var(--muted);font-size:12px}.kpi-value{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;margin-top:2px}.notice{margin-top:16px;padding:12px 14px;border-radius:8px;background:var(--warn-bg);color:var(--warn-text);font-size:13px}.notice ul{margin:6px 0 0;padding-left:20px}.notice em{font-style:normal;font-weight:600}.notice code{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;background:#7f7f7f2e;padding:1px 4px;border-radius:3px}.muted{color:var(--muted);font-size:13px}.footer{margin-top:28px;padding-top:16px;border-top:1px solid var(--border);color:var(--muted);font-size:12.5px;text-align:center}.login{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.login input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:14px;font-family:inherit;min-width:200px}.login input:focus{outline:2px solid var(--accent);outline-offset:-1px}.login p{flex-basis:100%;margin:2px 0 0}.error{color:var(--danger);font-size:13px;margin:4px 0 0}.banner.error-banner{border-left-color:var(--danger);color:var(--danger)}.check{display:inline-flex;gap:6px;align-items:center;font-size:13px;cursor:pointer}.check input{margin:0}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.chip{display:inline-flex;gap:6px;align-items:center;cursor:pointer;border:1px solid var(--border);border-radius:999px;padding:4px 12px;font-size:13px;background:var(--surface)}.chip.on{border-color:var(--accent);color:var(--accent)}.chip input{display:none}.notice a{color:inherit;text-decoration:underline}.methods{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}@media(max-width:640px){.methods{grid-template-columns:1fr}}.method{display:flex;flex-direction:column;gap:4px;text-align:left;cursor:pointer;border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface);color:var(--text);font-family:inherit}.method:hover{border-color:var(--accent)}.method.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.method-title{font-size:14px;font-weight:600}.method-sub{font-size:12.5px;color:var(--muted);line-height:1.5}
