@import url("https://fonts.googleapis.com/css2?family=Sora:wght@200;300;400;500;600;700&family=Geist:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap");:root{--bg:#fafaf7;--bg-2:#f2f0e9;--ink:#1a1a1a;--ink-2:#6b6b6b;--ink-3:#a1a1a1;--line:rgba(26,26,26,.08);--line-soft:rgba(26,26,26,.06);--line-strong:rgba(26,26,26,.16);--green:#2f6b3f;--amber:#b45309;--red:#991b1b;--blue:#1e3a5f}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--bg);color:var(--ink);font-family:Geist,-apple-system,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.app-shell{min-height:100vh;padding:40px 0 80px}.wrap{max-width:1240px;margin:0 auto;padding:0 40px}header.topbar{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:28px;margin-bottom:48px;border-bottom:1px solid var(--line)}.brand{font-family:Sora,sans-serif;font-size:22px;font-weight:600;letter-spacing:-.02em;cursor:pointer;text-decoration:none;color:var(--ink)}.brand span{font-weight:300;color:var(--ink-2);margin-left:2px}.topnav{display:flex;gap:32px;align-items:center}.topnav a{font:500 13px/1 Geist,sans-serif;color:var(--ink-2);text-decoration:none;letter-spacing:.01em;transition:color .15s;padding-bottom:25px;margin-bottom:-25px;cursor:pointer;background:transparent;border:0;border-bottom:1px solid transparent}.topnav a:hover{color:var(--ink)}.topnav a.active{color:var(--ink);border-bottom-color:var(--ink)}.topnav-logout{font:500 12px/1 Geist,sans-serif;color:var(--ink-3);background:transparent;border:0;cursor:pointer;padding:0;margin-left:16px}.topnav-logout:hover{color:var(--ink)}.kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin-bottom:14px}.kicker,.section-title{font-family:Sora,sans-serif;font-weight:500}.section-title{font-size:22px;letter-spacing:-.02em;margin-bottom:28px;display:flex;justify-content:space-between;align-items:baseline}.section-title span{font-weight:300;color:var(--ink-2)}.section-title .link{font:500 12px/1 Geist,sans-serif;color:var(--ink-2);text-decoration:none;letter-spacing:0;transition:color .15s}.section-title .link:hover{color:var(--ink)}.page-title{font-family:Sora,sans-serif;font-size:40px;font-weight:300;letter-spacing:-.03em;margin-bottom:8px}.page-title strong{font-weight:500}.page-sub{font-size:14px;color:var(--ink-2);margin-bottom:48px}a.btn,button.btn{font:500 13px/1 Geist,sans-serif;padding:10px 16px;cursor:pointer;display:inline-block;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--ink);transition:all .15s;text-decoration:none}a.btn:hover,button.btn:hover{border-color:var(--line-strong)}a.btn.primary,button.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}a.btn.primary:hover,button.btn.primary:hover{background:#000}button.btn:disabled{opacity:.5;cursor:not-allowed}.filter-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:56px;flex-wrap:wrap;gap:16px}.period-label{font-family:Sora,sans-serif;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}.period-label em{font-style:normal;font-weight:600;color:var(--ink);text-transform:none;letter-spacing:0;font-size:14px;margin-left:8px}.account-pills{display:flex;gap:6px;flex-wrap:wrap}.account-pills button{padding:7px 14px;font:500 12px/1 Geist,sans-serif;background:transparent;border:1px solid var(--line);border-radius:999px;color:var(--ink-2);cursor:pointer;transition:all .15s}.account-pills button:hover{border-color:var(--line-strong);color:var(--ink)}.account-pills button.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.hero{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-gap:60px;gap:60px;padding-bottom:56px;margin-bottom:56px;border-bottom:1px solid var(--line)}.hero-main .value{font-family:Sora,sans-serif;font-weight:300;font-size:88px;line-height:.95;letter-spacing:-.045em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hero-main .value .unit{font-size:28px;font-weight:400;vertical-align:top;margin-left:10px;color:var(--ink-3);letter-spacing:0}.hero-main .sub{margin-top:14px;font-size:13px;color:var(--ink-2)}.hero-main .sub .down{color:var(--green);font-weight:500}.hero-main .sub .up{color:var(--red);font-weight:500}.hero-stat .value{font-family:Sora,sans-serif;font-weight:400;font-size:42px;line-height:1;letter-spacing:-.03em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hero-stat .value .unit{font-size:16px;font-weight:400;vertical-align:top;margin-left:4px;color:var(--ink-3)}.hero-stat .sub{margin-top:10px;font-size:12px;color:var(--ink-2)}.main-grid{display:grid;grid-template-columns:1.5fr 1fr;grid-gap:56px;gap:56px}.txn-row{display:grid;grid-template-columns:64px 1fr auto auto;grid-gap:20px;gap:20px;padding:18px 0;align-items:center;border-top:1px solid var(--line-soft);transition:background .15s}.txn-row:hover{background:rgba(26,26,26,.02);margin:0 -12px;padding:18px 12px}.txn-date{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink-2);letter-spacing:.02em}.txn-name{font-size:14px;font-weight:500}.txn-sub{font-size:12px;margin-top:2px}.txn-cat,.txn-sub{color:var(--ink-2)}.txn-cat{font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--line);border-radius:4px;white-space:nowrap;background:transparent;cursor:pointer}.txn-cat.uncat{color:var(--amber);border-color:rgba(180,83,9,.25);background:rgba(180,83,9,.05)}.txn-amount{font-family:IBM Plex Mono,monospace;font-size:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}.txn-amount.income{color:var(--green)}.cat-row{padding:18px 0;border-top:1px solid var(--line-soft)}.cat-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.cat-name{font-size:13px;font-weight:500}.cat-amt{font-family:IBM Plex Mono,monospace;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cat-bar{height:2px;background:var(--line-soft);overflow:hidden}.cat-bar>div{height:100%;background:var(--ink);transition:width .3s}.cat-pct{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--ink-2);margin-top:8px}.txn-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px;background:var(--bg-2);border-radius:10px;margin-bottom:24px}.txn-search{flex:1 1;min-width:200px;padding:8px 14px;border:1px solid transparent;background:var(--bg);border-radius:6px;font:400 13px/1.4 Geist,sans-serif;color:var(--ink);outline:none;transition:border-color .15s}.txn-search:focus{border-color:var(--line-strong)}.txn-search::placeholder{color:var(--ink-3)}.txn-dropdown{padding:8px 14px;background:var(--bg);border:1px solid transparent;border-radius:6px;font:500 12px/1 Geist,sans-serif;color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:8px}.txn-dropdown:hover{border-color:var(--line-strong)}.ai-banner{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;margin-bottom:24px;background:rgba(30,58,95,.04);border:1px solid rgba(30,58,95,.12);border-radius:8px;flex-wrap:wrap;gap:12px}.ai-banner-text{font-size:13px;color:var(--ink)}.ai-banner-text strong{color:var(--blue);font-weight:600}.ai-banner-text .mono{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink-2);margin-left:8px}.ai-banner-action{font:500 12px/1 Geist,sans-serif;padding:7px 14px;background:var(--blue);color:#fff;border:0;border-radius:6px;cursor:pointer}.ai-banner-action:hover{background:#152a47}.txn-table-header{display:grid;grid-template-columns:64px 1fr 180px 140px 140px;grid-gap:20px;gap:20px;padding:0 0 14px;border-bottom:1px solid var(--line);font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.txn-table-header .right{text-align:right}.txn-full-row{display:grid;grid-template-columns:64px 1fr 180px 140px 140px;grid-gap:20px;gap:20px;padding:16px 0;align-items:center;border-bottom:1px solid var(--line-soft);transition:background .15s}.txn-full-row:hover{background:rgba(26,26,26,.02);margin:0 -12px;padding:16px 12px}.txn-full-account{font-size:12px;color:var(--ink-2)}.txn-full-amt{text-align:right;font-family:IBM Plex Mono,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:32px}.pagination .info{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink-2)}.pagination .pages{display:flex;gap:6px}.pagination .pages button{min-width:32px;height:32px;background:transparent;border:1px solid var(--line);border-radius:6px;cursor:pointer;font:500 12px/1 Geist,sans-serif;color:var(--ink-2);padding:0 10px}.pagination .pages button:hover:not(:disabled){border-color:var(--line-strong);color:var(--ink)}.pagination .pages button.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.pagination .pages button:disabled{opacity:.4;cursor:not-allowed}.cat-summary{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:32px;gap:32px;padding-bottom:40px;margin-bottom:40px;border-bottom:1px solid var(--line)}.cat-summary .val{font-family:Sora,sans-serif;font-weight:400;font-size:36px;letter-spacing:-.03em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cat-summary .val .unit{font-size:14px;font-weight:400;color:var(--ink-3);margin-left:4px;vertical-align:top}.cat-summary .sub{font-size:12px;color:var(--ink-2);margin-top:8px}.cat-list-full{border-top:1px solid var(--line)}.cat-full-row{display:grid;grid-template-columns:32px 1fr 120px 120px 140px 60px;grid-gap:20px;gap:20px;padding:20px 0;align-items:center;border-bottom:1px solid var(--line-soft);cursor:pointer;transition:background .15s}.cat-full-row:hover{background:rgba(26,26,26,.02);margin:0 -12px;padding:20px 12px}.cat-dot{width:10px;height:10px;border-radius:3px;background:var(--ink)}.cat-full-name{font-size:14px;font-weight:500}.cat-full-desc{font-size:12px;color:var(--ink-2);margin-top:2px}.cat-full-rules,.cat-full-txn{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cat-full-month{text-align:right;font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cat-full-month .trend{display:block;font-size:11px;font-weight:400;margin-top:2px;font-family:Geist,sans-serif}.trend.up{color:var(--red)}.trend.down{color:var(--green)}.cat-chev,.trend.flat{color:var(--ink-3)}.cat-chev{text-align:right}.cat-rules-expand{padding:28px 32px;background:var(--bg-2);border-radius:12px;margin:16px 0 24px}.cat-rules-title{font-family:Sora,sans-serif;font-weight:500;font-size:14px;margin-bottom:16px;justify-content:space-between}.cat-rule,.cat-rules-title{display:flex;align-items:center}.cat-rule{gap:12px;padding:10px 0;font-size:13px;border-top:1px solid var(--line-soft)}.cat-rule:first-of-type{border-top:0;padding-top:0}.cat-rule-match{font-size:12px;padding:3px 8px;background:var(--bg);border-radius:4px;color:var(--ink)}.cat-rule-count,.cat-rule-match{font-family:IBM Plex Mono,monospace}.cat-rule-count{margin-left:auto;font-size:11px;color:var(--ink-2)}.cat-rule-delete{background:transparent;border:0;color:var(--ink-3);cursor:pointer;font-size:14px;padding:4px}.cat-rule-delete:hover{color:var(--red)}.accounts-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:20px;gap:20px}.account-card{padding:28px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:all .15s;cursor:pointer}.account-card:hover{border-color:var(--line-strong);transform:translateY(-2px)}.account-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.account-type{font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.account-currency{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--ink-2);padding:4px 8px;background:var(--bg-2);border-radius:4px}.account-name{font-family:Sora,sans-serif;font-size:20px;font-weight:500;letter-spacing:-.02em;margin-bottom:6px}.account-provider{font-size:12px;color:var(--ink-2);margin-bottom:28px}.account-stat-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;padding-top:20px;border-top:1px solid var(--line-soft)}.account-stat-label{font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}.account-stat-val{font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.account-card.add{background:transparent;border-style:dashed;display:flex;align-items:center;justify-content:center;min-height:240px;color:var(--ink-2)}.account-card.add:hover{color:var(--ink);border-color:var(--ink)}.account-card.add .plus{font-family:Sora,sans-serif;font-size:32px;font-weight:300;margin-bottom:8px}.account-card.add .label{font:500 13px/1 Geist,sans-serif}.upload-zone{padding:64px 40px;border:2px dashed var(--line-strong);border-radius:16px;text-align:center;background:#fff;transition:all .15s;cursor:pointer;margin-bottom:40px}.upload-zone.drag,.upload-zone:hover{border-color:var(--ink);background:var(--bg-2)}.upload-zone input[type=file]{display:none}.upload-title{font-family:Sora,sans-serif;font-size:22px;font-weight:400;letter-spacing:-.02em;margin-bottom:8px}.upload-sub{font-size:13px;color:var(--ink-2);margin-bottom:24px}.upload-formats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.upload-format{font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;padding:5px 10px;background:var(--bg-2);border-radius:4px;color:var(--ink-2)}.import-config{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;padding:24px;background:var(--bg-2);border-radius:12px;margin-bottom:48px}.import-field-label{font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:8px}.import-field-select{width:100%;padding:10px 14px;background:#fff;border:1px solid var(--line);border-radius:6px;font:500 13px/1 Geist,sans-serif;color:var(--ink);cursor:pointer}.import-history .hist-row{display:grid;grid-template-columns:80px 1fr 160px 110px 100px 40px;grid-gap:20px;gap:20px;padding:18px 0;align-items:center;border-top:1px solid var(--line-soft)}.hist-date{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--ink-2)}.hist-file{font-size:14px;font-weight:500}.hist-file-sub{font-size:12px;color:var(--ink-2);margin-top:2px}.hist-account{font-size:13px;color:var(--ink-2)}.hist-status{display:inline-flex;align-items:center;gap:6px;font-family:Sora,sans-serif;font-size:11px;font-weight:500;letter-spacing:.06em}.status-dot{width:7px;height:7px;border-radius:50%}.hist-status.done .status-dot{background:var(--green)}.hist-status.done{color:var(--green)}.hist-status.processing .status-dot{background:var(--amber);animation:pulse 1.2s ease-in-out infinite}.hist-status.processing{color:var(--amber)}.hist-status.review .status-dot{background:var(--blue)}.hist-status.review{color:var(--blue)}.hist-status.failed .status-dot{background:var(--red)}.hist-status.failed{color:var(--red)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.hist-count{font-family:IBM Plex Mono,monospace;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.hist-count .sub{display:block;font-size:11px;color:var(--ink-2);margin-top:2px}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 24px}.login-card{width:100%;max-width:400px;padding:48px 40px;background:#fff;border:1px solid var(--line);border-radius:16px}.login-brand{font-family:Sora,sans-serif;font-size:24px;font-weight:600;letter-spacing:-.02em;text-align:center;margin-bottom:4px}.login-brand span{font-weight:300;color:var(--ink-2)}.login-sub{text-align:center;font-size:13px;color:var(--ink-2);margin-bottom:40px}.form-label{display:block;font-family:Sora,sans-serif;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:8px}.form-input{width:100%;padding:12px 14px;border:1px solid var(--line);background:var(--bg);border-radius:6px;font:400 14px/1.4 Geist,sans-serif;color:var(--ink);outline:none;transition:border-color .15s}.form-input:focus{border-color:var(--ink)}.form-input.otp{font-family:IBM Plex Mono,monospace;font-size:22px;letter-spacing:.4em;text-align:center;padding:14px}.form-group{margin-bottom:20px}.form-submit{width:100%;padding:12px 16px;background:var(--ink);color:var(--bg);border:0;border-radius:6px;font:500 13px/1 Geist,sans-serif;cursor:pointer;margin-top:12px;transition:background .15s}.form-submit:hover{background:#000}.form-submit:disabled{opacity:.5;cursor:not-allowed}.form-error{padding:10px 14px;background:rgba(153,27,27,.06);border:1px solid rgba(153,27,27,.2);border-radius:6px;color:var(--red);font-size:13px;margin-bottom:20px}.form-hint{font-size:12px;margin-top:14px}.empty-state,.form-hint{color:var(--ink-2);text-align:center}.empty-state{padding:60px 40px;font-size:14px}.empty-state h3{font-family:Sora,sans-serif;font-size:20px;font-weight:400;color:var(--ink);margin-bottom:8px}.loading{padding:40px;text-align:center;color:var(--ink-2);font-size:13px}@media (max-width:900px){.wrap{padding:0 24px}.topnav{gap:20px}.topnav a{font-size:12px}.hero{grid-template-columns:1fr;gap:32px}.hero-main .value{font-size:64px}.main-grid{grid-template-columns:1fr;gap:40px}.filter-row{flex-direction:column;align-items:flex-start}.accounts-grid,.cat-summary,.import-config{grid-template-columns:1fr}.cat-summary{gap:20px}.txn-table-header{display:none}.txn-full-row{grid-template-columns:1fr;gap:8px}.cat-full-row{grid-template-columns:24px 1fr auto}.cat-full-row .cat-chev,.cat-full-row .cat-full-rules,.cat-full-row .cat-full-txn{display:none}}