:root{--navy: #13294b;--navy-soft: #1e3a5f;--teal: #0e9b8e;--teal-dark: #0a7a6f;--teal-soft: #d4f0ec;--coral: #f87171;--coral-soft: #fee4e2;--gold: #e0a43a;--gold-ink: #a6781f;--gold-soft: #fbefd6;--green: #15926a;--green-soft: #d6f0e4;--bg: #f6f7f9;--surface: #ffffff;--surface-alt: #eef1f5;--border: #e2e7ee;--text-primary: #13294b;--text-secondary: #64748b;--text-muted: #94a3b8;--on-navy: #ffffff;--on-navy-dim: #aebbd0;--radius: 20px;--radius-sm: 12px;--font-display: "Fraunces", Georgia, serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--nav-clearance: calc(env(safe-area-inset-bottom, 0px) + 28px) ;--nav-space: 128px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{font-family:var(--font-body);background:var(--bg);color:var(--text-primary);font-size:15px;-webkit-font-smoothing:antialiased}#app{max-width:440px;margin:0 auto;min-height:100vh;position:relative}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;display:inline-block;font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24;-webkit-user-select:none;user-select:none}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:20px 16px 8px;background:var(--bg)}.topbar .greeting{font-size:13px;font-weight:500;color:var(--text-secondary)}.topbar h1{font-family:var(--font-display);font-size:24px;font-weight:600;margin:2px 0 0;color:var(--text-primary)}.month-pill{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:8px 12px;cursor:pointer}.month-pill select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-size:13px;font-weight:600;color:var(--text-primary);cursor:pointer;padding:0 2px 0 0}.month-pill .material-symbols-rounded{font-size:16px;color:var(--text-secondary)}.page{display:none;padding:8px 16px var(--nav-space)}.page.active{display:block}.page>*+*{margin-top:18px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-title{font-size:14px;font-weight:700;color:var(--text-primary);margin:0}.card-sub{font-size:12px;font-weight:500;color:var(--text-muted);margin:2px 0 0}.card-head{margin-bottom:8px}.hero{background:var(--navy);color:var(--on-navy);border:none;box-shadow:0 12px 28px #13294b33;border-radius:24px;padding:24px}.hero .label{font-size:13px;font-weight:500;color:var(--on-navy-dim)}.hero .amount{font-family:var(--font-display);font-size:40px;font-weight:600;margin:4px 0 0;letter-spacing:-.5px;line-height:1.05}.hero .amount.pos{color:#6ee7c7}.hero .amount.neg{color:#ff8a8a}.hero .breakdown{display:flex;gap:10px;margin-top:16px}.hero .breakdown>div{flex:1;background:#ffffff14;border-radius:14px;padding:12px}.hero .breakdown .l{font-size:11px;font-weight:500;color:var(--on-navy-dim)}.hero .breakdown .v{font-size:15px;font-weight:700;margin-top:3px}.hero .breakdown .v.teal{color:#6ee7c7}.hero .breakdown .v.gold{color:var(--gold)}.hero .breakdown .v.dim{color:var(--on-navy-dim)}.nw-bar{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--surface-alt);margin:14px 0}.nw-bar .need{background:var(--teal)}.nw-bar .want{background:var(--gold)}.nw-legend{display:flex;justify-content:space-between;font-size:12px}.nw-legend .g{display:flex;align-items:center;gap:7px;color:var(--text-secondary);font-weight:500}.nw-legend .g b{color:var(--text-primary);font-weight:700;margin-left:2px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.tip{display:flex;align-items:center;gap:8px;margin-top:14px;background:var(--gold-soft);border-radius:12px;padding:10px 12px;font-size:11px;font-weight:500;line-height:1.3;color:#7a5b1e}.tip .material-symbols-rounded{font-size:16px;color:var(--gold);flex:none}.cat-row{padding:10px 0}.cat-row .top{display:flex;align-items:center;gap:10px}.cat-row .top .dot{width:10px;height:10px}.cat-row .name{font-size:13px;font-weight:600;color:var(--text-primary)}.cat-row .count{font-size:11px;font-weight:500;color:var(--text-muted);flex:1}.cat-row .amt{font-size:13px;font-weight:700;color:var(--text-primary)}.cat-row .track{height:6px;border-radius:3px;background:var(--surface-alt);margin-top:6px;overflow:hidden}.cat-row .track>span{display:block;height:100%;border-radius:3px}.leak-card{background:var(--coral-soft);border:1px solid rgba(248,113,113,.2)}.leak-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.leak-head .icon{width:34px;height:34px;border-radius:10px;background:var(--coral);display:grid;place-items:center;flex:none}.leak-head .icon .material-symbols-rounded{font-size:19px;color:#fff}.leak-head .t{font-size:14px;font-weight:700;color:#b0352f}.leak-head .s{font-size:11px;font-weight:500;color:#c4544e;margin-top:1px}.leak{display:flex;justify-content:space-between;align-items:center;background:#fffc;border-radius:12px;padding:12px;margin-bottom:8px}.leak:last-child{margin-bottom:0}.leak .n{font-size:13px;font-weight:700;color:var(--text-primary)}.leak .m{font-size:11px;font-weight:500;color:var(--text-muted);margin-top:2px}.leak .v{font-size:14px;font-weight:700;color:var(--coral)}.total-card{display:flex;justify-content:space-between;align-items:center;border:none;color:#fff;padding:16px 18px;border-radius:18px}.total-card.teal{background:var(--teal);box-shadow:0 8px 20px #0e9b8e33}.total-card.green{background:var(--green);box-shadow:0 8px 20px #15926a33;display:block}.total-card .l{font-size:12px;font-weight:500;opacity:.85}.total-card .v{font-family:var(--font-display);font-size:28px;font-weight:600;margin-top:2px}.total-card.green .v{font-size:32px}.total-card .badge{background:#ffffff26;border-radius:20px;padding:6px 10px;font-size:12px;font-weight:600}.progress-card{background:var(--navy);border:none;color:#fff}.progress-card .top{display:flex;justify-content:space-between;align-items:flex-end}.progress-card .l{font-size:12px;font-weight:500;color:var(--on-navy-dim)}.progress-card .v{font-family:var(--font-display);font-size:26px;font-weight:600;margin-top:3px}.progress-card .amt{font-size:14px;font-weight:700;color:#6ee7c7}.progress-card .track{height:8px;border-radius:4px;background:#ffffff1f;margin-top:12px;overflow:hidden}.progress-card .track>span{display:block;height:100%;background:var(--teal);border-radius:4px}.list-card{padding:6px 16px}.item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);cursor:pointer}.item:last-child{border-bottom:none}.item .info{flex:1;min-width:0}.item .info .t{font-size:14px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .info .s{font-size:11px;font-weight:500;color:var(--text-muted);margin-top:3px}.item .info .s.paid{color:var(--teal)}.item .right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.item .amt{font-size:14px;font-weight:700;color:var(--text-primary);white-space:nowrap}.item .amt.income{font-size:15px;color:var(--green)}.item .edit-cue{display:grid;place-items:center;width:24px;flex:none;cursor:pointer}.item .edit-cue .material-symbols-rounded{font-size:20px;color:var(--text-muted)}.hint{text-align:center;font-size:12px;color:var(--text-muted);margin:0 0 4px}.thumb{width:42px;height:42px;border-radius:10px;object-fit:cover;border:1px solid var(--border);flex:none}.chip{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;flex:none}.chip .dot{width:12px;height:12px}.chip.receipt{background:var(--surface-alt)}.chip.receipt .material-symbols-rounded{font-size:20px;color:var(--text-muted)}.chip.income{background:var(--green-soft)}.chip.income .material-symbols-rounded{font-size:20px;color:var(--green)}.tag{font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;letter-spacing:.02em}.tag.need{background:var(--teal-soft);color:var(--teal)}.tag.want{background:var(--gold-soft);color:var(--gold-ink)}.chk{width:26px;height:26px;border-radius:9px;border:2px solid var(--border);flex:none;display:grid;place-items:center;cursor:pointer;background:transparent;transition:all .15s}.chk .material-symbols-rounded{font-size:16px;color:#fff;opacity:0}.chk.on{background:var(--teal);border-color:var(--teal)}.chk.on .material-symbols-rounded{opacity:1}button{font-family:inherit;cursor:pointer;border:none}.btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--teal);color:#fff;border-radius:14px;padding:16px;font-size:16px;font-weight:700;width:100%;box-shadow:0 6px 16px #0e9b8e4d}.btn .material-symbols-rounded{font-size:20px}.btn:active{transform:scale(.99)}.btn.ghost{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);box-shadow:none}.btn.danger{background:var(--coral-soft);color:var(--coral);box-shadow:none}label.field{display:block;font-size:12px;font-weight:600;color:var(--text-secondary)}label.field>span{display:block;margin-bottom:7px}input,select,textarea{width:100%;background:var(--surface);color:var(--text-primary);border:1px solid var(--border);border-radius:12px;padding:13px 14px;font-size:16px;font-family:inherit;font-weight:500}input::placeholder{color:var(--text-muted);font-weight:400}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal)}.seg{display:flex;gap:10px}.seg button{flex:1;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);border-radius:12px;padding:12px;font-size:14px;font-weight:500}.seg button.on.need{background:var(--teal-soft);color:var(--teal);border:2px solid var(--teal);font-weight:700}.seg button.on.want{background:var(--gold-soft);color:var(--gold-ink);border:2px solid var(--gold);font-weight:700}.seg.income button.on{background:var(--teal-soft);color:var(--teal);border:2px solid var(--teal);font-weight:700}.upload{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--teal-soft);border:1px solid var(--teal);border-radius:14px;padding:20px;color:var(--teal-dark);font-size:14px;font-weight:600;cursor:pointer}.upload .material-symbols-rounded{font-size:22px;color:var(--teal)}.upload input{display:none}.receipt-preview{display:flex;align-items:center;gap:14px}.receipt-preview .thumb{width:72px;height:72px}.receipt-actions{display:flex;flex-direction:column;gap:8px;flex:1}.btn-sm{width:100%;padding:10px 12px;font-size:13px;border-radius:10px;margin-top:0}.btn-sm .material-symbols-rounded{font-size:17px}#e_replaceLabel{position:relative;cursor:pointer}#e_replaceLabel input{display:none}.nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:440px;z-index:20;padding:12px 16px var(--nav-clearance);pointer-events:none}.nav .bar{display:flex;justify-content:space-between;align-items:center;background:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:30px;padding:6px 8px;box-shadow:0 8px 24px #13294b24;pointer-events:auto}.nav button{background:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 10px;border-radius:16px;color:var(--text-muted);flex:1}.nav button .material-symbols-rounded{font-size:22px;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.nav button .lbl{font-size:10px;font-weight:500}.nav button.on{background:var(--teal-soft);color:var(--teal)}.nav button.on .material-symbols-rounded{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.nav button.on .lbl{font-weight:700}.fab{position:fixed;z-index:25;bottom:calc(var(--nav-clearance) + 78px);left:50%;margin-left:148px;width:56px;height:56px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;box-shadow:0 8px 24px #0e9b8e73}.fab .material-symbols-rounded{font-size:28px}@media(max-width:440px){.fab{left:auto;right:20px;margin-left:0}}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1830b8;z-index:30;display:none}.sheet-bg.open{display:block}.sheet{position:fixed;left:50%;transform:translate(-50%) translateY(100%);bottom:0;width:100%;max-width:440px;z-index:31;background:var(--bg);border-radius:28px 28px 0 0;padding:14px 20px calc(24px + env(safe-area-inset-bottom,0px));transition:transform .28s cubic-bezier(.32,.72,0,1);max-height:92vh;overflow-y:auto}.sheet.open{transform:translate(-50%) translateY(0)}.sheet-grip{width:40px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 14px}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.sheet-head h3{font-family:var(--font-display);font-size:21px;font-weight:600;margin:0;color:var(--text-primary)}.sheet-close{width:32px;height:32px;border-radius:16px;background:var(--surface-alt);display:grid;place-items:center}.sheet-close .material-symbols-rounded{font-size:18px;color:var(--text-secondary)}.sheet form>*+*{margin-top:16px}.sheet .row2{display:flex;gap:12px}.sheet .row2>*{flex:1}.sheet .input-icon{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0 14px}.sheet .input-icon .material-symbols-rounded{font-size:16px;color:var(--text-muted);flex:none}.sheet .input-icon input,.sheet .input-icon select{border:none;padding:13px 0;background:none}.sheet .input-icon input:focus,.sheet .input-icon select:focus{border:none}.row-actions{display:flex;gap:10px}.row-actions .btn{margin-top:0}.login{display:grid;place-items:center;min-height:100vh;padding:24px;background:var(--navy)}.login .box{width:100%;max-width:340px;text-align:center;color:#fff}.login .logo{font-size:48px;margin-bottom:8px}.login h1{font-family:var(--font-display);font-weight:600;font-size:30px;margin:0}.login .sub{color:var(--on-navy-dim);font-size:14px;margin:8px 0 24px}.login input{background:#ffffff14;border-color:#ffffff2e;color:#fff}.login input::placeholder{color:var(--on-navy-dim)}.login .err{color:#ff8a8a;min-height:18px;margin-top:10px;font-size:13px}.empty{text-align:center;color:var(--text-muted);padding:30px 10px;font-size:14px}.muted{color:var(--text-muted)}.spin{text-align:center;padding:60px 10px;color:var(--text-muted)}.toast{position:fixed;bottom:calc(var(--nav-clearance) + 92px);left:50%;transform:translate(-50%);z-index:40;background:var(--navy);color:#fff;padding:11px 18px;border-radius:12px;font-size:13px;font-weight:500;opacity:0;transition:opacity .2s;pointer-events:none;box-shadow:0 8px 24px #13294b4d}.toast.show{opacity:1}
