:root{--paper: #fffaf0;--paper-line: #f1e4c8;--bg: #f6efe2;--ink: #3b3530;--muted: #8a8076;--blue: #2f6fd6;--blue-soft: #e3edff;--green: #3aa76d;--green-soft: #e4f6ec;--orange: #f08a24;--orange-soft: #fff0de;--red: #d64545;--radius: 18px;--shadow: 0 3px 0 rgba(120, 95, 60, .12), 0 8px 20px rgba(120, 95, 60, .08);font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 8%,rgba(255,214,140,.35),transparent 40%),radial-gradient(circle at 90% 30%,rgba(170,205,255,.3),transparent 45%),var(--bg)}button,input{font:inherit;color:inherit}.app{max-width:480px;margin:0 auto;min-height:100vh;padding:0 14px calc(88px + env(safe-area-inset-bottom))}.app-header{padding:22px 4px 8px;text-align:center}.title{margin:0;color:var(--blue);font-family:Kaiti SC,STKaiti,KaiTi,Comic Sans MS,cursive,sans-serif;font-size:28px;font-weight:800;letter-spacing:2px;transform:rotate(-1.5deg);text-shadow:2px 2px 0 #fff,3px 3px 0 rgba(47,111,214,.15)}.title .dot{color:var(--orange)}.hello{margin:8px 0 0;color:var(--muted);font-size:14px}.content{padding-top:8px}.stack{display:flex;flex-direction:column;gap:14px}.card{background:#fff;border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);border:1.5px solid #efe3cf}.paper{background:repeating-linear-gradient(0deg,transparent 0 27px,var(--paper-line) 27px 28px),var(--paper);border:2px dashed #e6d3ad}.section-title{margin:4px 2px 10px;font-size:18px;font-weight:700}.stack>.section-title{margin-bottom:-4px}.muted{color:var(--muted)}.small{font-size:13px}.loading,.empty{text-align:center;color:var(--muted);padding:12px 0;margin:0}.row-between{display:flex;justify-content:space-between;align-items:center;gap:8px}.form{display:flex;flex-direction:column;gap:12px}.form label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}.form input{width:100%;padding:11px 12px;font-size:16px;font-weight:400;border:1.5px solid #e5d9c5;border-radius:12px;background:#fffdf8;outline:none;transition:border-color .15s}.form input:focus{border-color:var(--blue);background:#fff}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.primary{padding:13px;font-size:17px;font-weight:700;color:#fff;background:var(--blue);border:none;border-radius:999px;box-shadow:0 4px #1f4f9f;cursor:pointer;transition:transform .08s,box-shadow .08s}.primary:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #1f4f9f}.primary:disabled,button:disabled{opacity:.6;cursor:default}.ghost{padding:8px 14px;background:transparent;border:1.5px solid #dccdb4;border-radius:999px;color:var(--muted);cursor:pointer}.ghost.small{padding:4px 12px;font-size:13px}.logout{align-self:center;margin-top:4px}.error{margin:0;padding:8px 12px;color:var(--red);background:#fdecec;border-radius:10px;font-size:14px}.hint{background:var(--orange-soft);border-color:#f5d3a8;font-size:14px}.hint a{color:var(--blue);font-weight:700}.done-tip{margin:-4px 0 10px;font-size:14px;color:var(--green)}.login{margin-top:10px}.login-stickers{display:flex;justify-content:center;gap:10px;margin:2px 0 14px}.sticker-mini{display:inline-grid;place-items:center;width:48px;height:48px;font-size:28px;background:#fff;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 6px #00000026}.seg{display:grid;grid-template-columns:1fr 1fr;margin-bottom:14px;padding:4px;background:#f1e7d6;border-radius:999px}.seg button{padding:9px;border:none;border-radius:999px;background:transparent;font-weight:700;color:var(--muted);cursor:pointer}.seg button.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px #0000001a}.wall-title{margin:0 0 6px;text-align:center;color:var(--blue);font-family:Kaiti SC,STKaiti,KaiTi,cursive,sans-serif;font-size:22px;font-weight:800;transform:rotate(-1deg)}.wall-stats{display:flex;justify-content:center;gap:14px;font-size:14px;color:var(--muted);margin-bottom:12px}.sticker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:10px;justify-items:center;min-height:60px}.sticker-grid .empty{grid-column:1 / -1}.sticker{display:grid;place-items:center;width:52px;height:52px;font-size:30px;line-height:1;background:radial-gradient(circle at 35% 30%,#fff,#fff6e0);border:3px solid #fff;border-radius:50%;box-shadow:0 2px #0000000f,0 3px 8px #785f3c40;animation:pop .35s ease-out}@keyframes pop{0%{scale:.4;opacity:0}to{scale:1;opacity:1}}.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.badge{padding:3px 10px;font-size:13px;font-weight:600;color:#9a5a00;background:#fff3c4;border:1.5px solid #f5d76e;border-radius:999px}.member{position:relative}.member.mine{border-color:#b9d0f7;background:#fbfdff}.member-name{margin:0;font-size:17px}.me-tag{font-size:13px;color:var(--blue);font-weight:600}.status{flex-shrink:0;padding:2px 10px;font-size:12px;font-weight:700;border-radius:999px}.status.yes{color:var(--green);background:var(--green-soft)}.status.no{color:var(--muted);background:#f1ece4}.exercise,.note{margin:8px 0 0;font-size:14px}.note{color:var(--muted)}.member-stats{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:14px}.change{font-weight:700}.change.good{color:var(--green)}.percent{font-weight:700;color:var(--blue)}.bar{height:8px;margin-top:8px;background:#eee5d6;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#6fb6ff,var(--blue));border-radius:999px;transition:width .4s}.recent-stickers{display:flex;flex-wrap:wrap;gap:2px;margin-top:10px;font-size:20px}.cheer{margin-top:12px;padding:8px 18px;font-weight:700;color:#fff;background:var(--orange);border:none;border-radius:999px;box-shadow:0 3px #c56a12;cursor:pointer}.cheer.cheered{color:var(--orange);background:var(--orange-soft);box-shadow:none;opacity:1}.progress-summary p{margin:4px 0}.chart{display:block;width:100%;height:auto}.chart .axis{stroke:#d8cbb5;stroke-width:1}.chart .tick{font-size:10px;fill:var(--muted)}.chart .target-line{stroke:var(--green);stroke-width:1.5;stroke-dasharray:5 4}.chart .target-label{fill:var(--green)}.chart .weight-line{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.chart .weight-dot{fill:#fff;stroke:var(--blue);stroke-width:2}.history{list-style:none;margin:0;padding:0}.history-item{padding:10px 0;border-bottom:1px dashed #e8dcc7}.history-item:last-child{border-bottom:none}.history-day{font-weight:700}.history-weight{color:var(--blue);font-weight:700}.tabbar{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:100%;max-width:480px;display:grid;grid-template-columns:repeat(3,1fr);padding:6px 10px calc(6px + env(safe-area-inset-bottom));background:#fffaf0f5;border-top:1.5px solid #eadcc4;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10}.tab{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;font-size:13px;font-weight:700;color:var(--muted);background:none;border:none;border-radius:12px;cursor:pointer}.tab:before{content:attr(data-icon);font-size:22px;line-height:1;filter:grayscale(.7);opacity:.7}.tab.active{color:var(--blue);background:var(--blue-soft)}.tab.active:before{filter:none;opacity:1}.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translate(-50%);max-width:90vw;padding:10px 18px;font-weight:700;color:#fff;background:#2f6fd6f2;border-radius:999px;box-shadow:0 6px 18px #0000002e;z-index:20;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast-enter-active,.toast-leave-active{transition:opacity .25s,transform .25s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(-50%,10px)}
