/* One mobile canvas at every viewport; the browser reserves Android system UI. */
:root{--nav-height:72px;--bottom-space:max(12px,env(safe-area-inset-bottom,0px))}
body{background:#e6ede9}.app{display:block;width:100%;max-width:460px;min-height:100dvh;background:var(--bg);box-shadow:0 0 65px #123f3b12;margin:0 auto}.sidebar{display:none}main{padding:20px 16px calc(var(--nav-height) + var(--bottom-space) + 24px);min-height:100dvh}header{margin-bottom:13px}h1{font-size:23px}.profile-chip{padding:5px;background:#fff}.profile-chip>span:last-child{display:none}.eyebrow{font-size:12px}.demo-bar{font-size:12px;gap:3px;padding:8px 10px;margin-bottom:15px;flex-wrap:wrap}.demo-bar button{font-size:12px}.leaderboard{padding:18px 14px;border-radius:20px;width:100%}.leaderboard .section-title{flex-wrap:nowrap}.leaderboard h2{font-size:21px}.period-tabs{margin-top:14px}.period-tabs button{font-size:14px;padding:8px 3px}.ranking-note{font-size:12px;margin:10px 0}.week-prize{padding:11px 13px;margin:10px 0}.week-prize p{font-size:12px}.total-rule{margin:10px 0;font-size:12px}.rank-row{min-height:61px;padding:8px 4px}.rank-info strong{font-size:15px}.rank-info small{font-size:12px}.rank-total{font-size:23px}.rank-total small{font-size:12px}.rank-row .avatar{width:36px;height:36px}.board-footer{font-size:12px}.mobile-nav{display:flex;position:fixed;left:50%;right:auto;transform:translateX(-50%);bottom:0;width:100%;max-width:460px;min-height:calc(var(--nav-height) + var(--bottom-space));padding:8px 10px var(--bottom-space);gap:3px;justify-content:space-between;align-items:flex-start;background:#fffffffa;backdrop-filter:blur(18px);border-top:1px solid var(--line);box-shadow:0 -5px 20px #123f3b06;z-index:5}.mobile-nav button{flex:1;min-height:54px;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px 2px;background:none;color:#647d73;border-radius:12px;line-height:1.3}.mobile-nav button.active{background:#e5f4eb;color:#123f3b;font-weight:700}.mobile-nav span{font-size:12px;margin-top:3px}.mobile-nav .nav-icon{font-size:23px;margin:0;line-height:1.2}.primary-column{gap:17px}.my-card{padding:21px 17px}.my-stats strong{font-size:30px}.my-stats span{font-size:12px}.record-button{justify-content:center;font-size:18px;min-height:56px}.hero{min-height:240px}.hero-copy{padding:20px;width:64%}.hero h2{font-size:30px}.hero p{font-size:13px}.friends-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.friend-card{padding:17px 12px}.friend-card button{font-size:13px}.profile-layout{display:block;margin:0}.profile-form{padding:23px}.page-heading h2{font-size:25px}.page-heading p{font-size:14px}.main-footer{font-size:12px;margin:22px 0 3px}.main-footer .help-button{font-size:12px;text-align:center;padding:3px}.toast{bottom:calc(var(--nav-height) + var(--bottom-space) + 12px);width:max-content;max-width:min(420px,90vw)}dialog{max-height:calc(100dvh - 40px - env(safe-area-inset-bottom,0px));overflow:auto}#homePage{scroll-margin-bottom:100px}@media(max-width:359px){.mobile-nav span{font-size:12px}.leaderboard{padding:15px 10px}.rank-row{gap:7px}.section-title h2{font-size:18px}}

.daily-chart-card{background:white;border:1px solid var(--line);border-radius:20px;padding:20px 14px;margin-bottom:18px}.chart-subtitle,.chart-footnote{font-size:12px;color:var(--muted);margin:9px 0}.chart-toolbar{display:flex;direction:ltr;align-items:center;justify-content:space-between;margin:15px 0 4px;gap:5px}.chart-toolbar span{font-size:12px;direction:rtl;color:var(--muted)}.chart-toolbar button{background:#eaf4ed;border-radius:9px;min-width:38px;min-height:40px;font-size:19px}.chart-scroll{direction:ltr;overflow-x:auto;overscroll-behavior-x:contain;touch-action:pan-x pan-y;cursor:grab;scrollbar-width:thin;scrollbar-color:#b0cfc0 transparent;padding-bottom:6px}.chart-scroll.dragging{cursor:grabbing;user-select:none}.bar-track{display:flex;width:max-content;min-width:100%;align-items:end;padding:4px 8px}.day-column{width:55px;flex:0 0 55px;text-align:center;direction:rtl}.bar-area{height:185px;border-bottom:1px solid #b8d1c4;position:relative;background:repeating-linear-gradient(to top,transparent 0px,transparent 36px,#edf3ef 37px)}.day-bar{position:absolute;bottom:0;left:15px;width:25px;background:#338570;border-radius:7px 7px 0 0}.current-day .day-bar{background:#164f43}.bar-count{position:absolute;left:0;width:100%;font-size:14px;font-weight:700}.day-label{display:block;margin-top:9px;font-size:12px;white-space:nowrap}.day-column small{font-size:12px;color:#468671;height:22px;display:block}.cost-card{padding:22px;background:#e9f3ec;border:1px solid #d5e7da;border-radius:20px;margin-bottom:27px}.cost-card h2{font-size:20px}.cost-card>p{font-size:14px;color:#537465}.cost-card .cost-amount{font-size:34px;font-weight:800;color:var(--ink);margin:10px 0 0}.cost-amount span{font-size:16px}.total-cost{border-top:1px solid #cfdfd3;margin-top:17px;padding-top:13px;font-size:14px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.cost-card .cost-note{font-size:12px;margin-top:10px}.price-edit{background:white;border-radius:10px;padding:10px 12px;font-size:13px;margin-top:16px}.records-title{font-size:20px;margin:0 0 15px}.history-list{border-radius:16px;overflow:hidden}.history-row{flex-wrap:wrap}.history-row small{font-size:12px}

body.signed-out .app{display:none}.auth-screen{display:none;max-width:440px;padding:30px 24px;margin:auto;background:#f5f7f6;min-height:100dvh}.signed-out .auth-screen{display:block}.auth-screen .brand{margin-bottom:30px}.auth-screen h1{margin:12px 0}.auth-screen label{display:block;font-size:14px;margin:16px 0 6px}.auth-screen input{display:block;width:100%;border:1px solid #c5d9cc;border-radius:10px;padding:12px;background:white;font:inherit}.auth-screen>p{color:var(--muted)}[hidden]{display:none!important}
.welcome-quote{margin:18px 0;padding:18px;background:#e7f1e9;border-right:3px solid #508576;border-radius:12px}.welcome-quote p{font-size:18px;line-height:2;color:#123f3b;margin:0}.welcome-quote a{display:block;font-size:12px;font-weight:400;color:#526f62;margin-top:10px;text-decoration:underline}
.main-footer .footer-message{font-size:14px;line-height:2;color:#647972;padding:12px 8px;overflow-wrap:anywhere}

.chat-messages{display:flex;flex-direction:column;gap:12px;margin:16px 0}.chat-message{background:white;border:1px solid #d5e7da;border-radius:16px;padding:14px;overflow-wrap:anywhere}.chat-message.own{background:#e4f2e8}.chat-message p{white-space:pre-wrap;margin:9px 0}.chat-message small{color:#647972;font-size:12px}.chat-message button{padding:8px;background:transparent;color:#346552}.chat-compose{background:#f2f7f3;padding:14px;border-radius:16px}.chat-compose textarea{width:100%;resize:vertical;font:inherit;border:1px solid #a9c8b8;border-radius:12px;padding:12px;box-sizing:border-box}.chat-compose>div{display:flex;gap:8px;margin-top:10px}.chat-compose label{display:block;margin-bottom:8px}
.rank-row{position:relative;margin:7px 0;border:1px solid transparent;border-radius:15px;transition:background .3s}.rank-row.rank-place-1{background:linear-gradient(110deg,#fff8dd,#f9e5a6);border-color:#e5c56d;box-shadow:0 4px 13px #ba8c1820}.rank-row.rank-place-2{background:linear-gradient(110deg,#f8fbff,#e0e6ee);border-color:#c3ccd6}.rank-row.rank-place-3{background:linear-gradient(110deg,#fff2e6,#efd3bb);border-color:#dfb993}.rank-row.rank-place-4{background:#f5faf7}.rank-row.me{outline:2px solid #4d9b7a;outline-offset:1px}.rank-crown{display:block;color:#ae790c;font-size:20px;line-height:1}.health-highlight{background:#eef5ff;border:1px solid #d9e7f7;padding:13px;border-radius:14px;margin:15px 0}.health-highlight>span{font-size:11px;color:#55718e}.health-highlight p{font-size:13px;line-height:1.9;margin:6px 0}.health-highlight a{font-size:11px;color:#406992}#rankNotice{position:fixed;z-index:30;top:30%;left:50%;transform:translateX(-50%);width:min(320px,85vw);padding:22px;border:1px solid #d5e7da;border-radius:25px;background:#fffffff5;box-shadow:0 15px 65px #123f3b30;text-align:center;pointer-events:none}#rankSticker{display:block;font-size:66px;margin-bottom:8px}#rankMessage{display:block;font-size:18px}#rankCelebration{position:fixed;inset:0;pointer-events:none;z-index:31;overflow:hidden}#rankCelebration i{position:absolute;top:48%;left:50%;width:9px;height:14px;border-radius:2px;animation:confetti-burst 1.8s ease-out forwards}@keyframes confetti-burst{0%{transform:translate(0,0) scale(.2);opacity:1}45%{opacity:1}100%{transform:translate(var(--x),calc(var(--y) + 470px)) rotate(var(--r));opacity:0}}@media(prefers-reduced-motion:reduce){#rankCelebration i{animation:none;display:none}.rank-row{transition:none}}

/* v3: one continuous scroll; sticky headings release at their section's end. */
.trust-note{font-size:17px;background:#e4f2e8;border-radius:17px;padding:15px;margin:0 0 18px;line-height:1.9}.trust-note strong{font-size:19px}.leaderboard{overflow:visible}.ranking-scroll-region{position:relative}.ranking-sticky,.friends-sticky{position:sticky;top:0;background:#fff;z-index:3;padding:10px 0 6px}.ranking-sticky .period-tabs{margin-top:9px}.ranking-sticky .total-rule{margin:5px 0}.ranking-sticky .week-prize{margin:6px 0;padding:8px 10px}.ranking-sticky .week-prize p{line-height:1.65;margin:4px 0}.group-picker-slot{display:flex;gap:8px;align-items:end;margin:10px 0 15px}.group-picker-slot label{flex:1;min-width:0;font-size:12px}.group-picker-slot select{display:block;width:100%;font:inherit;font-size:15px;border:1px solid #c5d9cc;border-radius:10px;padding:10px;background:white;color:var(--ink)}.new-group-button,.invite-group,.history-link{padding:11px;border-radius:10px;background:#e4f2e8;color:var(--ink);font-size:13px;min-height:44px}.history-link{width:100%;margin-top:16px}.friends-sticky{background:var(--bg);padding:6px 0 10px}.friends-sticky .page-heading{margin:8px 0}.friends-sticky .page-heading h2{font-size:19px}.friends-sticky .page-heading p{display:none}.friends-sticky .primary-button{display:inline-flex;width:auto;padding:10px 14px;min-height:44px}.friends-grid{gap:8px}.friend-card{padding:9px;display:grid;grid-template-columns:30px 1fr;gap:3px 7px;align-items:center;text-align:right;min-width:0}.friend-card .avatar{width:30px;height:30px;grid-row:1/3}.friend-card h3{font-size:13px;margin:0;overflow-wrap:anywhere}.friend-card p{font-size:11px;margin:0;grid-column:2}.friend-card button{grid-column:1/-1;font-size:12px;margin:3px 0 0;padding:5px;min-height:36px}.records-details summary{padding:15px;background:#fff;border:1px solid var(--line);border-radius:14px;cursor:pointer;font-size:17px}.records-details[open] summary{margin-bottom:12px}.week-button{display:block;width:100%;text-align:right;padding:16px;margin:12px 0;background:#fff;border:1px solid var(--line);border-radius:14px}.week-button span,.week-button small{display:block;margin-top:6px}.week-group-name{color:var(--muted)}#groupDialog input{display:block;width:100%;border:1px solid #b4cdbc;padding:12px;font:inherit;border-radius:10px;margin:12px 0}.group-error{color:#a32b2b}.in-chat main>header,.in-chat .demo-bar{display:none}.in-chat main{height:var(--visual-height,100dvh);min-height:0;padding-top:0;padding-bottom:calc(var(--nav-height) + var(--bottom-space));overflow:hidden}.in-chat #chatPage{height:100%;display:flex;flex-direction:column}.in-chat .app{min-height:0}.in-chat #chatPage .page-heading{flex:none;margin:0;padding:8px 0}.in-chat #chatPage h2{font-size:18px;margin:5px 0}.in-chat #chatPage .page-heading p{font-size:11px;margin:3px 0}.chat-scroll{overflow-y:auto;flex:1;min-height:0;overscroll-behavior:contain}.chat-messages{margin:4px 0}.chat-message{padding:10px}.chat-message p{font-size:14px}.chat-compose{flex:none;padding:8px;display:flex;flex-wrap:wrap;align-items:center;gap:7px;border-top:1px solid #c5d9cc}.chat-compose label{width:100%;font-size:11px;margin:0}.chat-compose textarea{flex:1;min-width:0;resize:none;max-height:100px;font-size:16px;padding:8px}.chat-compose>div{margin:0}.chat-compose button{font-size:12px;padding:10px;min-height:40px}#chatStatus{font-size:11px;margin:3px 0;flex:none}.in-chat.keyboard-open .mobile-nav{display:none}.in-chat.keyboard-open main{padding-bottom:env(safe-area-inset-bottom,0px)}@media(max-height:680px){.ranking-sticky .section-title .eyebrow{display:none}.ranking-sticky .week-prize{font-size:11px}.ranking-sticky .total-rule{font-size:10px}.ranking-sticky .week-prize p{font-size:11px}.rank-row{min-height:57px}}
