*{box-sizing:border-box;margin:0}body{font-family:system-ui,-apple-system,sans-serif;background:#f5f5f7;color:#1c1c1e}.screen{max-width:480px;margin:0 auto;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(env(safe-area-inset-bottom) + 12px);display:flex;flex-direction:column}.center{justify-content:center;text-align:center;gap:16px}.card{display:flex;flex-direction:column;gap:10px;background:#fff;padding:20px;border-radius:16px;text-align:left}input{font-size:16px;padding:12px;border:1px solid #d1d1d6;border-radius:10px;width:100%}button{font-size:16px;padding:12px;border:none;border-radius:10px;background:#e5e5ea;cursor:pointer}button.primary{background:#0a84ff;color:#fff;font-weight:600}button.primary:disabled{opacity:.4}button.link{background:none;color:#0a84ff;padding:6px}button.big{font-size:18px;padding:14px}.error{color:#d70015;font-size:14px}.row{display:flex;gap:8px;align-items:center}.row.small{font-size:14px}.row.small input[type=checkbox]{width:auto}.spread{justify-content:space-between}header h2{font-size:18px}.totals{display:flex;gap:16px;background:#fff;border-radius:14px;padding:12px 16px;margin:12px 0;justify-content:space-between}.tx-groups{flex:1}.tx-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:2px}.tx-list li{display:flex;align-items:center;gap:10px;background:#fff;padding:10px 12px}.tx-list li:first-child{border-radius:12px 12px 0 0}.tx-list li:last-child{border-radius:0 0 12px 12px}.tx-list li.dim{opacity:.45}.tx-list li.tappable{cursor:pointer}.tx-list .grow{flex:1;min-width:0}.tx-list small{color:#8e8e93;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-list strong{font-variant-numeric:tabular-nums;white-space:nowrap}.tx-list .income{color:#248a3d}.day-header{color:#8e8e93;font-size:12px;padding:10px 4px 4px}.list-toolbar{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:#8e8e93;min-height:28px}.empty{color:#8e8e93;text-align:center;padding:32px}.tick{width:22px;height:22px;border-radius:11px;flex:none;border:1.5px solid #c7c7cc;color:#fff;text-align:center;line-height:20px;font-size:14px}.tick.on{background:#0a84ff;border-color:#0a84ff}button.danger{background:#d70015;color:#fff;font-weight:600}button.danger:disabled{opacity:.4}.select-bar{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;background:#fff;padding:12px 16px calc(env(safe-area-inset-bottom) + 12px);box-shadow:0 -2px 12px #0000001f;z-index:20;display:flex}.shell .screen{padding-bottom:calc(env(safe-area-inset-bottom) + 76px)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:15;max-width:480px;margin:0 auto;display:flex;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid #e5e5ea;padding:6px 8px calc(env(safe-area-inset-bottom) + 6px)}.tabbar button{flex:1;background:none;color:#8e8e93;font-size:15px;padding:8px}.tabbar button.active{color:#0a84ff;font-weight:600}.danger-link{color:#d70015}.select-bar .danger{flex:1}.header-spacer{width:56px}.report-card{margin-bottom:12px}.report-card h4{color:#8e8e93;font-size:13px;font-weight:600}.meter{position:relative;height:14px;background:#e5e5ea;border-radius:7px}.meter-fill{height:100%;background:#0a84ff;border-radius:7px}.meter-fill.over{background:#d70015}.meter-tick{position:absolute;top:-4px;height:22px;width:2px;background:#1c1c1e;border-radius:1px;transform:translate(-1px)}.meter-nums{font-size:14px}.share-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:10px}.share-list li{display:flex;gap:10px;align-items:center}.share-list .grow{flex:1;min-width:0}.share-list .row{font-size:14px}.share-track{height:8px;background:#f2f2f7;border-radius:4px;margin-top:4px}.share-fill{height:100%;background:#0a84ff;border-radius:4px}.emoji{font-size:22px}.fab{position:fixed;right:20px;bottom:calc(env(safe-area-inset-bottom) + 72px);width:60px;height:60px;border-radius:30px;font-size:28px;background:#0a84ff;color:#fff;box-shadow:0 4px 16px #00000040}.sheet-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:flex-end;z-index:10}.sheet{background:#fff;width:100%;max-width:480px;margin:0 auto;border-radius:20px 20px 0 0;padding:20px 16px calc(env(safe-area-inset-bottom) + 20px);display:flex;flex-direction:column;gap:12px;max-height:85dvh;overflow-y:auto}.seg{flex:1}.seg.active{background:#0a84ff;color:#fff}.amount{font-size:32px;text-align:center;font-weight:700}.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.cat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:#f2f2f7}.cat span{font-size:22px}.cat small{font-size:11px}.cat.active{background:#0a84ff;color:#fff}.token{word-break:break-all;background:#f2f2f7;padding:10px;border-radius:8px;font-size:13px}.who{font-size:11px}.budget-strip{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 8px;background:#fff;border-radius:14px;padding:10px 16px;margin-bottom:12px;font-size:14px;text-align:left;width:100%}.budget-strip.over{background:#ffe5e7;color:#d70015;font-weight:600}.over-note{color:#d70015}.muted{color:#8e8e93;font-size:12px}.mgmt-list{list-style:none;padding:0;display:flex;flex-direction:column}.mgmt-list li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f2f2f7}.mgmt-list .grow{flex:1;min-width:0}.mgmt-list small{display:block}.mgmt-list .budget-input{width:110px;text-align:right;padding:8px}.mgmt-list li.derived-panel{background:#f2f2f7;border-radius:10px;border-bottom:none;padding:10px 12px;margin:2px 0 8px}.mgmt-list li.derived-panel.over{background:#ffe5e7;color:#d70015}.mgmt-list li.derived-panel.over small{color:#d70015}.mgmt-list li.derived-panel strong{font-variant-numeric:tabular-nums;white-space:nowrap}.auto-badge{display:inline-block;background:#e5e5ea;color:#8e8e93;font-size:11px;border-radius:8px;padding:1px 6px;vertical-align:1px}.mgmt-list li.derived-panel.over .auto-badge{background:#d700151f;color:#d70015}.sheet h4{color:#8e8e93;font-size:13px;font-weight:600;margin-top:8px}.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.emoji-grid button{padding:6px 0;font-size:20px;background:#f2f2f7}.emoji-grid button.active{background:#0a84ff}
