:root{--bg: #0b0d12;--bg-soft: #10141c;--card: #141821;--card-2: #1a1f2b;--line: #232938;--text: #e7ecf5;--muted: #8b97ad;--accent: #7ee0c0;--accent-2: #5b8cff;--warn: #ffc46b;--danger: #ff7a85;--radius: 18px;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--safe-b: env(safe-area-inset-bottom, 0px);--ease: cubic-bezier(.22, 1, .36, 1)}:root[data-theme=light]{--bg: #f4f6fb;--bg-soft: #eef1f8;--card: #ffffff;--card-2: #f7f9fd;--line: #e2e7f0;--text: #131722;--muted: #5d6880;--accent: #0f9d76;--accent-2: #3563e9;--shadow: 0 8px 24px rgba(20, 30, 60, .08)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1200px 600px at 20% -10%,rgba(91,140,255,.12),transparent 60%),radial-gradient(900px 500px at 100% 0%,rgba(126,224,192,.1),transparent 55%),var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent-2)}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 16px calc(14px + env(safe-area-inset-top,0px));background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.topbar h1{margin:0;font-size:18px;letter-spacing:-.02em}.topbar .sub{margin:0;font-size:12px;color:var(--muted)}.topbar .spacer{flex:1}main{flex:1;padding:16px 16px calc(96px + var(--safe-b));max-width:980px;width:100%;margin:0 auto}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);gap:2px;padding:8px 8px calc(8px + var(--safe-b));background:color-mix(in srgb,var(--bg-soft) 92%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--line)}.tabbar>*{max-width:196px;margin:0 auto;width:100%}.tabbar button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:0;border-radius:14px;background:transparent;color:var(--muted);font-size:11px;font-weight:500;transition:color .2s var(--ease),background .2s var(--ease),transform .2s var(--ease)}.tabbar button svg{width:22px;height:22px}.tabbar button[aria-current=page]{color:var(--text);background:color-mix(in srgb,var(--accent-2) 14%,transparent)}.tabbar button:active{transform:scale(.94)}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}button:focus:not(:focus-visible){outline:none}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.card h2{margin:0 0 12px;font-size:15px;letter-spacing:-.01em}.card h2 .count{color:var(--muted);font-weight:400}.grid{display:grid;gap:12px}.grid.two{grid-template-columns:1fr 1fr}@media(min-width:720px){.grid.two{grid-template-columns:repeat(4,1fr)}}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.stat .label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.stat .value{font-size:24px;font-weight:650;letter-spacing:-.03em;margin-top:6px}.stat .value.small{font-size:18px}.stat .foot{font-size:12px;color:var(--muted);margin-top:4px}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;background:var(--card-2);border:1px solid var(--line);font-size:11px;color:var(--muted)}.pill.ok{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.pill.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 35%,var(--line))}.pill.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,var(--line))}.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);animation:fade-up .28s var(--ease) both}.row:last-child{border-bottom:0}.row .grow{flex:1;min-width:0}.row .title{font-weight:550;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .meta{font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;margin-top:3px}.row .amount{font-variant-numeric:tabular-nums;font-weight:600}.row.done .title{text-decoration:line-through;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:28px 12px;font-size:14px}.empty .big{font-size:30px;display:block;margin-bottom:8px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field label{font-size:12px;color:var(--muted)}input,select,textarea{width:100%;padding:12px 14px;background:var(--card-2);border:1px solid var(--line);border-radius:12px;outline:none;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}input:focus,select:focus,textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-2) 22%,transparent)}textarea{resize:vertical;min-height:80px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.two-col>*{min-width:0}input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;max-width:100%;min-height:46px;text-align:left}input[type=date]::-webkit-date-and-time-value{text-align:left}.toast{position:fixed;z-index:60;left:16px;right:16px;bottom:calc(96px + var(--safe-b));max-width:520px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:13px 16px;border-radius:14px;background:color-mix(in srgb,var(--danger) 16%,var(--card));border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));color:var(--text);font-size:14px;box-shadow:var(--shadow);animation:fade-up .25s var(--ease) both;cursor:pointer}.inline-form{display:flex;gap:8px;margin-bottom:12px}.inline-form input{flex:1 1 auto;min-width:0}.inline-form .btn{flex:0 0 auto;padding:12px 14px}.inline-form .btn svg{width:20px;height:20px;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card-2);color:var(--text);font-weight:550;transition:transform .15s var(--ease),background .18s var(--ease),opacity .18s var(--ease)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{border:0;color:#07130f;background:linear-gradient(135deg,var(--accent),var(--accent-2))}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,var(--line));background:transparent}.btn.block{width:100%}.btn.icon{padding:8px;border-radius:10px}.btn.icon svg{width:18px;height:18px;display:block}.fab{position:fixed;z-index:25;right:max(16px,calc(50vw - 474px));bottom:calc(84px + var(--safe-b));width:54px;height:54px;border-radius:18px;border:0;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#07130f;box-shadow:0 10px 24px #5b8cff52;display:grid;place-items:center;transition:transform .18s var(--ease)}.fab:active{transform:scale(.92) rotate(90deg)}.fab svg{width:24px;height:24px}.check{flex:0 0 auto;width:24px;height:24px;border-radius:8px;border:2px solid var(--line);background:transparent;display:grid;place-items:center;transition:background .18s var(--ease),border-color .18s var(--ease),transform .15s var(--ease)}.check:active{transform:scale(.88)}.check[data-on=true]{background:var(--accent);border-color:var(--accent)}.check svg{width:14px;height:14px;color:#07130f;opacity:0;transition:opacity .15s var(--ease)}.check[data-on=true] svg{opacity:1}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#03050a99;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;animation:fade .2s var(--ease) both}.sheet{width:100%;max-width:560px;background:var(--bg-soft);border:1px solid var(--line);border-radius:24px 24px 0 0;padding:8px 18px calc(22px + var(--safe-b));max-height:88vh;overflow-y:auto;animation:slide-up .3s var(--ease) both}@media(min-width:720px){.sheet-backdrop{align-items:center}.sheet{border-radius:22px}}.sheet .handle{width:40px;height:4px;border-radius:4px;background:var(--line);margin:6px auto 14px}.sheet h3{margin:0 0 16px;font-size:17px}.login{min-height:100%;display:grid;place-items:center;padding:24px}.login-box{width:100%;max-width:380px;animation:fade-up .4s var(--ease) both}.login-brand{text-align:center;margin-bottom:28px}.login-brand .logo{width:62px;height:62px;margin:0 auto 14px;display:block}.login-brand h1{margin:0;font-size:26px;letter-spacing:-.03em}.login-brand p{margin:6px 0 0;color:var(--muted);font-size:14px}.who{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.who button{padding:22px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);display:grid;gap:8px;justify-items:center;transition:transform .18s var(--ease),border-color .18s var(--ease),background .18s var(--ease)}.who button:active{transform:scale(.96)}.who button[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--card))}.who .avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:18px;font-weight:650;color:#07130f;background:linear-gradient(135deg,var(--accent),var(--accent-2))}.code-input{text-align:center;font-size:30px;letter-spacing:.34em;font-variant-numeric:tabular-nums;padding:16px 12px;text-indent:.34em}.msg{font-size:13px;padding:10px 12px;border-radius:12px;margin-bottom:12px}.msg.error{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.msg.info{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.bars{display:flex;align-items:flex-end;gap:8px;height:120px;margin-top:8px}.bars .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%}.bars .fill{width:100%;border-radius:8px 8px 4px 4px;background:linear-gradient(180deg,var(--accent-2),color-mix(in srgb,var(--accent) 60%,var(--accent-2)));transform-origin:bottom;animation:grow .5s var(--ease) both;min-height:3px}.bars .cap{font-size:10px;color:var(--muted)}.progress{height:8px;border-radius:99px;background:var(--card-2);overflow:hidden;margin-top:10px}.progress>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .5s var(--ease)}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:13px;transition:background .18s var(--ease),color .18s var(--ease),transform .15s var(--ease)}.chip:active{transform:scale(.95)}.chip[aria-pressed=true]{background:var(--text);color:var(--bg);border-color:var(--text)}.deal-card{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.deal-card:last-child{border-bottom:0}.deal-card img{width:54px;height:54px;object-fit:cover;border-radius:12px;background:var(--card-2);flex:0 0 auto}.deal-card>svg{width:18px;height:18px;flex:0 0 auto;color:var(--muted)}.deal-card .title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}.note{background:var(--card-2);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px;white-space:pre-wrap;word-break:break-word}.note .meta{font-size:11px;color:var(--muted);margin-top:8px;display:flex;gap:8px;align-items:center}.skeleton{background:linear-gradient(90deg,var(--card) 25%,var(--card-2) 50%,var(--card) 75%);background-size:200% 100%;animation:shimmer 1.2s linear infinite;border-radius:12px;height:64px;margin-bottom:10px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes grow{0%{transform:scaleY(0)}to{transform:none}}@keyframes shimmer{to{background-position:-200% 0}}.page{animation:fade-up .26s var(--ease) both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.consumo{display:inline-flex;align-items:center;gap:4px}.consumo input{width:62px;padding:2px 6px;font-size:12px;text-align:right;border-radius:7px;background:var(--bg-soft)}.consumo .unitario{color:var(--accent);margin-left:4px}
