:root{--bg:#f6f6f7;--surface:#fff;--surface-sunken:#f0f0f2;--text:#0b0b0f;--text-soft:#45454f;--text-muted:#6b6b78;--line:#0b0b0f17;--line-strong:#0b0b0f29;--accent:#0b0b0f;--accent-text:#fff;--accent-hover:#26262e;--debt:#c8102e;--debt-bg:#fdeaec;--credit:#04724d;--credit-bg:#e6f4ee;--focus:#2563eb;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--radius:16px;--radius-sm:12px;--radius-pill:999px;--tap:44px;--shadow-sheet:0 -1px 0 var(--line)}:root[data-scheme=dark]{--bg:#0a0a0c;--surface:#141417;--surface-sunken:#1c1c20;--text:#f5f5f7;--text-soft:#c2c2cc;--text-muted:#92929e;--line:#ffffff1a;--line-strong:#ffffff2e;--accent:#f5f5f7;--accent-text:#0b0b0f;--accent-hover:#dcdce2;--debt:#ff6f7d;--debt-bg:#ff6f7d24;--credit:#3ddc9a;--credit-bg:#3ddc9a24;--focus:#6ea8fe}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:var(--bg)}body{background:var(--bg);min-height:100dvh;color:var(--text);letter-spacing:-.011em;font-variant-numeric:tabular-nums;overscroll-behavior-y:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--s1)}button,input,textarea{font:inherit;font-variant-numeric:inherit;color:inherit}button{cursor:pointer}.app{width:100%;max-width:480px;padding:var(--s3) var(--s4) 128px;margin:0 auto}.balance{padding:var(--s5) var(--s1) var(--s4)}.shop-badge{align-items:center;gap:var(--s1);width:fit-content;margin-bottom:var(--s1);color:var(--text-muted);letter-spacing:.02em;font-size:12px;font-weight:550;display:flex}.balance-shop{align-items:center;gap:var(--s1);min-height:var(--tap);color:var(--text-muted);letter-spacing:-.01em;background:0 0;border:0;padding:0;font-size:15px;font-weight:500;display:inline-flex}.balance-shop[data-interactive=true]:active{color:var(--text)}.balance-value{letter-spacing:-.045em;margin-top:var(--s1);overflow-wrap:anywhere;font-size:clamp(2.25rem,11vw,3.25rem);font-weight:640;line-height:1.04}.balance-value.debt{color:var(--debt)}.balance-value.credit{color:var(--credit)}.balance-label{color:var(--text-muted);margin-top:var(--s2);font-size:14px}.stats{margin-top:var(--s4);background:var(--line);border:1px solid var(--line);border-radius:var(--radius-sm);grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:1px;display:grid;overflow:hidden}.stat{background:var(--surface);padding:var(--s3);min-width:0;min-height:var(--tap);text-align:left;border:0;transition:background .15s}.stat[data-active=true]{background:var(--surface-sunken);box-shadow:inset 0 -2px 0 var(--text)}.stat:disabled{cursor:default;opacity:.55}.stat:not(:disabled):active{background:var(--surface-sunken)}.stat-value{align-items:center;gap:var(--s1);letter-spacing:-.02em;font-size:17px;font-weight:620;display:flex}.stat-value.alert{color:var(--debt)}.stat-label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12.5px;overflow:hidden}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.card+.card{margin-top:var(--s3)}.card-pad{padding:var(--s4)}.row{align-items:center;gap:var(--s3);width:100%;min-height:60px;padding:var(--s3) var(--s4);text-align:left;background:0 0;border:0;transition:background .15s;display:flex}.row+.row{border-top:1px solid var(--line)}.row[data-tappable=true]:active{background:var(--surface-sunken)}.row-main{flex:1;min-width:0}.row-title{letter-spacing:-.012em;white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:550;overflow:hidden}.row-sub{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;overflow:hidden}.row-chevron{color:var(--text-muted);opacity:.55}.avatar{border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--line);width:38px;height:38px;color:var(--text-soft);letter-spacing:0;flex:none;place-items:center;font-size:15px;font-weight:600;display:grid}.amount{letter-spacing:-.02em;white-space:nowrap;flex:none;font-size:15.5px;font-weight:620}.amount.debt{color:var(--debt)}.amount.credit{color:var(--credit)}.amount.clear{color:var(--text-muted);font-size:14px;font-weight:500}.recent{margin-bottom:var(--s4)}.recent-strip{gap:var(--s3);padding:2px var(--s1) var(--s2);scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.recent-strip::-webkit-scrollbar{display:none}.recent-item{align-items:center;gap:var(--s1);scroll-snap-align:start;background:0 0;border:0;flex-direction:column;flex:none;width:76px;padding:0;display:flex}.recent-item:active .avatar{border-color:var(--text-muted)}.recent-name{width:100%;color:var(--text-soft);text-align:center;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;overflow:hidden}.filter-chip{align-items:center;gap:var(--s2);min-height:36px;margin-bottom:var(--s3);padding:var(--s1) var(--s3);border:1px solid var(--debt);border-radius:var(--radius-pill);background:var(--debt-bg);color:var(--debt);font-size:13px;font-weight:550;display:inline-flex}.filter-chip-x{opacity:.75;font-size:15px}.list-foot{min-height:44px;padding:var(--s3);color:var(--text-muted);place-items:center;font-size:12.5px;display:grid}.search{margin-bottom:var(--s2);position:relative}.search-icon{left:var(--s3);color:var(--text-muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search input{width:100%;min-height:var(--tap);padding:var(--s3) var(--s4) var(--s3) 42px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);outline:none;font-size:16px;transition:border-color .15s}.search input::placeholder{color:var(--text-muted)}.search input:focus{border-color:var(--line-strong)}.segmented{gap:var(--s1);padding:var(--s1);border-radius:var(--radius-sm);background:var(--surface-sunken);border:1px solid var(--line);margin-bottom:var(--s3);grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.segmented button{min-height:var(--tap);padding:var(--s2);color:var(--text-muted);background:0 0;border:0;border-radius:9px;font-size:14.5px;font-weight:550;transition:background .18s,color .18s}.segmented button[data-active=true]{background:var(--surface);color:var(--text);border:1px solid var(--line)}.btn{justify-content:center;align-items:center;gap:var(--s2);width:100%;min-height:50px;padding:var(--s3) var(--s4);border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);letter-spacing:-.012em;border:1px solid #0000;font-size:15.5px;font-weight:580;transition:transform .12s,background .18s,opacity .18s;display:inline-flex}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn.secondary{background:var(--surface);border-color:var(--line-strong);color:var(--text)}.btn.ghost{border-color:var(--line);color:var(--text-soft);background:0 0}.btn.danger{border-color:var(--line);color:var(--debt);background:0 0}.btn.debt{background:var(--debt);color:#fff}.btn.payment{background:var(--credit);color:#fff}:root[data-scheme=dark] .btn.debt,:root[data-scheme=dark] .btn.payment{color:#0b0b0f}.btn-small{width:auto;min-height:var(--tap);padding:var(--s2) var(--s3);border-radius:9px;font-size:14px}.btn-pair{gap:var(--s2);margin:var(--s4) 0 var(--s3);grid-template-columns:1fr 1fr;display:grid}.btn-stack>*+*{margin-top:var(--s2)}.fab{left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));z-index:15;width:auto;max-width:480px;margin:0 auto;margin-inline:max(var(--s4), calc((100vw - 480px) / 2 + var(--s4)));position:fixed}.tabbar{z-index:20;justify-content:center;gap:var(--s6);background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow-sheet);padding:var(--s1) 0 max(var(--s1), env(safe-area-inset-bottom));display:flex;position:fixed;inset:auto 0 0}.tabbar button{min-width:72px;min-height:var(--tap);padding:var(--s1) var(--s3);border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;font-size:11.5px;font-weight:550;transition:color .18s;display:flex}.tabbar button[data-active=true]{color:var(--text)}.fallback-back{z-index:25;justify-content:flex-start;align-items:center;gap:var(--s1);width:100%;max-width:480px;min-height:var(--tap);padding:var(--s2) var(--s4);background:var(--bg);color:var(--text-soft);border:0;margin:0 auto;font-size:15px;font-weight:500;display:flex;position:sticky;top:0}.fallback-back:active{color:var(--text)}.field{padding:var(--s3) var(--s4);cursor:text;display:block}.field+.field{border-top:1px solid var(--line)}.field>span,.field label{color:var(--text-muted);letter-spacing:-.005em;margin-bottom:var(--s1);font-size:12.5px;font-weight:550;display:block}.field input,.field textarea{background:0 0;border:0;outline:none;width:100%;min-height:32px;padding:0;font-size:16px;display:block}.field input::placeholder,.field textarea::placeholder{color:var(--text-muted);opacity:.75}.field textarea{resize:none;min-height:48px}.field input[type=date]{min-height:var(--tap);padding:var(--s2) var(--s3);border:1px solid var(--line-strong);color:var(--text-soft);border-radius:10px}.field input:disabled,.field textarea:disabled{color:var(--text-muted);-webkit-text-fill-color:var(--text-muted);opacity:1}.amount-input{letter-spacing:-.04em;text-align:center;font-weight:640;line-height:1.15;padding:var(--s2) 0!important;font-size:clamp(2rem,9vw,2.75rem)!important}.amount-input.debt{color:var(--debt)}.amount-input.payment{color:var(--credit)}.field-error{color:var(--debt);margin-top:var(--s1);font-size:12.5px}.chip-row{gap:var(--s2);flex-wrap:wrap;display:flex}.chip-row.grid{grid-template-columns:repeat(2,1fr);display:grid}.chip-select{min-height:var(--tap);padding:var(--s2) var(--s4);border-radius:var(--radius-pill);border:1px solid var(--line-strong);color:var(--text-soft);background:0 0;font-size:13.5px;font-weight:500;transition:background .15s,color .15s,border-color .15s}.chip-select[data-active=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.chip-select:disabled{opacity:.4;cursor:default}.quick-row{gap:var(--s2);flex-wrap:wrap;display:flex}.quick-row .chip-select{font-variant-numeric:tabular-nums}.quick-row .chip-select.clear{color:var(--text-muted);border-style:dashed;margin-left:auto}.chip{align-items:center;gap:var(--s2);min-height:var(--tap);padding:var(--s2) var(--s4);border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface);color:var(--text-soft);font-size:13.5px;font-weight:500;text-decoration:none;display:inline-flex}.section-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin:var(--s5) var(--s1) var(--s2);font-size:11.5px;font-weight:620}.center{text-align:center;min-height:70dvh;padding:var(--s5);align-content:center;place-items:center;gap:var(--s2);display:grid}.center h2{letter-spacing:-.02em;margin:0;font-size:19px;font-weight:620}.center p{max-width:320px;color:var(--text-muted);margin:0;font-size:14px}.state-icon{border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--line);width:48px;height:48px;color:var(--text-muted);margin:0 auto var(--s3);place-items:center;display:grid}.empty{padding:var(--s7) var(--s5);text-align:center;color:var(--text-muted);font-size:14px}.empty-title{color:var(--text);margin-bottom:var(--s1);font-size:15.5px;font-weight:580}.error-box{align-items:flex-start;gap:var(--s2);border-radius:var(--radius-sm);padding:var(--s3);margin-bottom:var(--s3);background:var(--debt-bg);color:var(--debt);border:1px solid #0000;font-size:14px;font-weight:500;display:flex}.spinner{border:2px solid var(--line-strong);border-top-color:var(--text);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}.day-header{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);padding:var(--s3) var(--s4) var(--s1);background:var(--surface);font-size:11.5px;font-weight:620}.day-header+.row{border-top:0}.entry-note{color:var(--text-muted);font-weight:400}.overdue{align-items:center;gap:var(--s1);color:var(--debt);margin-top:2px;font-size:12.5px;font-weight:550;display:inline-flex}.dot{width:7px;height:7px;margin-right:var(--s2);vertical-align:1px;border-radius:50%;display:inline-block}.dot.debt{background:var(--debt)}.dot.credit{background:var(--credit)}.link-box{background:var(--surface-sunken);border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--s3);word-break:break-all;color:var(--text-soft);margin-top:var(--s3);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.45}.hint-text{color:var(--text-muted);padding:0 var(--s1);margin-top:var(--s2);font-size:12.5px;line-height:1.5}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.card,.balance{animation:.3s cubic-bezier(.22,1,.36,1) both rise}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=600px){.app,.fallback-back{max-width:560px}.app{padding-top:var(--s5)}.fab{max-width:560px;margin-inline:max(var(--s4), calc((100vw - 560px) / 2 + var(--s4)))}.balance-value{font-size:3.5rem}.row{min-height:64px;padding-inline:var(--s5)}.field,.day-header{padding-inline:var(--s5)}.chip-row.grid{grid-template-columns:repeat(4,1fr)}}@media (hover:hover) and (pointer:fine){.row[data-tappable=true]:hover{background:var(--surface-sunken)}.btn:hover:not(:disabled){opacity:.88}.tabbar button:hover{color:var(--text-soft)}.chip-select:hover{border-color:var(--text-muted)}}.search-note{align-items:center;gap:var(--s2);margin-bottom:var(--s3);padding:0 var(--s1);color:var(--text-muted);font-size:12.5px;font-weight:500;display:flex}.row-badge{margin-left:var(--s2);padding:1px var(--s2);border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--line);color:var(--text-muted);letter-spacing:.01em;vertical-align:1px;font-size:11px;font-weight:550;display:inline-block}.match-card{border-color:var(--line-strong)}.match-title{align-items:center;gap:var(--s2);color:var(--text-muted);font-size:12.5px;font-weight:550;display:flex}.match-name{margin-top:var(--s2);letter-spacing:-.02em;font-size:19px;font-weight:620}.match-meta{color:var(--text-muted);margin-top:2px;font-size:13.5px}
