.tab-bar{position:fixed;left:0;right:0;bottom:0;display:flex;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fffdf8f5;border-top:1px solid var(--color-line);z-index:20}.tab-bar__item{flex:1;font-size:4vw;color:var(--color-muted)}.tab-bar__item--active{color:var(--color-accent);font-weight:700}.tab-bar__item--on-fit.tab-bar__item--active{color:var(--color-fitness)}.ledger{padding:4vw 4vw calc(var(--tab-h) + 22vw)}.ledger__head{background:var(--color-card);border-radius:4vw;padding:4vw;margin-bottom:4vw;box-shadow:0 .4vw 2vw #2a9d8f14}.ledger__nav{display:flex;align-items:center;justify-content:space-between;font-size:3.8vw;margin-bottom:2vw}.ledger__nav-btn{color:var(--color-accent);padding:1vw 2vw}.ledger__total{font-size:8vw;font-weight:700;letter-spacing:-.04em}.ledger__today{margin-top:1vw;color:var(--color-muted);font-size:3.6vw}.ledger__break{display:flex;flex-wrap:wrap;gap:1.6vw;margin-top:3vw}.ledger__pill{background:var(--color-accent-soft);color:var(--color-accent);border-radius:999px;padding:1vw 2.4vw;font-size:3.2vw}.ledger__empty{text-align:center;color:var(--color-muted);padding:12vw 4vw;font-size:3.8vw}.ledger__day{margin-bottom:4vw}.ledger__day-title{display:flex;justify-content:space-between;font-size:3.4vw;color:var(--color-muted);margin:0 1vw 2vw;font-weight:600}.expense-card{background:var(--color-card);border-radius:3.2vw;padding:3.2vw;margin-bottom:2vw}.expense-card__main{display:flex;justify-content:space-between;align-items:baseline;gap:3vw}.expense-card__item{font-size:4.2vw}.expense-card__amount{font-size:4.4vw;font-weight:700}.expense-card__meta{display:flex;justify-content:space-between;margin-top:2vw}.expense-card__cat{background:var(--color-accent-soft);color:var(--color-accent);border-radius:999px;padding:.8vw 2.4vw;font-size:3.2vw}.expense-card__del{color:var(--color-muted);font-size:3.2vw}.expense-card__pick{display:flex;flex-wrap:wrap;gap:1.6vw;margin-top:2.4vw}.expense-card__opt{border:1px solid var(--color-line);border-radius:999px;padding:1vw 2.4vw;font-size:3.2vw}.expense-card__opt--on{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.ledger__composer{position:fixed;left:0;right:0;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));display:flex;gap:2vw;padding:2vw 4vw;background:#f6f1eaf5}.ledger__input{flex:1;height:12vw;border:1px solid var(--color-line);border-radius:999px;padding:0 4vw;background:var(--color-card);font-size:4vw;outline:none}.ledger__send{min-width:18vw;height:12vw;border-radius:999px;background:var(--color-accent);color:#fff;font-size:3.8vw;font-weight:700}.fitness{padding:4vw 4vw calc(var(--tab-h) + 6vw)}.fitness__head{background:var(--color-card);border-radius:4vw;padding:4vw;margin-bottom:4vw;box-shadow:0 .4vw 2vw #e76f5114}.fitness__nav{display:flex;align-items:center;justify-content:space-between;font-size:3.8vw;margin-bottom:2vw}.fitness__nav-btn{color:var(--color-fitness);padding:1vw 2vw}.fitness__total{font-size:7vw;font-weight:700}.fitness__form{background:var(--color-card);border-radius:4vw;padding:4vw;margin-bottom:4vw}.fitness__label{display:block;font-size:3.4vw;color:var(--color-muted);margin-bottom:3vw}.fitness__field,.fitness__area{display:block;width:100%;margin-top:1.6vw;border:1px solid var(--color-line);border-radius:3vw;padding:3vw;background:#fff;outline:none;font-size:4vw}.fitness__save{width:100%;height:12vw;border-radius:999px;background:var(--color-fitness);color:#fff;font-size:4vw;font-weight:700}.fitness__empty{text-align:center;color:var(--color-muted);padding:8vw 0;font-size:3.8vw}.fitness-card{background:var(--color-card);border-radius:4vw;padding:4vw;margin-bottom:3vw}.fitness-card__date{font-size:3.6vw;color:var(--color-muted);margin-bottom:2vw}.fitness-card__title{font-size:3.4vw;font-weight:700;margin:2vw 0 1.6vw}.fitness-card__title--meal{color:var(--color-fitness)}.fitness-card__chips{display:flex;flex-wrap:wrap;gap:1.6vw}.chip{background:var(--color-accent-soft);color:var(--color-accent);border-radius:999px;padding:1.2vw 2.8vw;font-size:3.4vw}.chip--meal{background:var(--color-fitness-soft);color:var(--color-fitness)}.fitness-card__del{margin-top:3vw;color:var(--color-muted);font-size:3.2vw}.app{min-height:100vh;min-height:100dvh;padding-top:env(safe-area-inset-top)}.app__tip{margin:3vw 4vw 0;padding:3vw;border-radius:3vw;background:#fff4d6;font-size:3.4vw;line-height:1.5;display:flex;gap:2vw;align-items:center}.app__tip-close{flex:none;color:var(--color-accent);font-size:3.2vw;font-weight:700}.app__toast{position:fixed;left:50%;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 18vw);transform:translate(-50%);background:#1d1d1fe0;color:#fff;border-radius:999px;padding:2vw 4vw;font-size:3.4vw;z-index:30;max-width:80vw;text-align:center}.app__backup{position:fixed;right:4vw;top:calc(env(safe-area-inset-top) + 2vw);z-index:15;font-size:3.2vw;color:var(--color-muted);background:#fffdf8e6;border-radius:999px;padding:1.2vw 2.8vw}.app__sheet{position:fixed;left:4vw;right:4vw;top:calc(env(safe-area-inset-top) + 10vw);background:var(--color-card);border-radius:4vw;padding:4vw;z-index:25;box-shadow:0 2vw 8vw #0000001f}.app__sheet-title{font-size:3.6vw;color:var(--color-muted);margin-bottom:3vw}.app__pass{display:block;width:100%;height:11vw;margin-bottom:2vw;border:1px solid var(--color-line);border-radius:999px;padding:0 4vw;background:#fff;font-size:3.8vw;outline:none}.app__sheet-hint{font-size:3.2vw;color:var(--color-muted);margin:0 0 3vw;line-height:1.4}.app__sheet-btn{display:block;width:100%;height:11vw;margin-bottom:2vw;border-radius:999px;background:var(--color-accent);color:#fff;font-size:3.8vw;text-align:center;line-height:11vw;position:relative}.app__sheet-btn--ghost{background:transparent;color:var(--color-text);border:1px solid var(--color-line)}.app__file{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0}:root{--color-bg: #f6f1ea;--color-card: #fffdf8;--color-text: #1d1d1f;--color-muted: #7a746c;--color-line: #ece4d8;--color-accent: #2a9d8f;--color-accent-soft: #d8f3ef;--color-fitness: #e76f51;--color-fitness-soft: #fde8e2;--color-danger: #c44536;--tab-h: 16vw}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#app{min-height:100%}body{font-family:SF Pro SC,PingFang SC,Microsoft YaHei,sans-serif;background:var(--color-bg);color:var(--color-text);overflow-x:hidden}button,input,textarea{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer}textarea{resize:none}
