:root{color-scheme:light;--desk: #ffe8dc;--paper: #fff8f3;--ink: #4a2b2b;--muted: #9a746c;--line: #ffd9c8;--earn: #2f9d6a;--loss: #e25b6a;--accent: #ff7d66;--accent-deep: #e15a45;--chip: #ffe1ef;--card: #fff;--shadow: 0 8px 0 #ffd3c2;font-family:Yuanti SC,PingFang SC,Hiragino Maru Gothic ProN,Noto Sans SC,sans-serif;line-height:1.45}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 12% 8%,#ffd0e4 0,transparent 26%),radial-gradient(circle at 88% 0%,#ffe0b8 0,transparent 28%),radial-gradient(circle at 80% 90%,#d7f6e4 0,transparent 24%),var(--desk);color:var(--ink)}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffc7b4;outline-offset:2px}.buddy{width:72px;height:72px;border-radius:50%;background:#ffb199;box-shadow:0 6px #f08b72;position:relative;flex:0 0 auto}.buddy:before{content:"";position:absolute;left:16px;top:24px;width:40px;height:12px;background:radial-gradient(circle at 7px 6px,#4a2b2b 4px,transparent 5px),radial-gradient(circle at 33px 6px,#4a2b2b 4px,transparent 5px)}.buddy:after{content:"";position:absolute;left:24px;top:40px;width:24px;height:12px;border-bottom:3px solid #4a2b2b;border-radius:0 0 16px 16px}.auth{width:min(480px,100%);min-height:100dvh;margin:0 auto;padding:48px 22px;background:radial-gradient(circle at 80% 12%,#ffe0ee 0,transparent 28%),var(--paper)}.auth .buddy{margin-bottom:16px}.auth h1{margin:0 0 8px}.auth form{display:grid;gap:12px;margin-top:22px}.auth a{color:var(--accent-deep)}.offline-banner,.sync-banner{width:min(480px,100%);margin:0 auto;padding:10px 20px;background:#ffe7c7;color:var(--ink)}.sync-banner{background:transparent;color:var(--muted);font-size:13px}.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.thumbs img{width:84px;height:84px;object-fit:cover;border-radius:18px;background:var(--line)}.thumbs.small img{width:36px;height:36px;border-radius:10px}.thumb-card{width:auto}.thumb-button{width:auto;padding:0;border:0;background:transparent;text-align:left}.thumb-card .text-button{display:block;margin-top:4px;font-size:12px}.preview-layer{z-index:40;display:grid;place-items:center}.preview-image{position:relative;z-index:1;max-width:min(92vw,520px);max-height:82dvh;object-fit:contain;border-radius:22px;background:#fff}.photo-pick{display:block;text-align:center}.photo-pick input{display:none}.list a{gap:10px}.list .thumbs{margin:0}.shell{width:min(480px,100%);min-height:100dvh;margin:0 auto;background:radial-gradient(circle at 90% 80px,#ffe4ef 0,transparent 22%),radial-gradient(circle at 0% 180px,#fff0d8 0,transparent 24%),var(--paper)}.topbar,.page{padding-left:18px;padding-right:18px}.topbar{display:grid;grid-template-columns:64px 1fr auto;align-items:center;padding-top:calc(14px + env(safe-area-inset-top))}.back,.settings{border:0;background:#fff;color:var(--ink);text-decoration:none;border-radius:999px;padding:6px 12px;font-size:13px;box-shadow:0 3px 0 var(--line)}.back{justify-self:start}.back:disabled{opacity:.35;cursor:default;box-shadow:none}.settings.active{background:#ffe1d4}.brand{justify-self:center;color:inherit;text-decoration:none;font-size:20px;font-weight:700}.page{padding-bottom:calc(108px + env(safe-area-inset-bottom))}h1{margin:0 0 14px;font-size:30px;font-weight:700}h2{margin:0 0 10px;font-size:16px}.eyebrow{margin:0;color:var(--muted);font-size:13px}.hero{display:flex;align-items:center;gap:14px;margin:8px 0 16px;padding:16px;border-radius:28px;background:#fff;box-shadow:var(--shadow)}.balance-row{display:flex;align-items:center;gap:8px}.balance{margin:0;font-size:52px;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-weight:700}.today{display:inline-flex;margin:6px 0 0;padding:3px 10px;border-radius:999px;background:#fff1d6;color:#a15b2a;font-size:13px}.chip{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#ffe1e6;color:var(--loss);font-size:12px}.primary,.ghost,.danger{width:100%;border-radius:999px;padding:14px 16px;border:0;font-weight:700}.primary{background:var(--accent);color:#fff;box-shadow:0 4px 0 var(--accent-deep)}.primary:disabled,.pager button:disabled{opacity:.45;box-shadow:none}.ghost{margin-top:10px;background:#fff;color:var(--ink);box-shadow:0 3px 0 var(--line)}.danger{background:var(--loss);color:#fff;margin-top:10px;box-shadow:0 4px #c24152}.text-button{border:0;background:transparent;color:var(--accent-deep);padding:0;font-weight:700}.tabbar{position:fixed;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translate(-50%);width:min(448px,calc(100% - 16px));display:grid;grid-template-columns:repeat(4,1fr);background:#fffffff0;border-radius:24px;box-shadow:0 10px 30px #e15a4529;padding:6px;z-index:10}.tabbar a{text-align:center;text-decoration:none;color:var(--muted);padding:10px 0;font-size:14px;border-radius:18px}.tabbar a.active{color:var(--ink);font-weight:700;background:#ffe7dc}.block{margin-top:22px}.list,.sublist{list-style:none;margin:0;padding:0;display:grid;gap:8px}.family{background:#fff;border-radius:20px;box-shadow:0 3px #ffe4d8;padding:2px 4px 8px}.sublist a,.list a,.static-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:18px;background:var(--card);color:inherit;text-decoration:none;box-shadow:0 3px #ffe4d8}.fold{margin-top:18px}.fold summary{cursor:pointer;color:var(--muted);margin-bottom:10px}.tiers{display:grid;gap:8px;margin:8px 0 12px}.tiers button{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;background:#fff;border-radius:18px;padding:12px 14px;text-align:left;box-shadow:0 3px 0 var(--line)}.tiers button span{color:var(--muted)}.tiers button[aria-pressed=true]{background:#ffe7dc;color:var(--ink);box-shadow:0 3px #ffc7b4}.tiers button[aria-pressed=true] span{color:inherit}.family>a{background:transparent;box-shadow:none}.family .sublist{margin:0;padding:0 8px;gap:6px}.family .sublist a{background:#fff4ee;box-shadow:none;border-radius:14px;padding:10px 12px}.list strong,.static-row strong{display:block}.list small,.muted{color:var(--muted)}.list em,.static-row em{font-style:normal;color:var(--accent-deep);font-weight:700}.voided{opacity:.45}.voided strong,.voided-title{text-decoration:line-through}.earn{color:var(--earn)}.loss{color:var(--loss)}.overlay{position:fixed;inset:0;z-index:30}.backdrop{position:absolute;inset:0;width:100%;border:0;background:#4a2b2b47}.sheet{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:min(480px,100%);min-height:min(72dvh,640px);max-height:min(92dvh,760px);overflow:auto;background:#fff8f3;border-radius:28px 28px 0 0;padding:18px 18px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px #e15a451f}.sheet-head,.row-actions,.pager{display:flex;justify-content:space-between;align-items:center;gap:8px}.stack{display:grid;gap:12px}.field{display:grid;gap:6px;position:relative}.field span,.field legend,.stats-grid span,.metrics span,.confirm dt{color:var(--muted);font-size:13px}.field input,.field textarea,.field select{width:100%;border:0;background:#fff;border-radius:16px;padding:13px 14px;box-shadow:inset 0 0 0 2px #ffe1d4}.field textarea{min-height:72px;resize:vertical}.suggestions{position:absolute;z-index:2;top:calc(100% + 6px);left:0;right:0;max-height:220px;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 12px 30px #4a2b2b1f}.suggestions.inline{position:static;max-height:min(42dvh,320px);margin-top:8px;box-shadow:none;background:transparent;overflow:auto}.suggestions.inline button{margin-top:8px;border-radius:16px;background:#fff;box-shadow:0 3px #ffe4d8}.suggestions button{width:100%;display:flex;justify-content:space-between;gap:8px;border:0;background:transparent;padding:10px 12px;text-align:left}.group-title,.suggestions p{margin:0;padding:8px 12px 0;color:var(--muted);font-size:12px}.presets{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.presets button,.segmented button,.pager button,.choice-row button{border:0;background:#fff;border-radius:16px;padding:10px;box-shadow:0 3px 0 var(--line)}.presets button[aria-pressed=true],.segmented button[aria-pressed=true],.choice-row button[aria-pressed=true]{background:#ffe7dc;color:var(--ink);box-shadow:0 3px #ffc7b4}.presets small{display:block;color:inherit;opacity:.7}.preview{font-size:28px;margin:4px 0;font-weight:700}.error{color:var(--loss);margin:0}.ok{color:var(--earn);margin:0}.suggest{margin:12px 0;padding:14px;border-radius:20px;background:#fff4d8}.suggest p{margin:0 0 10px}.row-actions .primary,.row-actions .ghost,.row-actions .danger{width:auto;flex:1;margin:0}.metrics,.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 18px}.stats-grid{grid-template-columns:repeat(2,1fr)}.metrics div,.stats-grid div{background:#fff;border-radius:18px;padding:10px 12px;box-shadow:0 3px #ffe4d8}.metrics strong,.stats-grid strong{display:block;margin-top:2px;font-size:20px;font-variant-numeric:tabular-nums}.segmented,.choice-row{display:grid;gap:8px;margin-bottom:12px}.segmented{grid-template-columns:repeat(4,1fr)}.choice-row{grid-template-columns:1fr 1fr}.pager{margin-bottom:14px}.pager strong{font-size:15px}.trend{display:flex;gap:6px;overflow-x:auto;padding:12px;border-radius:20px;background:#fff;box-shadow:0 3px #ffe4d8}.trend-col{width:22px;flex:0 0 22px;text-align:center}.trend-plot{height:92px;display:flex;flex-direction:column}.trend-up,.trend-down{flex:1;display:flex}.trend-up{align-items:flex-end}.trend-down{align-items:flex-start}.trend-col i{display:block;width:100%;border-radius:999px}.trend-col i.up{background:#7ddeb0}.trend-col i.down{background:#ffb3bd}.trend-col i.flat{background:#ffe1d4}.trend-col span{display:block;margin-top:4px;color:var(--muted);font-size:10px}.confirm{margin:0 0 12px}.confirm div{display:flex;justify-content:space-between;padding:8px 0}.confirm dd{margin:0;font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.debt{color:var(--loss);font-weight:700}.choice{display:flex;gap:8px;align-items:center;margin-bottom:8px}@media(max-width:480px){.balance{font-size:46px}}
