@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap";:root{color:#20231f;font-synthesis:none;text-rendering:optimizelegibility;--ink:#20231f;--muted:#74776f;--paper:#fffef9;--canvas:#f4f1e9;--line:#e5e1d7;--accent:#234b3b;--accent-strong:#163a2c;--lime:#d9f99d;--coral:#f07052;--shadow:0 20px 50px #262b2214;background:#f4f1e9;font-family:DM Sans,Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--canvas);min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{color:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer;border:0}.app-shell{min-height:100vh}.sidebar{z-index:30;color:#eaf0e9;background:#1e2d27;flex-direction:column;width:248px;padding:28px 20px 22px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:11px;padding:0 8px 28px;display:flex}.brand-mark{color:#1d2a25;background:var(--lime);border-radius:12px;place-items:center;width:39px;height:39px;display:grid;transform:rotate(-3deg)}.brand strong,.brand span{display:block}.brand strong{letter-spacing:.08em;font-size:20px}.brand span{color:#92a49c;letter-spacing:.16em;text-transform:uppercase;margin-top:1px;font-size:10px}.new-entry{background:var(--lime);color:#1d2a25;border-radius:12px;justify-content:center;align-items:center;gap:9px;width:100%;padding:13px 16px;font-weight:700;transition:transform .18s,background .18s;display:flex}.new-entry:hover{background:#e4ffb0;transform:translateY(-1px)}.main-nav{gap:5px;margin-top:24px;display:grid}.main-nav a,.secondary-nav a{color:#aebbb5;border-radius:10px;align-items:center;gap:12px;padding:11px 13px;font-size:14px;font-weight:500;transition:background .18s,color .18s;display:flex}.main-nav a:hover,.secondary-nav a:hover{color:#fff;background:#ffffff0d}.main-nav a.active{color:#fff;background:#ffffff17}.main-nav a.active:after{content:"";background:var(--lime);border-radius:50%;width:5px;height:5px;margin-left:auto}.sidebar-spacer{flex:1;min-height:24px}.usage-card{background:#ffffff0b;border:1px solid #ffffff14;border-radius:13px;padding:15px}.usage-icon{width:29px;height:29px;color:var(--lime);background:#d9f99d21;border-radius:8px;place-items:center;margin-bottom:12px;display:grid}.usage-card strong{font-size:13px}.usage-card p{color:#97a79f;margin:4px 0 12px;font-size:12px}.usage-track{background:#ffffff17;border-radius:99px;height:4px;overflow:hidden}.usage-track span{border-radius:inherit;background:var(--lime);width:23%;height:100%;display:block}.secondary-nav{grid-template-columns:1fr 1fr;margin-top:12px;display:grid}.secondary-nav a{justify-content:center;gap:7px;padding:9px 3px;font-size:12px}.mobile-close,.mobile-menu,.mobile-nav,.sidebar-scrim{display:none}.main-content{min-width:0;margin-left:248px}.topbar{border-bottom:1px solid #494c431a;align-items:center;gap:12px;height:74px;padding:0 42px;display:flex}.search-box{color:#8c8e87;background:#ffffff8c;border:1px solid #0000;border-radius:10px;align-items:center;gap:9px;width:290px;padding:9px 13px;transition:border .18s,background .18s;display:flex}.search-box:focus-within{background:var(--paper);border-color:#cbd2c5}.search-box input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:13px}.search-box input::placeholder{color:#9c9e97}.icon-button{background:0 0;border-radius:10px;place-items:center;width:39px;height:39px;padding:0;transition:background .16s;display:grid}.icon-button:hover{background:#20231f0f}.notification{margin-left:auto;position:relative}.notification i{border:1px solid var(--canvas);background:var(--coral);border-radius:50%;width:6px;height:6px;position:absolute;top:8px;right:8px}.avatar{color:#4b4f48;background:#e0ded5;border-radius:50%;place-items:center;width:36px;height:36px;font-size:13px;font-weight:700;display:grid}.page{width:min(1320px,100%);margin:0 auto;padding:44px 42px 64px}.welcome-row{justify-content:space-between;align-items:flex-end;margin-bottom:30px;display:flex}.date-label{color:#8b8e86;letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:700}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.04em;margin:7px 0 5px;font-size:clamp(27px,3vw,37px);line-height:1.2}.welcome-row p{color:var(--muted);margin-bottom:0;font-size:14px}.outline-button{color:#545850;background:#ffffff6b;border:1px solid #d8d4ca;border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.outline-button:hover{background:var(--paper)}.capture-card{color:#f5f8f3;background:var(--accent);border-radius:21px;grid-template-columns:1.2fr .8fr;min-height:315px;display:grid;overflow:hidden;box-shadow:0 22px 54px #234b3b26}.capture-copy{flex-direction:column;justify-content:center;padding:46px 52px;display:flex;position:relative;overflow:hidden}.capture-copy:after{content:"";pointer-events:none;border:1px solid #d9f99d24;border-radius:50%;width:270px;height:270px;position:absolute;bottom:-130px;right:-90px;box-shadow:0 0 0 45px #d9f99d09,0 0 0 90px #d9f99d06}.eyebrow{color:#3f775f;letter-spacing:.03em;align-items:center;gap:6px;font-size:12px;font-weight:700;display:flex}.capture-copy .eyebrow{color:var(--lime)}.capture-copy h2{letter-spacing:-.045em;margin:13px 0 11px;font-size:clamp(27px,3vw,39px);line-height:1.12}.capture-copy>p{color:#c6d2cc;max-width:550px;margin-bottom:24px;font-size:14px;line-height:1.75}.capture-actions{align-items:center;gap:11px;display:flex}.primary-button{background:var(--lime);color:#1c2a24;border-radius:11px;justify-content:center;align-items:center;gap:9px;padding:12px 17px;font-weight:700;transition:transform .18s,background .18s,opacity .18s;display:inline-flex}.primary-button:hover:not(:disabled){background:#e4ffb0;transform:translateY(-1px)}.primary-button:disabled{cursor:not-allowed;opacity:.65}.ghost-button{color:#dfe8e3;background:0 0;align-items:center;gap:3px;padding:10px 6px;font-size:13px;font-weight:600;display:flex}.capture-trust{color:#aebeb6;align-items:center;gap:7px;margin-top:21px;font-size:11px;display:flex}.capture-trust svg:nth-of-type(2){margin-left:8px}.drop-zone{cursor:pointer;background:#ffffff0f;border:1px dashed #d9f99d6b;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:10px;margin:24px;transition:background .18s,border .18s,transform .18s;display:flex;position:relative}.drop-zone:hover,.drop-zone.dragging{border-color:var(--lime);background:#d9f99d1a;transform:scale(1.008)}.drop-zone strong{font-size:15px}.drop-zone>span{color:#aebeb6;font-size:11px}.upload-icon{width:54px;height:54px;color:var(--lime);background:#d9f99d1f;border-radius:16px;place-items:center;display:grid}.hidden-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.analysis-progress{flex-direction:column;align-items:center;gap:8px;display:flex}.analysis-progress>span{color:#aebeb6;font-size:11px}.scan-document{color:#ffffff8c;background:#ffffff0d;border:1px solid #d9f99d52;border-radius:10px;place-items:center;width:90px;height:104px;margin-bottom:6px;display:grid;position:relative;overflow:hidden}.scan-line{z-index:1;background:var(--lime);height:2px;box-shadow:0 0 13px var(--lime);border-radius:2px;animation:1.6s ease-in-out infinite scan;position:absolute;left:8px;right:8px}@keyframes scan{0%,to{top:12px}50%{top:89px}}.step-dots{gap:6px;margin-top:8px;display:flex}.step-dots i{background:#ffffff24;border-radius:99px;width:19px;height:3px;transition:background .25s}.step-dots i.done{background:var(--lime)}.error-banner{color:#a4422c;background:#fff4ef;border:1px solid #f2cabe;border-radius:11px;align-items:center;gap:10px;margin-top:14px;padding:12px 15px;font-size:13px;display:flex}.error-banner button{color:inherit;background:0 0;margin-left:auto;font-weight:700}.metrics-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:20px;display:grid}.metric-card{border:1px solid var(--line);background:#fffef9c7;border-radius:15px;min-height:137px;padding:20px 21px}.metric-top{color:var(--muted);justify-content:space-between;align-items:center;font-size:12px;font-weight:600;display:flex}.metric-top button,.panel-heading button{color:#979990;background:0 0;place-items:center;padding:4px;display:grid}.metric-icon{border-radius:9px;place-items:center;width:31px;height:31px;display:grid}.metric-icon.warm{color:#bd4a30;background:#fde9e2}.metric-icon.cool{color:#2e7159;background:#e3f4eb}.metric-card>strong{letter-spacing:-.035em;margin:10px 0 7px;font-size:25px;display:block}.metric-detail{align-items:center;gap:3px;font-size:11px;display:flex}.metric-detail.down,.metric-detail.up{color:#2f765a}.category-stat{align-items:center;gap:11px;margin-top:12px;display:flex}.category-stat strong,.category-stat span{display:block}.category-stat strong{font-size:15px}.category-stat span{color:#8c8f87;margin-top:3px;font-size:11px}.category-avatar{border-radius:12px;flex:none;place-items:center;width:40px;height:40px;font-size:13px;font-weight:700;display:grid}.category-avatar.coral,.dot.coral{color:#b84b32;background:#f9dfd6}.category-avatar.green,.dot.green{color:#39735d;background:#deeee4}.category-avatar.blue,.dot.blue{color:#436c99;background:#dfe9f5}.category-avatar.brown{color:#805f46;background:#eee3d8}.category-avatar.gray{color:#6b6e66;background:#e9e9e5}.lower-grid{grid-template-columns:minmax(0,1.55fr) minmax(270px,.65fr);gap:14px;margin-top:14px;display:grid}.panel{border:1px solid var(--line);background:#fffef9d1;border-radius:15px}.panel-heading{justify-content:space-between;align-items:center;padding:21px 22px 16px;display:flex}.panel-heading h2{letter-spacing:-.025em;margin-bottom:3px;font-size:17px}.panel-heading p{color:#90928b;margin-bottom:0;font-size:11px}.text-button{background:0 0;align-items:center;gap:3px;font-size:12px;font-weight:700;color:#506358!important;display:flex!important}.transaction-list{padding:0 10px 10px}.transaction-row{border-top:1px solid #ece9e1;grid-template-columns:42px minmax(120px,1fr) 85px 112px minmax(92px,auto) 24px;align-items:center;gap:10px;padding:12px;transition:background .16s;display:grid}.transaction-row:hover{background:#f8f6ef;border-radius:10px}.transaction-row .category-avatar{border-radius:10px;width:37px;height:37px}.transaction-name strong,.transaction-name span{display:block}.transaction-name strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.transaction-name span{color:#969890;margin-top:3px;font-size:10px}.transaction-source{color:#52715f;align-items:center;gap:4px;font-size:10px;font-weight:600;display:flex}.transaction-row time{color:#777a72;font-size:10px}.transaction-amount{text-align:right}.transaction-amount strong,.transaction-amount span{display:block}.transaction-amount strong{white-space:nowrap;font-size:12px}.transaction-amount span{color:#bd563d;margin-top:3px;font-size:9px}.row-action{color:#a3a59e;background:0 0;place-items:center;padding:3px;display:grid}.spending-panel{padding-bottom:18px}.donut-wrap{place-items:center;padding:9px 0 18px;display:grid}.donut{background:conic-gradient(#ed7659 0 32%, #5e9c7e 32% 59%, #6b91ba 59% 77%, #ddc8a9 77% 100%);border-radius:50%;place-items:center;width:148px;height:148px;display:grid}.donut:before{content:"";background:var(--paper);border-radius:50%;grid-area:1/1;width:103px;height:103px}.donut>div{z-index:1;text-align:center;grid-area:1/1}.donut span,.donut strong{display:block}.donut span{color:#92948d;font-size:10px}.donut strong{margin-top:3px;font-size:16px}.legend{grid-template-columns:1fr 1fr;gap:11px 18px;padding:0 24px;display:grid}.legend>div{grid-template-columns:8px 1fr auto;align-items:center;gap:7px;font-size:10px;display:grid}.legend span{color:#74776f}.legend strong{font-size:10px}.dot{border-radius:50%;width:7px;height:7px}.dot.tan{background:#ddc8a9}.review-backdrop{z-index:100;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#141d199e;place-items:center;padding:24px;animation:.2s fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.review-panel{background:#fbfaf5;border-radius:20px;flex-direction:column;width:min(1100px,100%);max-height:calc(100vh - 48px);animation:.25s rise-in;display:flex;overflow:hidden;box-shadow:0 32px 90px #05100b47}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)scale(.99)}}.review-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:24px 28px 19px;display:flex}.review-header h2{letter-spacing:-.035em;margin:5px 0 0;font-size:23px}.review-body{grid-template-columns:300px minmax(0,1fr);min-height:0;display:grid;overflow:auto}.receipt-preview{border-right:1px solid var(--line);background:#f1eee5;padding:22px}.receipt-preview img{object-fit:contain;filter:drop-shadow(0 8px 20px #28231921);border-radius:10px;width:100%;max-height:470px;display:block}.sample-receipt-art{color:#6a6d66;background:#fff;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:390px;display:flex;box-shadow:0 8px 22px #28231914}.sample-receipt-art strong{color:#3c403a;margin-top:9px}.sample-receipt-art span{color:#969990;font-size:11px}.ai-meta{color:#7a7d75;gap:6px;margin-top:15px;font-size:10px;display:grid}.ai-meta span:first-child{align-items:center;gap:6px;display:flex}.status-dot{background:#4e9a74;border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #4e9a741f}.receipt-form{padding:23px 26px 26px}.field-grid{grid-template-columns:repeat(2,1fr);gap:13px;display:grid}.field{gap:6px;display:grid;position:relative}.field>span{color:#777a72;font-size:10px;font-weight:700}.field input,.field select{width:100%;height:39px;color:var(--ink);background:#fffefb;border:1px solid #ddd9cf;border-radius:9px;outline:none;padding:0 11px;font-size:12px;transition:border .16s,box-shadow .16s}.field input:focus,.field select:focus{border-color:#73927f;box-shadow:0 0 0 3px #44715817}.field input[readonly]{color:#85877f;background:#f4f2ec}.field-wide{grid-column:1/-1}.select-field select{appearance:none;padding-right:30px}.select-field>svg{pointer-events:none;color:#7a7d75;position:absolute;bottom:11px;right:10px}.items-heading{justify-content:space-between;align-items:flex-end;margin-top:23px;padding-bottom:9px;display:flex}.items-heading h3{margin-bottom:3px;font-size:14px}.items-heading span{color:#92958d;font-size:10px}.line-items{border-top:1px solid var(--line)}.line-item{border-bottom:1px solid #ece9e1;grid-template-columns:27px minmax(120px,1fr) 80px 95px 25px;align-items:center;gap:8px;min-height:48px;display:grid}.line-number{color:#a6a8a1;font-variant-numeric:tabular-nums;font-size:9px}.line-item input{background:0 0;border:1px solid #0000;border-radius:7px;outline:none;min-width:0;font-size:11px}.line-item input:hover,.line-item input:focus{background:#fff;border-color:#ddd9cf}.item-name{width:100%;padding:7px;font-weight:600}.quantity-control{color:#82857d;align-items:center;font-size:10px;display:flex}.quantity-control input{text-align:right;width:45px;padding:6px}.money-input{color:#62665e;border-radius:7px;align-items:center;font-size:10px;display:flex}.money-input input{text-align:right;width:72px;padding:6px 5px;font-weight:600}.line-delete{color:#acafa7;opacity:0;background:0 0;place-items:center;padding:4px;transition:opacity .16s,color .16s;display:grid}.line-item:hover .line-delete{opacity:1}.line-delete:hover{color:#b84b32}.receipt-totals{grid-template-columns:1fr 190px;align-items:end;gap:26px;margin-top:18px;display:grid}.receipt-totals dl{margin:0}.receipt-totals dl>div{color:#777a72;justify-content:space-between;margin:7px 0;font-size:11px;display:flex}.receipt-totals dd{font-variant-numeric:tabular-nums;margin:0}.receipt-totals .discount{color:#3f7f63}.receipt-totals .grand-total{border-top:1px solid var(--line);color:var(--ink);align-items:baseline;margin-top:10px;padding-top:11px;font-weight:700}.receipt-totals .grand-total dd{letter-spacing:-.03em;font-size:21px}.inline-error{color:#a4422c;background:#fff0eb;border-radius:8px;align-items:center;gap:8px;margin-top:13px;padding:9px 11px;font-size:11px;display:flex}.review-footer{border-top:1px solid var(--line);background:#fffefb;justify-content:space-between;align-items:center;gap:20px;padding:15px 28px;display:flex}.review-footer p{color:#878a82;align-items:center;gap:7px;margin:0;font-size:10px;display:flex}.confirm-button{background:var(--accent);color:#fff;min-width:198px;padding:11px 16px}.confirm-button:hover:not(:disabled){background:var(--accent-strong)}.spin{animation:.85s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{z-index:200;color:#fff;box-shadow:var(--shadow);background:#1f332a;border-radius:10px;align-items:center;gap:8px;padding:11px 16px;font-size:12px;animation:.25s toast-in;display:flex;position:fixed;bottom:30px;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (width<=1100px){.sidebar{width:220px}.main-content{margin-left:220px}.page,.topbar{padding-left:28px;padding-right:28px}.capture-card{grid-template-columns:1fr .72fr}.capture-copy{padding:38px}.transaction-row{grid-template-columns:42px minmax(110px,1fr) 80px minmax(90px,auto) 24px}.transaction-row time{display:none}.review-body{grid-template-columns:240px minmax(0,1fr)}}@media (width<=860px){.sidebar{width:260px;transition:transform .22s;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-scrim{z-index:25;background:#10181473;display:block;position:fixed;inset:0}.mobile-close{color:#d9e0dc;background:0 0;border-radius:8px;place-items:center;padding:7px;display:grid;position:absolute;top:20px;right:15px}.main-content{margin-left:0}.mobile-menu{background:0 0;border-radius:9px;place-items:center;width:38px;height:38px;display:grid}.capture-card{grid-template-columns:1fr}.drop-zone{min-height:200px;margin-top:0}.metrics-grid{grid-template-columns:1fr 1fr}.category-card{display:none}.lower-grid{grid-template-columns:1fr}.spending-panel{display:none}.review-panel{max-height:calc(100vh - 24px)}.review-body{grid-template-columns:1fr}.receipt-preview{display:none}}@media (width<=600px){body{background:#f7f4ed}.topbar{height:64px;padding:0 17px}.search-box{flex:1;width:auto}.avatar{display:none}.page{padding:28px 17px 100px}.welcome-row{align-items:flex-start;margin-bottom:23px}.welcome-row h1{max-width:320px;font-size:28px}.welcome-row .outline-button{display:none}.capture-card{border-radius:17px;min-height:0}.capture-copy{padding:30px 24px 25px}.capture-copy h2{font-size:29px}.capture-copy>p{font-size:13px;line-height:1.65}.capture-trust{flex-wrap:wrap}.drop-zone{min-height:155px;margin:0 14px 14px}.metrics-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:13px}.metric-card{min-height:126px;padding:16px}.metric-card>strong{font-size:19px}.metric-detail{font-size:10px}.panel-heading{padding:19px 16px 13px}.transaction-list{padding:0 5px 7px}.transaction-row{grid-template-columns:39px minmax(0,1fr) minmax(90px,auto) 18px;gap:8px;padding:11px 9px}.transaction-source,.transaction-row time{display:none}.transaction-amount strong{font-size:11px}.mobile-nav{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffef9f0;border:1px solid #dcd9cfd9;border-radius:17px;grid-template-columns:repeat(5,1fr);align-items:center;height:65px;padding:5px 8px;display:grid;position:fixed;bottom:10px;left:10px;right:10px;box-shadow:0 12px 36px #232a2421}.mobile-nav a{color:#8c8f87;flex-direction:column;align-items:center;gap:3px;font-size:9px;display:flex}.mobile-nav a.active{color:var(--accent)}.mobile-nav button{background:var(--accent);color:#fff;border:4px solid #f7f4ed;border-radius:15px;place-items:center;width:46px;height:46px;margin:-18px auto 0;display:grid;box-shadow:0 7px 15px #234b3b3d}.review-backdrop{align-items:end;padding:0}.review-panel{border-radius:20px 20px 0 0;width:100%;max-height:94vh}.review-header{padding:20px 18px 15px}.review-header h2{font-size:20px}.receipt-form{padding:18px}.field-grid{grid-template-columns:1fr}.field-wide{grid-column:auto}.line-item{grid-template-columns:23px minmax(90px,1fr) 66px 76px;gap:3px}.line-delete{display:none}.money-input input{width:58px}.receipt-totals{grid-template-columns:1fr;gap:14px}.review-footer{padding:12px 18px max(12px, env(safe-area-inset-bottom))}.review-footer p{display:none}.confirm-button{width:100%}}
