:root{--bg: #f3f0ea;--surface: #fbfaf7;--ink: #23211d;--muted: #6d675d;--line: #e3ddd2;--accent: #8a6a1f;--accent-soft: #f1e8d4;--error: #a2412f;--tabbar: 58px;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}ul{list-style:none;margin:0;padding:0}main{max-width:640px;margin:0 auto;padding:env(safe-area-inset-top) 16px calc(env(safe-area-inset-bottom) + 32px)}.screen-head{padding:20px 4px 12px}.screen-head h1{margin:0;font-size:2.1rem;letter-spacing:-.02em;line-height:1.15}.notice{color:var(--muted);padding:0 4px}.notice.error{color:var(--error)}.summary{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 18px 16px}.summary p{margin:0}.summary-label{font-size:.9rem;font-weight:600;color:var(--muted)}.summary-amount{margin-top:2px!important;font-size:2.2rem;font-weight:700;letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums}.summary-amount.negative{color:var(--error)}.summary-detail{margin-top:4px!important;font-size:.9rem;color:var(--muted);font-variant-numeric:tabular-nums}.summary-hint{color:var(--muted)}.lines{margin-top:28px}.lines h2{display:flex;justify-content:space-between;align-items:baseline;margin:0 4px 8px;font-size:1.15rem}.lines-total{font-size:.95rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.lines ul{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}.lines li+li{border-top:1px solid var(--line)}.line{width:100%;min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;text-align:left}.line:active{background:var(--accent-soft)}.line-name{min-width:0;overflow-wrap:anywhere}.line-amount{flex:none;font-variant-numeric:tabular-nums}.line.add{justify-content:flex-start;gap:8px;color:var(--accent);font-weight:600}.line.add span{font-size:1.3rem;line-height:1}.sheet-layer{position:fixed;top:0;left:0;right:0;height:100%;z-index:20;transition:top .25s ease,height .25s ease}.sheet-backdrop{position:absolute;inset:0;background:#231e1466;opacity:0;transition:opacity .26s ease}.sheet-layer.open .sheet-backdrop{opacity:1}.sheet{position:absolute;left:0;right:0;bottom:0;max-width:640px;margin:0 auto;max-height:calc(100% - env(safe-area-inset-top) - 24px);overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border-radius:20px 20px 0 0;transition:transform .26s cubic-bezier(.32,.72,0,1);box-shadow:0 -4px 24px #00000026;display:flex;flex-direction:column}.sheet-handle{position:sticky;top:0;z-index:1;flex:none;width:40px;height:5px;margin:8px auto -13px;border-radius:3px;background:var(--line)}.sheet-form{display:flex;flex-direction:column;gap:14px;padding:20px 20px 0}.sheet-form h2{margin:6px 0 0;font-size:1.5rem}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:.85rem;font-weight:600;color:var(--muted)}.field input{width:100%;height:46px;padding:0 12px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:16px}.field input:focus{outline:2px solid var(--accent);outline-offset:-1px}.amount-input{position:relative}.amount-input input{padding-right:36px;font-variant-numeric:tabular-nums}.amount-input b{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-weight:600}.link-button{align-self:flex-start;min-height:36px;color:var(--accent);font-size:.9rem;font-weight:600}.link-button.danger{color:var(--error)}.form-footer{position:sticky;bottom:0;margin:4px -20px 0;padding:12px 20px calc(env(safe-area-inset-bottom) + 20px);background:var(--surface)}.form-error{margin:0 0 10px;color:var(--error);text-align:center}.primary{width:100%;height:52px;border-radius:14px;background:var(--accent);color:#fff;font-weight:700}.primary:disabled{opacity:.4}main{padding-bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 96px)}.add-expense{position:fixed;left:50%;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 14px);transform:translate(-50%);z-index:10;display:inline-flex;align-items:center;gap:8px;height:56px;padding:0 28px;border-radius:28px;background:var(--accent);color:#fff;font-weight:700;box-shadow:0 6px 18px #503c144d}.add-expense span{font-size:1.5rem;line-height:1}.add-expense:active{transform:translate(-50%) scale(.97)}.expense-form{display:flex;flex-direction:column;gap:10px;padding:26px 20px 20px}.amount-big{display:flex;align-items:baseline;justify-content:center;gap:6px}.amount-big input{width:0;flex:1;max-width:260px;border:0;background:none;color:var(--ink);font:inherit;font-size:2.8rem;font-weight:700;letter-spacing:-.02em;text-align:right;font-variant-numeric:tabular-nums}.amount-big input:focus{outline:none}.amount-big b{font-size:2rem;color:var(--muted)}.expense-extras{display:flex;justify-content:center;align-items:center;gap:20px}.expense-extras .link-button{align-self:auto}.expense-extras input[type=date],.note-input{height:40px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:16px}.note-input{width:100%}.category-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}.category-grid button{min-height:46px;padding:6px 10px;border-radius:12px;background:var(--accent-soft);color:var(--ink);font-size:.95rem;font-weight:600;line-height:1.2}.category-grid button:active{background:var(--accent);color:#fff}.category-grid button:disabled{opacity:.45}.toast{position:fixed;left:16px;right:16px;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 82px);z-index:30;margin:0 auto;max-width:420px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:12px;background:var(--ink);color:#fff}.toast button{color:#f1d38c;font-weight:700}.add-expense:disabled{opacity:.5}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:grid;grid-template-columns:1fr 1fr 1fr;height:calc(var(--tabbar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fbfaf7f0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)}.tabbar button{color:var(--muted);font-size:.95rem;font-weight:600}.tabbar button.on{color:var(--accent)}.capitalized:first-letter{text-transform:uppercase}.screen-sub{margin:2px 0 0;color:var(--muted)}.meter{height:8px;margin-top:14px;border-radius:4px;background:var(--accent-soft);overflow:hidden}.meter-fill{height:100%;border-radius:4px;background:var(--accent)}.meter-fill.over{background:var(--error)}.line.static{cursor:default}.line.static:active{background:none}.tag{margin-left:8px;padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.75rem;font-weight:600;vertical-align:2px}.field-note{margin:-6px 0 0;color:var(--muted);font-size:.9rem}.link-button:disabled{opacity:.5}.bars{display:flex;flex-direction:column;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:16px}.bar-label{display:flex;justify-content:space-between;gap:12px;font-size:.95rem}.bar-track{margin-top:4px;height:8px}.bar{height:100%;min-width:4px;border-radius:4px;background:var(--accent)}.bars li+li{border-top:0}.bar-button{display:block;width:100%;text-align:left;padding:2px 0}.bars li.dim{opacity:.4}.lines h2 .link-button{min-height:0}.day+.day{margin-top:16px}.day-head{display:flex;justify-content:space-between;margin:0 4px 6px;font-size:.85rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.line-note{display:block;color:var(--muted);font-size:.85rem}.category-grid.choose{margin-top:0}.category-grid.choose button.on{background:var(--accent);color:#fff}.refund-switch{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;border-radius:10px;background:var(--accent-soft)}.refund-switch button{height:34px;border-radius:8px;color:var(--muted);font-size:.9rem;font-weight:600}.refund-switch button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001f}.amount-big.refund input,.amount-big.refund b{color:var(--accent)}.line-amount.refund{color:var(--accent);font-weight:600}.ticked-line{display:flex;align-items:stretch}.ticked-line .line{padding-left:4px}.check{flex:none;width:48px;display:flex;align-items:center;justify-content:center}.check-mark{width:24px;height:24px;border-radius:50%;border:2px solid #cbc2b2;display:flex;align-items:center;justify-content:center}.check-mark.on{background:var(--accent);border-color:var(--accent)}.check-mark svg{width:14px;height:14px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.lines .sublines{border:0;border-top:1px solid var(--line);border-radius:0;background:var(--bg)}.chevron{display:inline-block;width:8px;height:8px;margin-left:10px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-3px) rotate(45deg);transition:transform .2s ease}.chevron.open{transform:translateY(1px) rotate(-135deg)}.pending{margin:10px 4px 0;color:var(--muted);font-size:.9rem;font-variant-numeric:tabular-nums}.summary-account{display:flex;justify-content:space-between;gap:12px;margin-top:14px!important;padding-top:12px;border-top:1px solid var(--line);font-size:.95rem;font-weight:600;font-variant-numeric:tabular-nums}.summary-account small{display:block;color:var(--muted);font-size:.8rem;font-weight:400}.line.pot{flex-direction:column;align-items:stretch;gap:6px}.pot-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.pot-goal{display:block}.pot-goal .bar-track{display:block;background:var(--accent-soft);border-radius:4px;overflow:hidden}.pot-goal .bar{display:block}.pot-goal-text{display:block;margin-top:4px;color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}main.signin{padding-bottom:calc(env(safe-area-inset-bottom) + 32px)}.signin-form{display:flex;flex-direction:column;gap:14px;max-width:400px;margin:0 auto;padding-top:16vh}.signin-form h1{margin:0 0 4px;font-size:2.1rem;letter-spacing:-.02em}.signin-lead{margin:-8px 0 4px;color:var(--muted)}.signin-form .primary{margin-top:8px}.signin-error{margin:0;text-align:left}.signin-failed{padding-top:16vh;text-align:center}.password-link{display:block;margin:28px auto 0}
