:root{--bg: #ececef;--card: #ffffff;--ink: #1f2023;--ink-2: #6b6d75;--ink-3: #a3a5ad;--line: #ececf0;--dark: #232427;--green: #7ac143;--green-d: #3f9b3a;--green-l: #e6f4d8;--red: #e5484d;--red-l: #fdeaea;--radius: 24px;--shadow: 0 10px 30px rgba(30, 32, 40, .07)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,sans-serif}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}h1,h2,h3,p{margin:0}.app{max-width:560px;margin:0 auto;min-height:100dvh;padding:20px 16px 120px}.page{animation:rise .35s ease}@keyframes rise{0%{opacity:0}to{opacity:1}}.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.top small{color:var(--ink-2);font-size:13px}.top h1{font-size:24px;font-weight:800;letter-spacing:-.02em}.round{width:44px;height:44px;border-radius:50%;background:var(--card);display:grid;place-items:center;box-shadow:var(--shadow)}.round svg{width:20px;height:20px}.monthbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.monthbar .label{font-weight:700;font-size:17px;text-align:center}.monthbar .label small{display:block;color:var(--ink-2);font-weight:500;font-size:12px}.hero{position:relative;border-radius:28px;padding:22px 22px 26px;color:#fff;overflow:hidden;background:radial-gradient(120% 140% at 85% 0%,#b7e37f,#7ac143 38%,#3f9b3a);box-shadow:0 18px 36px #3f9b3a47}.hero.neg{background:radial-gradient(120% 140% at 85% 0%,#ff9a8b,#e5646a 45%,#b83a4b);box-shadow:0 18px 36px #b83a4b47}.hero:after{content:"";position:absolute;width:220px;height:220px;right:-70px;bottom:-110px;border-radius:50%;background:#ffffff24}.pill{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;background:var(--dark);color:#fff;font-size:12px;font-weight:600}.hero .cap{margin-top:22px;font-size:13px;opacity:.85}.big{font-size:38px;font-weight:800;letter-spacing:-.03em;line-height:1.1;margin-top:4px}.big .cur{font-size:18px;font-weight:700;margin-right:4px;opacity:.9}.big .dec{font-size:20px;opacity:.85}.hero .row{display:flex;gap:22px;margin-top:18px;position:relative;z-index:1}.hero .row div{font-size:12px;opacity:.9}.hero .row b{display:block;font-size:16px;margin-top:2px}.progress{background:var(--card);border-radius:20px;padding:14px 16px;margin-top:12px;box-shadow:var(--shadow)}.progress .head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2)}.progress .head b{color:var(--ink)}.bar{height:8px;border-radius:99px;background:#e9e9ee;margin-top:10px;overflow:hidden}.bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#b7e37f,#3f9b3a);transition:width .5s ease}.section{margin-top:24px}.section .h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.section h2{font-size:17px;font-weight:700}.section .h span{font-size:13px;color:var(--ink-2);font-weight:600}.list{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px}.item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px;border-radius:18px}.item:active{background:#f5f5f8}.item+.item{border-top:1px solid var(--line);border-radius:0}.ico{width:42px;height:42px;border-radius:14px;background:#f1f1f5;display:grid;place-items:center;font-weight:700;font-size:15px;color:var(--ink-2);flex:none}.ico.income{background:var(--green-l);color:var(--green-d)}.ico.card{background:#e8e9f7;color:#5560c8}.item .meta{flex:1;min-width:0}.item .name{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .sub{font-size:12px;color:var(--ink-2);margin-top:2px}.item .val{font-weight:700;font-size:15px}.item .val.in{color:var(--green-d)}.item.paid .name,.item.paid .val{color:var(--ink-3);text-decoration:line-through}.check{width:26px;height:26px;border-radius:50%;border:2px solid #d8d9e0;display:grid;place-items:center;flex:none}.check.on{background:var(--green);border-color:var(--green)}.check svg{width:14px;height:14px;opacity:0}.check.on svg{opacity:1}.empty{text-align:center;padding:48px 20px;color:var(--ink-2)}.empty h3{color:var(--ink);font-size:18px;margin-bottom:6px}.empty .btns{display:grid;gap:10px;margin-top:20px}.btn{height:52px;border-radius:18px;font-weight:700;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%}.btn.dark{background:var(--dark);color:#fff}.btn.light{background:var(--card);box-shadow:var(--shadow)}.btn.ghost{border:2px solid var(--green);color:var(--green-d)}.btn.danger{background:var(--red-l);color:var(--red)}.btn:disabled{opacity:.5}.fab{position:fixed;right:max(16px,calc(50% - 264px));bottom:104px;width:56px;height:56px;border-radius:20px;background:var(--dark);color:#fff;display:grid;place-items:center;box-shadow:0 12px 24px #00000040;z-index:5}.fab svg{width:24px;height:24px}.nav{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom));background:var(--dark);border-radius:26px;padding:8px;display:flex;gap:4px;z-index:6;box-shadow:0 16px 32px #00000047;width:min(calc(100% - 32px),420px)}.nav button{flex:1;height:46px;border-radius:18px;color:#9a9ca5;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:13px;transition:all .2s}.nav button svg{width:20px;height:20px}.nav button.on{background:linear-gradient(90deg,#b7e37f,#7ac143);color:#1b2a10}.nav button span{display:none}.nav button.on span{display:inline}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14151873;z-index:20;animation:fade .2s both}@keyframes fade{0%{opacity:0}}.sheet{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:min(100%,560px);z-index:21;background:var(--bg);border-radius:32px 32px 0 0;padding:12px 18px calc(24px + env(safe-area-inset-bottom));max-height:92dvh;overflow:auto;animation:up .3s cubic-bezier(.2,.8,.2,1) both}@keyframes up{0%{transform:translate(-50%,100%)}}.grab{width:44px;height:5px;background:#cfd0d6;border-radius:9px;margin:0 auto 14px}.sheet h2{font-size:20px;margin-bottom:14px}.seg{display:flex;background:#dcdce2;border-radius:16px;padding:4px;margin-bottom:14px}.seg button{flex:1;height:38px;border-radius:12px;font-weight:700;font-size:13px;color:var(--ink-2)}.seg button.on{background:var(--card);color:var(--ink);box-shadow:0 2px 8px #00000014}.field{display:block;margin-bottom:12px}.field>span{display:block;font-size:12px;color:var(--ink-2);font-weight:600;margin:0 0 6px 4px}.input{width:100%;height:52px;border-radius:16px;border:2px solid transparent;background:var(--card);padding:0 16px;outline:none;font-size:16px}.input:focus{border-color:var(--green)}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.amount{font-size:28px;font-weight:800;height:64px}.toggle{display:flex;align-items:center;justify-content:space-between;background:var(--card);border-radius:16px;padding:14px 16px;margin-bottom:14px;font-weight:600;width:100%}.switch{width:46px;height:28px;border-radius:99px;background:#d3d4da;position:relative;transition:.2s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s}.switch.on{background:var(--green)}.switch.on:after{left:21px}.actions{display:grid;gap:10px;margin-top:6px}.err{background:var(--red-l);color:var(--red);border-radius:14px;padding:12px 14px;font-size:14px;font-weight:600;margin-bottom:12px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.stat{background:var(--card);border-radius:22px;padding:16px;box-shadow:var(--shadow)}.stat small{color:var(--ink-2);font-size:12px}.stat b{display:block;font-size:18px;margin-top:4px;letter-spacing:-.01em}.stat .tag{display:inline-block;margin-top:8px;font-size:11px;font-weight:700;padding:4px 8px;border-radius:99px}.tag.up{background:var(--green-l);color:var(--green-d)}.tag.down{background:var(--red-l);color:var(--red)}.chart-card{background:var(--card);border-radius:28px;padding:18px 12px 12px;box-shadow:var(--shadow)}.chart-card .ct{padding:0 8px}.chart-card .ct small{color:var(--ink-2);font-size:12px}.legend{display:flex;gap:14px;padding:0 8px;margin-top:6px;font-size:12px;color:var(--ink-2);font-weight:600}.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .m{font-size:11px;fill:var(--ink-3);font-weight:600;cursor:pointer}.chart .m.sel{fill:#fff}.rank{display:grid;gap:12px;padding:14px}.rank .r{display:grid;gap:6px}.rank .r .t{display:flex;justify-content:space-between;font-size:14px;font-weight:600}.rank .r .t span:last-child{font-weight:700}.auth{max-width:420px;margin:0 auto;min-height:100dvh;padding:28px 20px;display:flex;flex-direction:column;justify-content:center}.auth .logo{width:64px;height:64px;border-radius:22px;margin-bottom:22px;background:radial-gradient(120% 140% at 85% 0%,#b7e37f,#3f9b3a);display:grid;place-items:center;color:#fff;box-shadow:0 14px 28px #3f9b3a59}.auth .logo svg{width:32px;height:32px}.auth h1{font-size:30px;letter-spacing:-.03em;font-weight:800}.auth p{color:var(--ink-2);margin:6px 0 24px}.settings .list{padding:14px;display:grid;gap:4px}.skeleton{height:160px;border-radius:28px;background:linear-gradient(90deg,#e2e2e7,#f0f0f4,#e2e2e7);background-size:200% 100%;animation:sh 1.2s infinite}@keyframes sh{to{background-position:-200% 0}}@media (min-width: 700px){.app{padding-top:40px}}
