:root{--font:"Nunito", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, -apple-system, sans-serif;--bg:#fff7f0;--bg-dots:#ff8fab2e;--surface:#fff;--surface-2:#fff1e8;--text:#3b2e2a;--muted:#9a8b85;--line:#f0e0d6;--ink:#3b2e2a;--mascot-line:#3b2e2a;--blush:#ff9eb5;--primary:#ff8fab;--primary-2:#ff6f95;--primary-ink:#fff;--danger:#ff6b6b;--c-pink:#ffb3c6;--c-pink-ink:#b8365a;--c-mint:#b9edd8;--c-mint-ink:#1f7a5c;--c-lavender:#d9d4f7;--c-lavender-ink:#5b4eb8;--c-butter:#ffe9a8;--c-butter-ink:#9a6d05;--c-sky:#c9e6ff;--c-sky-ink:#2e6ba8;--c-peach:#ffd3b6;--c-peach-ink:#b5561e;--c-lime:#ddf3b0;--c-lime-ink:#587a12;--c-grape:#ead0f7;--c-grape-ink:#7b3fa0;--shadow:0 8px 24px #78463c14;--shadow-press:0 4px 0 #3b2e2a1f;--radius:22px;--radius-s:14px;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}:root[data-theme=dark]{--bg:#1e1b24;--bg-dots:#ff8fab1a;--surface:#2a2633;--surface-2:#343040;--text:#f6efea;--muted:#a79da6;--line:#3e3949;--ink:#f6efea;--mascot-line:#2a2633;--blush:#ff8fab;--primary:#ff8fab;--primary-2:#ff6f95;--primary-ink:#2a1a22;--danger:#ff7b7b;--c-pink:#e79fb3;--c-pink-ink:#ffd6e1;--c-mint:#9fd9c4;--c-mint-ink:#113d2e;--c-lavender:#bdb6ec;--c-lavender-ink:#26205a;--c-butter:#f2d98a;--c-butter-ink:#4a3600;--c-sky:#a9cdf0;--c-sky-ink:#17385c;--c-peach:#f0bc9c;--c-peach-ink:#4d2410;--c-lime:#c8e39a;--c-lime-ink:#2f4306;--c-grape:#d3b3e6;--c-grape-ink:#3f1e56;--shadow:0 8px 24px #0000004d;--shadow-press:0 4px 0 #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);background-image:radial-gradient(var(--bg-dots) 1.6px, transparent 1.6px);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;background-size:22px 22px;min-height:100dvh}body.no-scroll{overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}a{color:var(--c-pink-ink)}#root{min-height:100dvh}.app{max-width:520px;min-height:100dvh;margin:0 auto}.page{padding:calc(12px + var(--sat)) 16px calc(28px + var(--sab));flex-direction:column;gap:14px;animation:.28s cubic-bezier(.2,.9,.3,1.2) page-in;display:flex}.page--with-bar{padding-bottom:calc(110px + var(--sab))}@keyframes page-in{0%{opacity:0;transform:translateY(10px)scale(.99)}to{opacity:1;transform:none}}.topbar{justify-content:space-between;align-items:center;gap:8px;min-height:48px;display:flex}.topbar__title{margin:0;font-size:20px;font-weight:900}.brand{align-items:center;gap:10px;display:flex}.brand__name{letter-spacing:.3px;font-size:20px;font-weight:900}.brand__sub{color:var(--muted);font-size:12px;font-weight:700}.stack{flex-direction:column;gap:14px;display:flex}.stack-s{flex-direction:column;gap:10px;display:flex}.stack-xs{flex-direction:column;gap:6px;display:flex}.row{align-items:center;display:flex}.row.gap{gap:10px}.gap-s{gap:6px}.wrap{flex-wrap:wrap}.center{align-items:center}.between{justify-content:space-between}.grow{flex:1;min-width:0}.left{text-align:left}.right{text-align:right}.strong{font-weight:800}.muted{color:var(--muted)}.small{font-size:12.5px;line-height:1.5}.center-text{text-align:center}.danger-text{color:var(--danger)}.label{color:var(--muted);margin-top:4px;font-size:12.5px;font-weight:800}.section-title{font-size:15px;font-weight:900}p{margin:0}.card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card--pink{background:var(--c-pink);color:var(--c-pink-ink);border-color:#0000}.card--mint{background:var(--c-mint);color:var(--c-mint-ink);border-color:#0000}.list-row{text-align:left;border-radius:var(--radius-s);width:100%;margin:-6px;padding:6px}.list-row:active{background:var(--surface-2)}.btn{background:var(--surface-2);color:var(--text);border:2px solid var(--line);box-shadow:var(--shadow-press);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:12px 18px;font-size:15px;font-weight:900;transition:transform 80ms,box-shadow 80ms,filter .15s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #0000001f}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn--primary{background:var(--primary);border-color:var(--primary-2);color:var(--primary-ink);box-shadow:0 4px 0 var(--primary-2)}.btn--mint{background:var(--c-mint);border-color:var(--c-mint);color:var(--c-mint-ink);box-shadow:0 4px #1f7a5c40}.btn--butter{background:var(--c-butter);border-color:var(--c-butter);color:var(--c-butter-ink);box-shadow:0 4px #9a6d0540}.btn--ghost{background:var(--surface)}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:0 4px #b4282859}.btn--danger-text{color:var(--danger)}.btn--lg{padding:15px 24px;font-size:17px}.btn--sm{padding:8px 14px;font-size:13px}.icon-btn{background:var(--surface);border:2px solid var(--line);border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;font-weight:900;transition:transform .1s;display:inline-flex}.icon-btn:active{transform:scale(.92)}.icon-btn--sm{width:32px;height:32px;color:var(--muted);border-radius:10px;flex-shrink:0;font-size:14px}.link{color:var(--muted);text-underline-offset:3px;font-weight:700;text-decoration:underline}.fab{right:max(18px,50% - 242px);bottom:calc(22px + var(--sab));background:var(--primary);width:62px;height:62px;color:var(--primary-ink);box-shadow:0 6px 0 var(--primary-2), 0 12px 28px #ff6f9566;z-index:5;border-radius:50%;font-size:30px;font-weight:900;transition:transform .1s;position:fixed}.fab:active{box-shadow:0 2px 0 var(--primary-2);transform:translateY(4px)}.input{border-radius:var(--radius-s);border:2px solid var(--line);background:var(--surface-2);appearance:none;outline:none;width:100%;min-width:0;padding:11px 14px;font-weight:700;transition:border-color .15s}.input:focus{border-color:var(--primary)}.input::placeholder{color:var(--muted);font-weight:600}.input--money{text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;width:96px}.input--qty{text-align:center;flex-shrink:0;width:46px;padding-left:6px;padding-right:6px}.input--title{background:0 0;border-color:#0000;padding:6px 10px;font-size:20px;font-weight:900}.input--title:focus{background:var(--surface-2)}.input--date{width:auto;color:var(--muted);background:0 0;border-color:#0000;align-self:flex-start;padding:6px 10px;font-size:13px}.input--inline{width:auto;padding:8px 12px;font-size:14px}select.input{background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.textarea{resize:vertical;line-height:1.5}input[type=checkbox]{accent-color:var(--primary);width:18px;height:18px}.avatar{border:2.5px solid var(--ink);background:var(--c-pink);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;line-height:1;transition:transform .12s,opacity .12s,filter .12s;display:inline-flex}button.avatar:active{transform:scale(.9)}.avatar--off{opacity:.32;filter:grayscale(.7);border-style:dashed}.avatar--dashed{border-style:dashed;border-color:var(--muted);color:var(--muted);background:0 0;font-size:22px;font-weight:900}.mini-avatar{border:2px solid var(--surface);background:var(--c-pink);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;margin-left:-6px;font-size:12px;display:inline-flex}.mini-avatar:first-child{margin-left:0}.mini-avatar--more{background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:900}.c-pink{background:var(--c-pink)}.c-mint{background:var(--c-mint)}.c-lavender{background:var(--c-lavender)}.c-butter{background:var(--c-butter)}.c-sky{background:var(--c-sky)}.c-peach{background:var(--c-peach)}.c-lime{background:var(--c-lime)}.c-grape{background:var(--c-grape)}.c-border-pink{border-color:var(--c-pink)}.c-border-mint{border-color:var(--c-mint)}.c-border-lavender{border-color:var(--c-lavender)}.c-border-butter{border-color:var(--c-butter)}.c-border-sky{border-color:var(--c-sky)}.c-border-peach{border-color:var(--c-peach)}.c-border-lime{border-color:var(--c-lime)}.c-border-grape{border-color:var(--c-grape)}.pill{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 10px;font-size:11.5px;font-weight:900;display:inline-flex}.pill--mint{background:var(--c-mint);color:var(--c-mint-ink)}.pill--pink{background:var(--c-pink);color:var(--c-pink-ink)}.pill--butter{background:var(--c-butter);color:var(--c-butter-ink);vertical-align:middle;font-size:10.5px}.pill--grey{background:var(--surface-2);color:var(--muted)}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--surface-2);border:2px solid var(--line);border-radius:999px;padding:8px 14px;font-size:13.5px;font-weight:800;transition:transform .1s,background .15s}.chip:active{transform:scale(.95)}.chip.is-on{background:var(--c-butter);border-color:var(--c-butter);color:var(--c-butter-ink)}.chip--xs{padding:4px 10px;font-size:12px}.swatch{border:3px solid #0000;border-radius:50%;width:34px;height:34px;transition:transform .1s}.swatch.is-on{border-color:var(--ink);transform:scale(1.12)}.seg{background:var(--surface-2);border:2px solid var(--line);border-radius:999px;gap:4px;padding:4px;display:flex}.seg__btn{color:var(--muted);white-space:nowrap;border-radius:999px;flex:1;padding:9px 6px;font-size:13.5px;font-weight:900;transition:background .15s,color .15s}.seg__btn.is-on{background:var(--surface);color:var(--text);box-shadow:0 2px 8px #00000014}.emoji-grid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.emoji-grid__btn{aspect-ratio:1;background:var(--surface-2);border:2px solid var(--line);border-radius:16px;font-size:26px;transition:transform .1s}.emoji-grid__btn:active{transform:scale(.9)}.emoji-grid__btn.is-on{background:var(--c-butter);border-color:var(--c-butter-ink)}.hero-stat{justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.hero-stat__label{opacity:.85;font-size:13px;font-weight:800}.hero-stat__value{font-variant-numeric:tabular-nums;letter-spacing:-.5px;font-size:30px;font-weight:900}.hero-stat__emoji{font-size:40px;animation:2.4s ease-in-out infinite wiggle}.project-card{text-align:left;align-items:center;gap:12px;width:100%;transition:transform .1s;display:flex}.project-card:active{transform:scale(.985)}.project-card.is-done{border-color:var(--c-mint)}.project-card__emoji{background:var(--surface-2);border-radius:18px;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:28px;display:flex}.project-card__body{flex:1;min-width:0}.project-card__name{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:900;overflow:hidden}.project-card__meta{color:var(--muted);flex-wrap:wrap;gap:5px;margin-top:2px;font-size:12px;font-weight:700;display:flex}.project-card__meta span{white-space:nowrap}.project-card__people{margin-top:8px;display:flex}.project-card__right{text-align:right;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;max-width:40%;display:flex}.project-card__total{font-variant-numeric:tabular-nums;font-size:16px;font-weight:900}.project-card__base{color:var(--muted);font-size:11.5px;font-weight:700}.project-head{align-items:center;gap:12px;display:flex}.project-head__emoji{background:var(--surface);border:2px solid var(--line);width:68px;height:68px;box-shadow:var(--shadow-press);border-radius:24px;flex-shrink:0;justify-content:center;align-items:center;font-size:36px;transition:transform .1s;display:flex}.project-head__emoji:active{box-shadow:none;transform:translateY(3px)}.people-row{scrollbar-width:none;gap:12px;padding:4px 2px 6px;display:flex;overflow-x:auto}.people-row::-webkit-scrollbar{display:none}.person-chip{flex-direction:column;flex-shrink:0;align-items:center;gap:4px;width:60px;display:flex;position:relative}.person-chip__name{text-overflow:ellipsis;white-space:nowrap;max-width:60px;font-size:12px;font-weight:800;overflow:hidden}.person-chip__star{filter:drop-shadow(0 1px 1px #0003);font-size:14px;position:absolute;top:-6px;right:2px}.person-chip--add .person-chip__name{color:var(--muted)}.rate-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rate-row__eq{color:var(--muted);font-size:13.5px;font-weight:800}.mode-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.mode-btn{border:2px solid var(--line);background:var(--surface-2);border-radius:18px;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;transition:transform .1s,background .15s;display:flex}.mode-btn:active{transform:scale(.96)}.mode-btn.is-on{background:var(--c-lavender);border-color:var(--c-lavender-ink);color:var(--c-lavender-ink)}.mode-btn__emoji{font-size:26px}.mode-btn__label{font-size:13.5px;font-weight:900}.mode-btn__desc{opacity:.75;text-align:center;font-size:10.5px;font-weight:700;line-height:1.3}.item-row{background:var(--surface-2);border-radius:16px;flex-direction:column;gap:8px;padding:10px;animation:.22s cubic-bezier(.2,.9,.3,1.3) pop-in;display:flex}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.item-row .input{background:var(--surface)}.item-row__main{align-items:center;gap:6px;display:flex}.item-row__who{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.who-chips{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.kind-toggle{border:2px solid #0000;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900}.kind-toggle.is-main{background:var(--c-peach);color:var(--c-peach-ink)}.kind-toggle.is-shared{background:var(--c-mint);color:var(--c-mint-ink)}.extra-emoji{flex-shrink:0;font-size:20px}.bottom-bar{left:50%;bottom:calc(14px + var(--sab));background:var(--surface);border:2px solid var(--line);z-index:5;border-radius:24px;justify-content:space-between;align-items:center;gap:10px;width:calc(100% - 24px);max-width:496px;padding:12px 12px 12px 18px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 12px 30px #00000024}.bottom-bar__label{color:var(--muted);font-size:12px;font-weight:800}.bottom-bar__value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:900}.bottom-bar__base{color:var(--muted);font-size:12px;font-weight:700}.total-card{justify-content:space-between;align-items:center;padding:20px;display:flex}.total-card__label{opacity:.85;font-size:13px;font-weight:800}.total-card__value{letter-spacing:-.5px;font-variant-numeric:tabular-nums;font-size:34px;font-weight:900}.total-card__base{opacity:.85;font-size:14px;font-weight:800}.total-card__payer{opacity:.85;margin-top:8px;font-size:12.5px;font-weight:800}.total-card__emoji{font-size:46px;animation:2.4s ease-in-out infinite wiggle}.person-result{border-width:2.5px;flex-direction:column;gap:8px;padding:12px;display:flex}.person-result.is-settled{opacity:.72}.person-result__head{text-align:left;align-items:center;gap:12px;width:100%;display:flex}.person-result__amt{font-variant-numeric:tabular-nums;font-size:19px;font-weight:900}.person-result__lines{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:4px;padding:8px 12px;font-size:13px;font-weight:700;display:flex}.line{justify-content:space-between;gap:10px;display:flex}.line--extra{color:var(--muted)}.person-result__settle{align-self:flex-end}.friend-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.friend{border-radius:16px;flex-direction:column;align-items:center;gap:6px;padding:8px 4px;font-size:12.5px;font-weight:800;transition:transform .1s;display:flex}.friend:active{background:var(--surface-2);transform:scale(.94)}.friend span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.friend--add{color:var(--muted)}.sheet-backdrop{z-index:20;opacity:0;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#28141e73;justify-content:center;align-items:flex-end;transition:opacity .2s;display:flex;position:fixed;inset:0}.sheet-backdrop.is-open{opacity:1}.sheet{background:var(--surface);width:100%;max-width:520px;max-height:88dvh;padding:10px 18px calc(22px + var(--sab));border-radius:28px 28px 0 0;flex-direction:column;transition:transform .22s cubic-bezier(.2,.9,.3,1.1);display:flex;transform:translateY(40px);box-shadow:0 -10px 40px #0003}.sheet--tall{height:88dvh}.is-open .sheet{transform:none}.sheet__grip{background:var(--line);border-radius:3px;width:44px;height:5px;margin:4px auto 12px}.sheet__title{text-align:center;margin-bottom:12px;font-size:18px;font-weight:900}.sheet__body{flex:1;padding-bottom:4px;overflow-y:auto}.lock{min-height:100dvh;padding:calc(24px + var(--sat)) 20px calc(24px + var(--sab));flex-direction:column;justify-content:center;align-items:center;gap:24px;max-width:520px;margin:0 auto;display:flex}.lock__hero{text-align:center}.lock__title{margin:10px 0 4px;font-size:26px;font-weight:900}.lock__sub{color:var(--muted);font-weight:700}.lock__foot{text-align:center;min-height:60px}.lock__wipe{color:var(--muted);flex-direction:column;gap:12px;max-width:320px;font-size:13px;display:flex}.pinpad{flex-direction:column;align-items:center;gap:26px;padding:8px 0;display:flex}.pin-dots{gap:16px;display:flex}.pin-dots.is-shake{animation:.45s shake}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}.pin-dot{border:2.5px solid var(--ink);background:0 0;border-radius:50%;width:18px;height:18px;transition:background .12s,transform .12s}.pin-dot.is-on{background:var(--primary);border-color:var(--primary);transform:scale(1.15)}.pin-keys{grid-template-columns:repeat(3,72px);gap:14px;display:grid}.pin-key{background:var(--surface);border:2px solid var(--line);height:72px;box-shadow:var(--shadow-press);border-radius:50%;font-size:26px;font-weight:900;transition:transform 80ms,box-shadow 80ms}.pin-key:active:not(:disabled){box-shadow:none;background:var(--c-butter);transform:translateY(3px)}.pin-key--blank{visibility:hidden}.scanner{aspect-ratio:4/3;background:#111;border-radius:20px;position:relative;overflow:hidden}.scanner__video{object-fit:cover;width:100%;height:100%;display:block}.scanner__frame{pointer-events:none;border:3px dashed #ffffffd9;border-radius:18px;animation:1.8s ease-in-out infinite breathe;position:absolute;inset:14% 8%}@keyframes breathe{0%,to{opacity:.7}50%{opacity:1}}.scanner__status{justify-content:center;gap:8px;display:flex;position:absolute;bottom:10px;left:0;right:0}.scan-badge{color:#fff;background:#0000008c;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:900}.scan-badge.is-on{background:var(--c-mint);color:var(--c-mint-ink)}.ocr-box{background:var(--surface-2);border:2px dashed var(--line);border-radius:20px;justify-content:center;align-items:center;min-height:200px;display:flex;position:relative;overflow:hidden}.ocr-box__img{max-width:100%;max-height:46dvh;display:block}.ocr-box__hint{color:var(--muted);text-align:center;padding:40px 20px;font-weight:800}.ocr-box__overlay{color:#fff;text-align:center;background:#0000008c;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px;font-weight:800;display:flex;position:absolute;inset:0}.spinner{border:4px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.bar{background:#ffffff40;border-radius:4px;width:70%;height:8px;overflow:hidden}.bar__fill{background:var(--c-mint);height:100%;transition:width .2s}.review-row{align-items:center;gap:6px;display:flex}.review-total{background:var(--c-mint);color:var(--c-mint-ink);border-radius:12px;justify-content:space-between;padding:10px 14px;font-size:13.5px;font-weight:900;display:flex}.review-total.is-warn{background:var(--c-butter);color:var(--c-butter-ink)}.empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:40px 16px;display:flex}.empty__title{margin-top:8px;font-size:18px;font-weight:900}.empty__hint{color:var(--muted);margin-bottom:8px;font-size:13.5px;font-weight:700}.mascot--float{animation:3s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes wiggle{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}.splash{flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:100dvh;font-size:22px;font-weight:900;display:flex}.toast{left:50%;bottom:calc(96px + var(--sab));background:var(--ink);color:var(--bg);z-index:30;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;font-weight:800;animation:.25s cubic-bezier(.2,.9,.3,1.3) toast-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000040}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(12px)scale(.9)}to{opacity:1;transform:translate(-50%)}}.toast__emoji{font-size:18px}.confetti{pointer-events:none;z-index:40;position:fixed;inset:0;overflow:hidden}.confetti span{font-size:24px;animation:linear forwards fall;position:absolute;top:-40px}@keyframes fall{to{opacity:.6;transform:translateY(110vh)rotate(540deg)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.sync-status{border-radius:var(--radius-s);background:var(--surface-2);align-items:center;gap:12px;padding:10px 12px;display:flex}.sync-status__emoji{font-size:24px}.center-items{align-items:center}.center-self{align-self:center}.qr{border-radius:var(--radius-s);box-shadow:var(--shadow);background:#fff;padding:10px}.qr img{image-rendering:pixelated;display:block}.code-box{border-radius:var(--radius-s);background:var(--surface-2);word-break:break-all;-webkit-user-select:all;user-select:all;max-width:100%;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:block}.share-page{max-width:560px;margin:0 auto}.share-amount{font-size:30px;font-weight:900;line-height:1.1}.chip--person{align-items:center;gap:6px;display:inline-flex}.chip--person .mini-avatar{margin:0}.pay-box{border-radius:var(--radius-s);background:var(--surface-2);padding:12px}.pay-box__row{border:1px dashed var(--line);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.pay-box__row:active{transform:scale(.98)}.line--person{border-bottom:1px solid var(--line);padding:8px 0}.line--person:last-child{border-bottom:0}.share-footer{padding:20px 0 calc(24px + var(--sab))}.person-result__actions{justify-content:flex-end;gap:8px;display:flex}.c-text-pink{color:var(--c-pink-ink);font-weight:700}.friend.is-on span:last-child{color:var(--c-pink-ink);font-weight:900}.update-banner{left:50%;bottom:calc(16px + var(--sab));background:var(--surface);color:var(--text);box-shadow:var(--shadow);border:2px solid var(--c-pink);z-index:40;border-radius:999px;align-items:center;gap:12px;padding:10px 12px 10px 16px;font-weight:800;display:flex;position:fixed;transform:translate(-50%)}.note-line{color:var(--c-lavender-ink);background:var(--c-lavender);border-radius:10px;margin-top:4px;padding:6px 10px;font-size:13px}.onboarding{gap:18px;max-width:520px;margin:0 auto}.onboarding__dots{justify-content:center;gap:8px;padding-top:8px;display:flex}.onboarding__dots span{background:var(--line);border-radius:999px;width:8px;height:8px}.onboarding__dots span.is-on{background:var(--primary);width:22px}.onboarding__hero{text-align:center;padding-top:24px}.onboarding__title{margin:0;font-size:34px;font-weight:900}.onboarding__sub{color:var(--muted);margin:-8px 0 0;font-weight:700}.onboarding__h2{margin:0;font-size:22px;font-weight:900}.onboarding__tip-emoji{font-size:28px;line-height:1}.cat-row{margin-top:-6px}.cat-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.cat-btn{border-radius:var(--radius-s);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;font-weight:800;display:flex}.cat-btn:active{transform:scale(.96)}.cat-btn__emoji{font-size:28px;line-height:1}.share-hero{align-items:center;gap:14px;padding:8px 4px 4px;display:flex}.share-hero__owner{color:var(--c-pink-ink);font-size:13px;font-weight:800}.share-hero__name{font-size:24px;font-weight:900;line-height:1.15}.share-me{border-width:2.5px}.share-amount--big{font-size:44px}.friend.is-on .avatar{box-shadow:0 0 0 3px var(--primary)}.btn--pulse{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.progress{background:var(--surface-2);border-radius:999px;height:10px;overflow:hidden}.progress__bar{background:linear-gradient(90deg, var(--c-pink), var(--c-mint));height:100%;transition:width .4s}.og-preview{border:1px solid var(--line);background:var(--surface);border-radius:14px;overflow:hidden}.og-preview__img{color:#3b2e2a;border-bottom:1px solid var(--line);background:#fff7f0;align-items:center;gap:12px;padding:16px;display:flex}.og-preview__imgtext{font-size:18px;font-weight:900}.og-preview__body{flex-direction:column;gap:2px;padding:10px 12px;display:flex}.money-wrap{flex-direction:column;flex:none;width:96px;display:inline-flex;position:relative}.money-wrap.grow{flex:auto;width:auto}.money-wrap--wide{width:120px}.money-wrap .input--money{width:100%;min-width:0}.input--expr{letter-spacing:.02em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.money-wrap__hint{color:var(--c-pink-ink);white-space:nowrap;font-size:11px;font-weight:800;position:absolute;bottom:-14px;right:10px}button.hero-stat{text-align:left;cursor:pointer;width:100%}.balance__net{font-variant-numeric:tabular-nums;font-weight:900}.balance__net.is-pos{color:var(--c-mint-ink)}.balance__net.is-neg{color:var(--c-pink-ink)}.line--btn{width:100%;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:2px 0}.twqr{text-align:center;background:var(--surface);border:1px dashed var(--line);border-radius:12px;flex-direction:column;align-items:center;gap:10px;max-width:100%;padding:12px;display:flex;overflow:hidden}.twqr .qr{box-shadow:none;flex:none;max-width:100%;height:auto;padding:6px}.twqr .qr img{max-width:100%;height:auto}@media (width>=520px){.twqr{text-align:left;flex-direction:row}}.quickpay{flex-wrap:wrap;gap:8px;display:flex}.trip-card{border:2px dashed var(--c-lavender)}.reconcile{background:var(--surface-2);border-radius:14px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.reconcile--idle{flex-direction:row;justify-content:space-between;align-items:center}.reconcile.is-ok{background:var(--c-mint);color:var(--c-mint-ink)}.reconcile.is-warn{background:var(--c-butter);color:var(--c-butter-ink)}.reconcile__row{align-items:center;gap:8px;display:flex}.reconcile__row .small{flex:1}.reconcile .input{background:var(--surface)}.reconcile__msg{font-weight:800}.calc-fab{right:max(18px,50% - 242px);bottom:calc(22px + var(--sab));background:var(--surface);border:2px solid var(--line);width:50px;height:50px;box-shadow:var(--shadow-press), 0 8px 20px #0000001f;z-index:5;border-radius:50%;font-size:24px;transition:transform .1s;position:fixed}.calc-fab:active{box-shadow:none;transform:translateY(3px)}.calc-fab--above-bar{bottom:calc(104px + var(--sab))}.calc-fab--left{left:max(18px,50% - 242px);right:auto}.calc{flex-direction:column;gap:12px;display:flex}.calc__tape{flex-direction:column;gap:4px;max-height:96px;padding:4px 2px;display:flex;overflow-y:auto}.calc__tape-line{text-align:left;font-variant-numeric:tabular-nums;border-radius:8px;justify-content:space-between;gap:10px;width:100%;padding:4px 8px;font-size:13px;display:flex}.calc__tape-line:active{background:var(--surface-2)}.calc__display{background:var(--surface-2);border:2px solid var(--line);text-align:right;border-radius:18px;min-height:84px;padding:12px 16px}.calc__display.is-bad{border-color:var(--danger)}.calc__expr{color:var(--muted);word-break:break-all;min-height:22px;font-size:16px;font-weight:700}.calc__result{font-variant-numeric:tabular-nums;letter-spacing:-.5px;min-height:40px;font-size:32px;font-weight:900}.calc__fx{color:var(--c-lavender-ink);margin-top:4px;font-size:12px;font-weight:800}.calc__keys{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.calc__key{background:var(--surface);border:2px solid var(--line);height:54px;box-shadow:var(--shadow-press);border-radius:16px;font-size:20px;font-weight:900;transition:transform 80ms,box-shadow 80ms}.calc__key:active:not(:disabled){box-shadow:none;transform:translateY(3px)}.calc__key--op{background:var(--c-lavender);border-color:var(--c-lavender);color:var(--c-lavender-ink)}.calc__key--fn{background:var(--c-peach);border-color:var(--c-peach);color:var(--c-peach-ink);font-size:16px}.calc__key--eq{background:var(--primary);border-color:var(--primary-2);color:var(--primary-ink);box-shadow:0 4px 0 var(--primary-2);grid-column:1/-1;height:50px}.calc__key--eq:disabled{opacity:.5;box-shadow:none}
