@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", system-ui, sans-serif;--r-card:24px;--r-input:16px;--r-pill:999px;--ease:cubic-bezier(.16, 1, .3, 1);--spring:cubic-bezier(.34, 1.4, .64, 1);--t-fast:.15s;--t-med:.28s;--sidebar-w:260px;--z-nav:20;--z-sheet:40;--z-lock:90;--z-toast:100;--bg:#fff3f6;--bg-2:#ffe8ee;--surface:#fff;--surface-2:#fff7f9;--surface-3:#fde4eb;--line:#781c3c14;--line-2:#781c3c26;--text:#2b1520;--text-2:#5f4a54;--text-3:#7a6470;--accent:#d93463;--accent-2:#ff6f93;--accent-ink:#fff;--accent-soft:#ffe0e8;--pos:#18794e;--pos-soft:#ddf3e7;--neg:#c62f42;--neg-soft:#ffe1e4;--warn:#9a5b00;--warn-soft:#fff0cc;--hero-1:#ffe6ed;--hero-2:#ffb3c6;--hero-3:#ff7fa0;--p-blue:#93b0ff;--p-blue-bg:#dfe8ff;--p-lilac:#b9a2f5;--p-lilac-bg:#ece5ff;--p-mint:#7fd3a8;--p-mint-bg:#dcf5e8;--p-peach:#ffb08a;--p-peach-bg:#ffe8dc;--shadow:0 1px 2px #781c3c0a, 0 14px 34px -22px #d9346373;--shadow-lg:0 24px 60px -30px #d934638c;--scrim:#2b152061;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#1b1015;--bg-2:#22141b;--surface:#2a1921;--surface-2:#311e27;--surface-3:#3d2630;--line:#ffdce814;--line-2:#ffdce826;--text:#fbecf1;--text-2:#d9bfca;--text-3:#b39aa6;--accent:#ff6f93;--accent-2:#ff6f93;--accent-ink:#2b0a16;--accent-soft:#ff6f9329;--pos:#6fd6a0;--pos-soft:#6fd6a024;--neg:#ff8a96;--neg-soft:#ff8a9624;--warn:#ffc966;--warn-soft:#ffc96624;--hero-1:#3a1f2a;--hero-2:#5c2a3d;--hero-3:#8a3554;--p-blue:#9bb7ff;--p-blue-bg:#24304f;--p-lilac:#c3b0ff;--p-lilac-bg:#2f2550;--p-mint:#86dcb0;--p-mint-bg:#1c3a2c;--p-peach:#ffb894;--p-peach-bg:#45291d;--shadow:0 1px 0 #ffffff08 inset, 0 16px 34px -22px #000000b3;--shadow-lg:0 24px 60px -30px #000c;--scrim:#0a040799;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-feature-settings:"tnum" 1;margin:0;font-size:15px;font-weight:450;line-height:1.5;overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}a{color:inherit;-webkit-tap-highlight-color:transparent}img{max-width:100%;display:block}:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px;border-radius:10px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:200;background:var(--accent);color:var(--accent-ink);border-radius:var(--r-pill);padding:8px 14px;font-weight:700;position:absolute;top:8px;left:-999px}.skip:focus{left:12px}.display{letter-spacing:-.03em;font-weight:800;line-height:1.05}.h1{letter-spacing:-.025em;text-wrap:balance;margin:0;font-size:clamp(26px,3.6vw,34px);font-weight:800;line-height:1.12}.h2{letter-spacing:-.015em;margin:0;font-size:18px;font-weight:800}.h3{margin:0;font-size:15.5px;font-weight:750}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:13.5px}.tiny{font-size:12px}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.pos{color:var(--pos)}.neg{color:var(--neg)}.accent{color:var(--accent)}.italic{color:var(--accent);font-style:normal}.money-big{letter-spacing:-.04em;padding-bottom:2px;font-size:clamp(38px,7vw,54px);font-weight:800;line-height:1.05}.money-big .cur{color:var(--text-2);vertical-align:.7em;letter-spacing:0;margin-right:.3em;font-size:.42em;font-weight:700}.app{grid-template-columns:minmax(0,1fr);min-height:100dvh;display:grid}@media (min-width:1024px){.app{grid-template-columns:var(--sidebar-w) minmax(0, 1fr)}}.sidebar{display:none}@media (min-width:1024px){.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:20px;height:100dvh;padding:26px 16px 20px;display:flex;position:sticky;top:0;overflow-y:auto}}.brand{align-items:center;gap:12px;padding:0 8px;text-decoration:none;display:flex}.brand-mark{background:linear-gradient(150deg, var(--accent-2), var(--accent));color:#fff;letter-spacing:-.03em;width:40px;height:40px;box-shadow:0 8px 18px -10px var(--accent);border-radius:14px;flex:none;place-items:center;font-size:20px;font-weight:800;display:grid}.brand-name{letter-spacing:-.02em;font-size:19px;font-weight:800;line-height:1}.brand-name small{color:var(--text-3);letter-spacing:0;margin-top:4px;font-size:12px;font-weight:600;display:block}.nav{flex-direction:column;gap:2px;display:flex}.nav-group{color:var(--text-3);padding:14px 12px 6px;font-size:12px;font-weight:700}.nav a{color:var(--text-2);transition:background var(--t-fast), color var(--t-fast);border-radius:14px;align-items:center;gap:12px;padding:10px 12px;font-size:14.5px;font-weight:650;text-decoration:none;display:flex}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.nav .badge{margin-left:auto}.sidebar-foot{flex-direction:column;gap:10px;margin-top:auto;display:flex}.main{min-width:0;padding-bottom:calc(104px + env(safe-area-inset-bottom))}@media (min-width:1024px){.main{padding-bottom:48px}}.topbar{z-index:var(--z-nav);padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(16px)saturate(150%);align-items:center;gap:10px;display:flex;position:sticky;top:0}.topbar.on-hero{background:color-mix(in srgb, var(--hero-1) 92%, transparent)}@media (min-width:768px){.topbar.on-hero{background:color-mix(in srgb, var(--bg) 86%, transparent)}}@media (min-width:1024px){.topbar{padding:16px 40px}}.topbar .brand{padding:0}@media (min-width:1024px){.topbar .brand{display:none}}.topbar-spacer{flex:1}.avatar{background:linear-gradient(150deg, var(--p-lilac-bg), var(--accent-soft));width:40px;height:40px;color:var(--accent);border:2px solid var(--surface);border-radius:50%;flex:none;place-items:center;font-weight:800;text-decoration:none;display:grid;position:relative}.page{flex-direction:column;gap:20px;max-width:1180px;margin:0 auto;padding:18px 16px 0;display:flex}@media (min-width:768px){.page{gap:24px;padding:28px 28px 0}}@media (min-width:1024px){.page{padding:28px 40px 0}}.page-head{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.page-head>div:first-child{flex:1;min-width:220px}.page-head p{color:var(--text-2);max-width:60ch;margin:6px 0 0}.space-switch{border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--shadow);padding:4px;display:inline-flex}.space-switch button{border-radius:var(--r-pill);color:var(--text-2);min-height:34px;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:0;align-items:center;gap:6px;padding:7px 13px;font-size:13px;font-weight:700;display:inline-flex}.space-switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}@media (max-width:420px){.space-switch button{padding:7px 10px}.space-switch svg{display:none}}.hero{isolation:isolate;background:radial-gradient(130% 90% at 110% -10%, #ffffff80 0 38%, transparent 38.5%), linear-gradient(180deg, var(--hero-1) 0%, var(--hero-2) 62%, var(--hero-3) 100%);text-align:center;border-radius:0 0 50% 50%/0 0 44px 44px;margin:-18px -16px 0;padding:6px 16px 46px;position:relative;overflow:hidden}[data-theme=dark] .hero{background:radial-gradient(130% 90% at 110% -10%, #ffffff0f 0 38%, transparent 38.5%), linear-gradient(180deg, var(--hero-1), var(--hero-2) 62%, var(--hero-3))}@media (min-width:768px){.hero{box-shadow:var(--shadow-lg);border-radius:32px;margin:0;padding:22px 28px 40px}}.hero-date{margin:2px 0 12px;font-size:17px;font-weight:750}.week{grid-template-columns:repeat(7,1fr);gap:4px;max-width:460px;margin:0 auto;display:grid}.week .dlabel{color:var(--text-2);margin-bottom:6px;font-size:11.5px;font-weight:750}.week .dlabel.today{color:var(--text)}.week button{width:44px;height:44px;color:var(--text);transition:transform var(--t-fast) var(--spring), background var(--t-fast);background:0 0;border:0;border-radius:50%;place-items:center;margin:0 auto;font-size:16px;font-weight:750;display:grid}.week button:active{transform:scale(.92)}.week button.has{background:var(--accent-2);color:#fff}[data-theme=dark] .week button.has{color:#2b0a16}.week button.today{box-shadow:0 0 0 4px #fff}[data-theme=dark] .week button.today{box-shadow:0 0 0 4px var(--surface-3)}.week button[aria-pressed=true]{background:var(--accent);color:#fff;transform:scale(1.08)}.week button.future{color:var(--text-3)}.hero-label{margin-top:28px;font-size:17px;font-weight:750}.hero-amount{letter-spacing:-.045em;margin:4px 0;font-size:clamp(40px,11vw,60px);font-weight:800;line-height:1.05}.hero-amount .cur{letter-spacing:0;vertical-align:.75em;color:var(--text-2);margin-right:.25em;font-size:.42em;font-weight:750}.hero-sub{color:var(--text-2);font-size:13.5px;font-weight:650}.hero-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px;display:flex}.pill-white{border-radius:var(--r-pill);background:var(--surface);min-height:46px;color:var(--accent);transition:transform var(--t-fast) var(--spring);border:0;align-items:center;gap:8px;padding:0 22px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex;box-shadow:0 10px 22px -14px #78143299}.pill-white:active{transform:scale(.97)}.pill-ghost{background:color-mix(in srgb, var(--surface) 50%, transparent);color:var(--text);box-shadow:none}.section-title{align-items:baseline;gap:8px;margin:4px 0 -6px;display:flex}.section-title .h2{font-size:19px}.insights{scroll-snap-type:x mandatory;scrollbar-width:none;grid-auto-columns:148px;grid-auto-flow:column;gap:12px;margin:0 -16px;padding:4px 16px 10px;scroll-padding-inline:16px;display:grid;overflow-x:auto}.insights::-webkit-scrollbar{display:none}@media (min-width:768px){.insights{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:row;margin:0;padding:4px 0 0;overflow:visible}}.insight{scroll-snap-align:start;text-align:center;height:172px;color:var(--text);background:var(--surface);box-shadow:var(--shadow);transition:transform var(--t-fast) var(--spring);border:0;border-radius:22px;flex-direction:column;align-items:center;padding:14px;text-decoration:none;display:flex;position:relative;overflow:hidden}.insight:active{transform:scale(.97)}.insight .t{z-index:1;font-size:14.5px;font-weight:750;line-height:1.25;position:relative}.insight .big{letter-spacing:-.03em;z-index:1;margin-top:auto;font-size:24px;font-weight:800;position:relative}.insight .sub{color:var(--text-2);z-index:1;font-size:12px;font-weight:650;position:relative}.insight.blue{background:var(--p-blue-bg)}.insight.blue:after{content:"";background:var(--surface);border-radius:50%;height:95%;position:absolute;bottom:-52%;left:-20%;right:-20%}.insight.lilac{background:var(--p-lilac-bg)}.insight.peach{background:var(--p-peach-bg)}.insight.mint{background:var(--p-mint-bg)}.insight.selected{box-shadow:0 0 0 2.5px var(--accent), var(--shadow)}.insight .plus{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:48px;height:48px;margin-top:auto;display:grid}.drop{background:color-mix(in srgb, var(--surface) 88%, transparent);border-radius:50% 50% 50% 0;place-items:center;width:92px;height:92px;margin-top:auto;display:grid;transform:rotate(-45deg)}.drop>span{letter-spacing:-.03em;font-size:25px;font-weight:800;transform:rotate(45deg)}.insight .ico-chip{background:var(--surface);width:44px;height:44px;color:var(--accent);z-index:1;border-radius:50%;place-items:center;margin:auto 0 6px;display:grid;position:relative}.card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);border:0;padding:20px}.card.flush{padding:0;overflow:hidden}.card.tint{background:var(--surface-2);box-shadow:none}.card-head{align-items:center;gap:12px;margin-bottom:14px;display:flex}.card-head .h2{flex:1}.card-head a.link,.card-head button.link{font-size:13.5px}.vault{isolation:isolate;background:linear-gradient(160deg, var(--hero-1), var(--surface) 70%);box-shadow:var(--shadow);color:var(--text);text-align:left;border:0;border-radius:28px;padding:24px 22px 20px;position:relative;overflow:hidden}.vault:after{content:"";background:var(--accent-soft);z-index:-1;border-radius:50%;width:220px;height:220px;position:absolute;top:-80px;right:-60px}.vault-label{color:var(--text-2);align-items:center;gap:8px;font-size:13.5px;font-weight:700;display:flex}.vault-row{border-top:1px dashed var(--line-2);flex-wrap:wrap;gap:22px;margin-top:16px;padding-top:14px;display:flex}.vault-row>div{min-width:110px}.vault-row .k{color:var(--text-3);font-size:12.5px;font-weight:700}.vault-row .v{margin-top:2px;font-size:17px;font-weight:800}.grid-dash{grid-template-columns:minmax(0,1fr);gap:18px;display:grid}@media (min-width:900px){.grid-dash{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:22px}}.stack{flex-direction:column;gap:18px;display:flex}.row{align-items:center;gap:12px;display:flex}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.cols-2{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}@media (min-width:640px){.cols-2{grid-template-columns:1fr 1fr}}.cols-3{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}@media (min-width:720px){.cols-3{grid-template-columns:repeat(2,1fr)}}@media (min-width:1100px){.cols-3{grid-template-columns:repeat(3,1fr)}}.btn{border-radius:var(--r-pill);background:var(--surface);min-height:46px;color:var(--text);box-shadow:var(--shadow);white-space:nowrap;transition:transform var(--t-fast) var(--spring), background var(--t-fast);border:0;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:14.5px;font-weight:750;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.97)}.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 12px 24px -14px var(--accent)}.btn.primary:hover{background:color-mix(in srgb, var(--accent) 90%, #000)}.btn.ghost{box-shadow:none;background:0 0}.btn.ghost:hover{background:var(--accent-soft)}.btn.danger{color:var(--neg);background:var(--neg-soft);box-shadow:none}.btn.sm{min-height:38px;padding:0 15px;font-size:13.5px}.btn.block{width:100%}.icon-btn{background:var(--surface);width:44px;height:44px;color:var(--text-2);box-shadow:var(--shadow);transition:color var(--t-fast), transform var(--t-fast) var(--spring);border:0;border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.icon-btn:hover{color:var(--text)}.icon-btn:active{transform:scale(.93)}.icon-btn[disabled]{opacity:.4}.icon-btn .dot{background:var(--accent);color:#fff;border:2px solid var(--bg);border-radius:10px;place-items:center;min-width:19px;height:19px;padding:0 5px;font-size:11px;font-weight:800;display:grid;position:absolute;top:-2px;right:-2px}.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:750;text-decoration:none}.link:hover{text-underline-offset:3px;text-decoration:underline}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border-radius:var(--r-pill);border:1.5px solid var(--line-2);background:var(--surface);min-height:38px;color:var(--text-2);transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:700;display:inline-flex}.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.badge{border-radius:var(--r-pill);background:var(--surface-3);color:var(--text-2);align-items:center;gap:4px;padding:3px 10px;font-size:11.5px;font-weight:800;display:inline-flex}.badge.neg{background:var(--neg-soft);color:var(--neg)}.badge.pos{background:var(--pos-soft);color:var(--pos)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.list{margin:0;padding:0;list-style:none}.list>li+li{border-top:1px solid var(--line)}.item{text-align:left;width:100%;color:inherit;background:0 0;border:0;border-radius:16px;align-items:center;gap:14px;padding:12px 4px;text-decoration:none;display:flex}button.item:hover,a.item:hover{background:var(--surface-2)}.card.flush .item{border-radius:0;padding:13px 18px}.item .title{text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:750;overflow:hidden}.item .sub{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:550;overflow:hidden}.item .amt{text-align:right;font-size:14.5px;font-weight:800}.cat-ico{background:color-mix(in srgb, var(--c,var(--accent)) 20%, var(--surface));width:42px;height:42px;color:color-mix(in srgb, var(--c,var(--accent)) 75%, var(--text));border-radius:50%;flex:none;place-items:center;display:grid}.day-head{color:var(--text-3);justify-content:space-between;padding:18px 18px 6px;font-size:13px;font-weight:750;display:flex}.bar{background:var(--surface-3);border-radius:8px;height:8px;overflow:hidden}.bar>i{background:var(--accent-2);height:100%;transition:width var(--t-med) var(--ease);border-radius:8px;display:block}.bar.pos>i{background:var(--p-mint)}.bar.neg>i{background:var(--neg)}.field{flex-direction:column;gap:7px;display:flex}.field>label,.label{color:var(--text-2);font-size:13.5px;font-weight:750}.help{color:var(--text-3);font-size:12.5px;font-weight:550}.err{color:var(--neg);font-size:13px;font-weight:700}.input,select.input,textarea.input{border-radius:var(--r-input);border:1.5px solid var(--line-2);background:var(--surface-2);width:100%;min-height:48px;color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);padding:11px 15px;font-size:16px;font-weight:550}textarea.input{resize:vertical;min-height:84px}.input::placeholder{color:var(--text-3);font-weight:500}.input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.input.warn{background:var(--warn-soft);border-color:#e7a33a}.amount-input{text-align:center;letter-spacing:-.03em;min-height:72px;font-size:36px;font-weight:800}.seg{background:var(--surface-3);border-radius:18px;grid-auto-columns:1fr;grid-auto-flow:column;padding:4px;display:grid}.seg button{min-height:40px;color:var(--text-2);transition:background var(--t-fast), color var(--t-fast);background:0 0;border:0;border-radius:14px;font-size:13.5px;font-weight:750}.seg button[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:0 4px 12px -8px #78143280}.form{flex-direction:column;gap:16px;display:flex}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;padding-top:4px;display:flex}.check{align-items:center;gap:10px;min-height:42px;font-size:14px;font-weight:650;display:flex}.check input{width:22px;height:22px;accent-color:var(--accent);flex:none}.sheet-scrim{z-index:var(--z-sheet);background:var(--scrim);animation:fade var(--t-med) var(--ease);justify-content:center;align-items:flex-end;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}@media (min-width:720px){.sheet-scrim{align-items:center;padding:24px}}.sheet{overscroll-behavior:contain;background:var(--surface);width:100%;max-width:560px;max-height:calc(100dvh - 24px);padding:10px 20px calc(22px + env(safe-area-inset-bottom));animation:rise var(--t-med) var(--ease);box-shadow:var(--shadow-lg);border-radius:30px 30px 0 0;overflow:auto}.sheet.wide{max-width:800px}@media (min-width:720px){.sheet{border-radius:28px;padding:22px 26px 24px}}.sheet-grip{background:var(--line-2);border-radius:5px;width:42px;height:5px;margin:0 auto 14px}@media (min-width:720px){.sheet-grip{display:none}}.sheet-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.sheet-head .h2{flex:1;font-size:22px}.sheet .icon-btn{box-shadow:none;background:var(--surface-3)}.toasts{left:50%;bottom:calc(100px + env(safe-area-inset-bottom));z-index:var(--z-toast);flex-direction:column;gap:8px;width:min(440px,100% - 24px);display:flex;position:fixed;transform:translate(-50%)}@media (min-width:1024px){.toasts{bottom:28px}}.toast{background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);animation:rise var(--t-med) var(--ease);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;padding:13px 18px;font-size:14px;font-weight:650;display:flex}.toast .link{color:var(--bg);text-decoration:underline}.reminder{background:var(--surface-2);color:inherit;transition:background var(--t-fast);border-radius:18px;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;display:flex}.reminder:hover{background:var(--surface-3)}.reminder .ico{border-radius:50%;flex:none;place-items:center;width:38px;height:38px;display:grid}.reminder.overdue .ico{background:var(--neg-soft);color:var(--neg)}.reminder.today .ico,.reminder.soon .ico{background:var(--warn-soft);color:var(--warn)}.reminder.info .ico{background:var(--p-lilac-bg);color:var(--text-2)}.reminder .t{font-size:14px;font-weight:750}.reminder .d{color:var(--text-2);font-size:12.5px;font-weight:550}.notice{background:var(--accent-soft);border-radius:18px;align-items:flex-start;gap:12px;padding:14px 16px;font-size:13.5px;font-weight:550;display:flex}.notice svg{color:var(--accent);flex:none;margin-top:2px}.empty{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:34px 20px;display:flex}.empty .ico{background:var(--accent-soft);width:64px;height:64px;color:var(--accent);border-radius:50%;place-items:center;margin-bottom:4px;display:grid}.empty p{color:var(--text-2);max-width:40ch;margin:0;font-size:14px}.skel{background:linear-gradient(90deg, var(--surface-2), var(--surface-3), var(--surface-2));background-size:200% 100%;border-radius:18px;animation:1.4s linear infinite shimmer}.chart{max-width:100%;display:block;overflow:visible}.chart text{fill:var(--text-3);font-size:11px;font-family:var(--font);font-weight:700}.legend{color:var(--text-2);flex-wrap:wrap;gap:16px;font-size:12.5px;font-weight:650;display:flex}.legend i{vertical-align:-1px;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.dropzone{text-align:center;border:2px dashed color-mix(in srgb, var(--accent) 35%, transparent);background:linear-gradient(180deg, var(--hero-1), var(--surface));min-height:320px;transition:border-color var(--t-fast);border-radius:30px;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:28px;display:flex}.dropzone.over{border-color:var(--accent)}.dropzone .ico{background:var(--accent);color:#fff;width:84px;height:84px;box-shadow:0 16px 30px -16px var(--accent);border-radius:50%;place-items:center;display:grid}.scan-grid{grid-template-columns:minmax(0,1fr);gap:20px;display:grid}@media (min-width:960px){.scan-grid{grid-template-columns:340px minmax(0,1fr);align-items:start}}.receipt-img{object-fit:contain;background:var(--surface-2);width:100%;max-height:560px;box-shadow:var(--shadow);border-radius:22px}@media (min-width:960px){.receipt-sticky{position:sticky;top:90px}}.items-table{border-collapse:collapse;width:100%}.items-table th{text-align:left;color:var(--text-3);padding:0 6px 8px;font-size:12px;font-weight:750}.items-table td{vertical-align:middle;padding:4px}.items-table .input{min-height:42px;padding:8px 11px;font-size:15px}.items-table td.qty{width:64px}.items-table td.price{width:120px}.items-table td.cat{width:165px}.items-table td.own{width:128px}.items-table td.sub{text-align:right;white-space:nowrap;width:100px;padding-right:8px;font-weight:750}.items-wrap{container-type:inline-size}@container (width<=820px){.items-table thead{display:none}.items-table tr{border-top:1px solid var(--line);grid-template-columns:64px 1fr 1fr 44px;grid-template-areas:"name name name name""qty price price del""cat cat own own";gap:6px;padding:10px 0;display:grid}.items-table td{padding:0;width:auto!important}.items-table td.name{grid-area:name}.items-table td.qty{grid-area:qty}.items-table td.price{grid-area:price}.items-table td.cat{grid-area:cat}.items-table td.own{grid-area:own}.items-table td:last-child{grid-area:del}.items-table tr:not(:has(td.own)) td.cat{grid-column:1/-1}.items-table td.sub{display:none}}.progress-ring{width:72px;height:72px}.mode-pill{border-radius:var(--r-pill);background:var(--p-blue-bg);align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:750;display:inline-flex}.auth{grid-template-columns:minmax(0,1fr);min-height:100dvh;display:grid}@media (min-width:960px){.auth{grid-template-columns:1.05fr 1fr}}.auth-art{color:var(--text);background:radial-gradient(120% 80% at 110% -10%, #ffffff80 0 40%, transparent 40.5%), linear-gradient(180deg, var(--hero-1), var(--hero-2) 60%, var(--hero-3));padding:48px;display:none;position:relative;overflow:hidden}@media (min-width:960px){.auth-art{flex-direction:column;justify-content:space-between;display:flex}}.auth-art blockquote{letter-spacing:-.035em;max-width:13ch;margin:0;font-size:clamp(34px,3.6vw,52px);font-weight:800;line-height:1.08}.auth-art blockquote em{color:#fff;font-style:normal}.auth-form{justify-content:center;align-items:center;padding:32px 20px;display:flex}.auth-form .inner{flex-direction:column;gap:22px;width:100%;max-width:400px;display:flex}.lock{z-index:var(--z-lock);padding:calc(24px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));background:radial-gradient(120% 70% at 50% -10%, var(--hero-2), transparent 60%), var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:22px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.pin-dots{gap:14px;display:flex}.pin-dots i{border:2px solid var(--accent);width:14px;height:14px;transition:background var(--t-fast), transform var(--t-fast) var(--spring);border-radius:50%}.pin-dots i.on{background:var(--accent);transform:scale(1.1)}.pin-dots.shake{animation:.36s shake}.keypad{grid-template-columns:repeat(3,76px);gap:14px;display:grid}.keypad button{background:var(--surface);width:76px;height:76px;box-shadow:var(--shadow);color:var(--text);transition:transform var(--t-fast) var(--spring), background var(--t-fast);border:0;border-radius:50%;place-items:center;font-size:26px;font-weight:750;display:grid}.keypad button:active{background:var(--accent-soft);transform:scale(.92)}.keypad button.ghost{box-shadow:none;color:var(--text-2);background:0 0;font-size:14px}.kv{grid-template-columns:auto 1fr;gap:7px 16px;font-size:14px;display:grid}.kv dt{color:var(--text-3);font-weight:650}.kv dd{text-align:right;margin:0;font-weight:700}.divider{background:var(--line);border:0;height:1px;margin:4px 0}.code{letter-spacing:.3em;color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:28px;font-weight:800}.more-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.more-grid a{background:var(--surface);box-shadow:var(--shadow);border-radius:22px;flex-direction:column;gap:10px;min-height:112px;padding:18px;font-weight:800;text-decoration:none;display:flex}.more-grid a .mi{background:var(--c,var(--accent-soft));width:44px;height:44px;color:var(--text);border-radius:50%;place-items:center;display:grid}.more-grid a span{color:var(--text-3);font-size:12.5px;font-weight:600}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatches button{border:3px solid var(--surface);width:36px;height:36px;box-shadow:0 0 0 1.5px var(--line-2);border-radius:50%}.swatches button[aria-pressed=true]{box-shadow:0 0 0 3px var(--accent)}.quick{background:var(--surface);border-radius:var(--r-pill);box-shadow:var(--shadow);align-items:center;gap:8px;padding:6px 6px 6px 18px;display:flex}.quick input{min-width:0;min-height:40px;color:var(--text);background:0 0;border:0;outline:none;flex:1;font-size:16px;font-weight:600}.preview-chips{flex-wrap:wrap;gap:6px;display:flex}.preview-chips span{border-radius:var(--r-pill);background:var(--surface-3);padding:5px 11px;font-size:12.5px;font-weight:700}.recap{border-radius:var(--r-card);background:linear-gradient(140deg, var(--p-lilac-bg), var(--p-blue-bg));box-shadow:var(--shadow);padding:20px;position:relative;overflow:hidden}.table-wrap{overflow-x:auto}.csv-table{border-collapse:collapse;width:100%;font-size:13px}.csv-table th,.csv-table td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--line);padding:7px 10px}.csv-table th{color:var(--text-3);font-weight:750}.tabbar{z-index:var(--z-nav);padding:6px 8px calc(8px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(18px);grid-template-columns:repeat(5,1fr);align-items:end;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 30px -20px #781c3c59}@media (min-width:1024px){.tabbar{display:none}}.tabbar a{min-height:50px;color:var(--text-3);flex-direction:column;align-items:center;gap:3px;padding:6px 0;font-size:11.5px;font-weight:700;text-decoration:none;display:flex}.tabbar a[aria-current=page]{color:var(--accent)}.tabbar .fab{background:linear-gradient(150deg, var(--accent-2), var(--accent));color:#fff;width:58px;height:58px;box-shadow:0 14px 26px -12px var(--accent), 0 0 0 5px var(--surface);border-radius:50%;place-items:center;margin:-26px auto 0;display:grid}.tabbar .fab-wrap{color:var(--text-2)}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}75%{transform:translate(8px)}}.reveal>*{animation:rise .52s var(--ease) both;animation-delay:calc(var(--i,0) * 60ms)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}}@media (prefers-reduced-transparency:reduce){.topbar,.tabbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--surface)}}@media (min-width:1024px){.mobile-only{display:none!important}}@media (max-width:767px){.desktop-only{display:none!important}}
