:root{--bg: #f3f3f3;--surface: #ffffff;--border: #d7d8d6;--text: #252525;--muted: #575757;--accent: #db0011;--accent-text: #ffffff;--ok-bg: #e5f2f2;--ok-text: #00534f;--warn-bg: #fff1d6;--warn-text: #7a4f00;--dupe-bg: #ededed;--dupe-text: #4d4d4d;--danger: #a8000b;--personal-bg: #f3e8ff;--personal-text: #6b21a8;--credit: #00847f;--shadow: 0 1px 2px rgba(0, 0, 0, .06)}@media(prefers-color-scheme:dark){:root{--bg: #161616;--surface: #1f1f1f;--border: #3a3a3a;--text: #ededed;--muted: #b6b7b6;--accent: #ff4d5a;--accent-text: #1d1d1b;--ok-bg: #0f3331;--ok-text: #7fd1cc;--warn-bg: #3a2c10;--warn-text: #ffd280;--dupe-bg: #2a2a2a;--dupe-text: #b6b7b6;--danger: #ff8a7a;--personal-bg: #2c1f3d;--personal-text: #d9b8ff;--credit: #4dc2bc;--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:15px;line-height:1.6}.page{max-width:1180px;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:26px;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:8px 16px;border-radius:8px;cursor:pointer;font-size:15px;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:18px;margin:0 0 12px}.card h3{font-size:16px;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:13px;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:13px;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:14px;font-family:inherit}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12.5px;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 16px;font-size:14px;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:13px}.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:14px}.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:14px;background:var(--surface);color:var(--text);font-family:inherit}.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}.section-head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;justify-content:space-between;margin-bottom:8px}.section-head h2,.section-head h3{margin:0}.card.error-banner{color:var(--danger);border-left:3px solid var(--danger)}.warn-text{color:var(--warn-text);background:var(--warn-bg);border-radius:8px;padding:8px 12px;margin:10px 0 0;font-size:14px}.credit{color:var(--credit)}.table-scroll{overflow-x:auto}.table-scroll .grid{display:table}.kpi-value.small{font-size:16px;line-height:1.5}button.link{background:none;border:none;padding:0 2px;color:var(--accent);cursor:pointer;font:inherit;text-decoration:underline}.bar{position:relative;height:10px;border-radius:5px;background:var(--dupe-bg);overflow:hidden;margin:10px 0 6px}.bar-solid{position:absolute;left:0;top:0;bottom:0;background:var(--accent);transition:width .3s ease}.bar-estimate{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,var(--accent) 0 4px,transparent 4px 8px);opacity:.55;transition:width .3s ease,left .3s ease}.sync-progress .bar{height:8px}.cashback-card{border-top:1px solid var(--border);padding-top:16px;margin-top:16px}.cashback-card:first-of-type{border-top:none;margin-top:8px;padding-top:0}.cashback-total{display:flex;flex-direction:column;align-items:flex-end}.cashback-total strong{font-size:24px;color:var(--accent);font-variant-numeric:tabular-nums}.cashback-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:12px}@media(max-width:760px){.cashback-grid{grid-template-columns:1fr}}.cashback-grid h4{margin:0;font-size:15px;font-weight:600}.cashback-grid .big{font-size:24px;font-weight:600;margin:4px 0 0;font-variant-numeric:tabular-nums}.cashback-grid .muted{margin:0}.file-list{list-style:none;padding:0;margin:10px 0}.file-list li{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.file-list li.file-error .muted{color:var(--danger)}.file-list li.file-done .muted{color:var(--ok-text)}.password-row{display:flex;gap:8px}.password-row input{border:1px solid var(--border);border-radius:8px;padding:6px 10px;font:inherit;background:var(--surface);color:var(--text)}.badge.status-matched{background:var(--ok-bg);color:var(--ok-text)}.badge.status-statement_only{background:var(--dupe-bg);color:var(--dupe-text)}.badge.status-pending{background:var(--warn-bg);color:var(--warn-text)}.badge.status-not_on_statement{background:#fdeeef;color:var(--danger)}.badge.status-foreign_posted{background:var(--dupe-bg);color:var(--dupe-text)}@media(prefers-color-scheme:dark){.badge.status-not_on_statement{background:#3a1416}}
