:root{--paper: #faf6ec;--paper-deep: #f1ecdd;--card: #fffefb;--ink: #423b2e;--ink-soft: #837a64;--ink-faint: #ada591;--leaf: #7eb850;--leaf-deep: #5f9a3b;--matcha: #a7c97c;--matcha-pale: #e6efd6;--matcha-mist: #f1f6e9;--bark: #b08968;--bark-deep: #8a6a49;--berry: #e08365;--honey: #e9b94f;--honey-deep: #9a6e1f;--night: #b88f3e;--night-mist: #f6efdc;--line: #ece5d4;--line-soft: #f1ebdc;--elev-1: 0 1px 2px rgba(74, 62, 40, .04), 0 2px 6px -2px rgba(74, 62, 40, .06);--elev-2: 0 1px 2px rgba(74, 62, 40, .05), 0 4px 10px -3px rgba(74, 62, 40, .08), 0 10px 24px -12px rgba(74, 62, 40, .1);--elev-3: 0 2px 4px rgba(74, 62, 40, .06), 0 8px 18px -6px rgba(74, 62, 40, .1), 0 24px 48px -20px rgba(74, 62, 40, .16);--elev-shell: 0 0 1px rgba(74, 62, 40, .14), 0 24px 60px -28px rgba(74, 62, 40, .22);--shadow: var(--elev-shell);--shadow-soft: var(--elev-2);--r-xs: 10px;--r-sm: 14px;--r-md: 18px;--r-lg: 22px;--r-xl: 28px;--r-pill: 999px;--radius: var(--r-lg);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--gutter: 20px;--fs-display: 28px;--fs-h1: 22px;--fs-h2: 16px;--fs-lg: 15px;--fs-body: 14px;--fs-sm: 13px;--fs-meta: 12px;--fs-xs: 11px;--lh-tight: 1.2;--lh-snug: 1.4;--lh-normal: 1.65;--font-hand: "Yomogi", cursive;--font-body: "Zen Maru Gothic", "Kosugi Maru", sans-serif;--font-meta: "Zen Maru Gothic", "Kosugi Maru", sans-serif}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;padding:0;min-height:100vh;font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--ink);background:var(--paper-deep);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font-family:var(--font-body);cursor:pointer}input,textarea,select{font-family:var(--font-body);color:var(--ink)}.app{position:relative;z-index:1;max-width:480px;margin:0 auto;min-height:100vh;background:var(--paper);box-shadow:var(--elev-shell);overflow-x:hidden}.app__content{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.app--loading,.app--error{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--ink-soft);font-size:var(--fs-lg);font-weight:500;text-align:center;padding:var(--s-6)}.error{color:#c25a3c;font-size:var(--fs-sm);font-weight:500;background:#fbeae2;border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);margin:var(--s-2) 0}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--elev-1);position:relative}.btn-primary{width:100%;border:none;cursor:pointer;padding:var(--s-4);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:#fff;letter-spacing:.02em;display:flex;align-items:center;justify-content:center;gap:var(--s-2);position:relative;overflow:hidden;transition:transform .12s ease,box-shadow .2s ease,filter .2s ease;background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 6px 16px -8px #5f9a3b8c}.btn-primary:active{transform:translateY(1px);box-shadow:0 3px 10px -6px #5f9a3b80}.btn-primary:disabled{filter:saturate(.5) brightness(1.04);opacity:.6;box-shadow:none;cursor:default}.btn-secondary{border:1px solid var(--matcha-pale);cursor:pointer;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);font-family:var(--font-body);font-size:var(--fs-body);font-weight:700;color:var(--leaf-deep);background:var(--matcha-mist);transition:transform .12s ease,background .2s ease}.btn-secondary:active{transform:translateY(1px)}.pill-done,.pill-todo{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-radius:var(--r-xs);font-size:var(--fs-meta);font-weight:500}.pill-done{background:var(--matcha-mist);color:var(--leaf-deep);font-weight:700}.pill-todo{background:var(--paper-deep);color:var(--ink-soft)}.pill-done .chk,.pill-todo .chk{width:20px;height:20px;border-radius:7px;flex:none;display:grid;place-items:center;font-size:11px;font-weight:700}.pill-done .chk{background:var(--leaf);color:#fff}.pill-todo .chk{background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);color:transparent}.stamp{border:1px solid var(--line);cursor:pointer;display:inline-flex;align-items:center;gap:var(--s-1);padding:var(--s-1) var(--s-3);border-radius:var(--r-pill);background:var(--card);font-size:var(--fs-body);color:var(--ink-soft);transition:transform .12s ease,background .15s ease,border-color .15s ease}.stamp:active{transform:scale(.94)}.stamp .n{font-size:var(--fs-xs);font-weight:700}.stamp.on{background:#fcebe1;border-color:#f3cdba;color:#c25a3c}.streak{display:inline-flex;align-items:center;gap:var(--s-1);background:var(--night-mist);color:var(--honey-deep);font-weight:700;font-size:var(--fs-meta);padding:var(--s-1) var(--s-2);border-radius:var(--r-pill);border:1px solid #efe1bd}.streak .f{font-size:var(--fs-body)}.header-scallop:after{content:none}.washi:before{content:none}.nudge-box{display:flex;align-items:center;gap:var(--s-3);background:var(--night-mist);border:1px solid #efe1bd;border-radius:var(--r-sm);padding:var(--s-3);font-size:var(--fs-meta);color:var(--honey-deep);line-height:var(--lh-snug)}.nudge-box .moon{font-size:18px;flex:none}.nudge-box b{color:var(--night);font-weight:700}.nudge-box .poke{margin-left:auto;flex:none;border:1px solid #efd9a4;cursor:pointer;background:#fbf0d4;color:var(--honey-deep);font-weight:700;font-size:var(--fs-xs);padding:var(--s-2) var(--s-3);border-radius:var(--r-pill);white-space:nowrap}.ava{width:44px;height:44px;border-radius:var(--r-sm);flex:none;display:grid;place-items:center;font-size:22px;background:var(--matcha-mist);box-shadow:inset 0 0 0 1px var(--line)}.ava--sm{width:40px;height:40px;border-radius:var(--r-xs);font-size:20px}.a-mint{background:#e7f0e0}.a-peach{background:#fbe9e0}.a-sky{background:#e4eef3}.a-cream{background:#f6eed9}.sec-h{display:flex;align-items:baseline;gap:var(--s-2);margin:var(--s-6) var(--gutter) var(--s-3)}.sec-h h2{font-family:var(--font-body);font-size:var(--fs-h2);font-weight:700;color:var(--ink);letter-spacing:.01em;margin:0}.sec-h .ln{flex:1;height:1px;background:var(--line)}.sec-h .cnt{font-size:var(--fs-meta);color:var(--ink-soft);font-weight:700}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:0;z-index:20;width:100%;max-width:480px;height:calc(72px + env(safe-area-inset-bottom,0px));padding:var(--s-2) var(--s-3) env(safe-area-inset-bottom,0px);display:flex;align-items:flex-start;justify-content:space-around;background:#fffefbe6;backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-top:1px solid var(--line);box-shadow:0 -8px 24px -18px #4a3e2840}.tabbar:before{content:none}.tabbar__item,.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding-top:var(--s-2);border:none;background:none;cursor:pointer;color:var(--ink-faint);font-size:var(--fs-xs);font-weight:500;transition:color .2s ease}.tabbar__item--active,.tab.active{color:var(--leaf-deep);font-weight:700}.tabbar__icon,.tab .ic{width:44px;height:28px;border-radius:var(--r-xs);display:grid;place-items:center;font-size:20px;transition:background .2s ease}.tabbar__item--active .tabbar__icon,.tab.active .ic{background:var(--matcha-mist)}.tabbar__label,.tab>:last-child{line-height:1}.today{position:relative}.today-header{position:relative;padding:calc(var(--s-6) + env(safe-area-inset-top,0px)) var(--gutter) var(--s-6);background:linear-gradient(180deg,var(--matcha-mist) 0%,var(--paper) 100%);border-bottom:1px solid var(--line)}.today-header:after{content:none}.today-header:before{content:none}.today-date{font-family:var(--font-body);font-size:var(--fs-meta);color:var(--leaf-deep);font-weight:700;letter-spacing:.04em;display:inline-flex;align-items:center;gap:var(--s-2)}.today-date:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--leaf)}.today-brandrow{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-3)}.today-greet{min-width:0;position:relative;z-index:2}.today-title{font-family:var(--font-hand);font-size:var(--fs-display);line-height:var(--lh-tight);color:var(--ink);margin:var(--s-2) 0 0;letter-spacing:.01em}.today-title__accent{color:var(--leaf-deep)}.today-sub{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:var(--s-2);font-weight:500}.today-mascot{width:60px;height:60px;flex:none;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(74,62,40,.14));animation:sloth-sway 6s ease-in-out infinite;transform-origin:50% 10%}.my-summary{margin-top:var(--s-4);display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.my-name{font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;line-height:var(--lh-tight);color:var(--ink)}.my-progress{font-size:var(--fs-meta);font-weight:500;color:var(--ink-soft);background:#ffffffb3;border:1px solid var(--line);padding:var(--s-1) var(--s-3);border-radius:var(--r-pill)}.my-streak{display:inline-flex;align-items:center;gap:var(--s-1);background:var(--night-mist);color:var(--honey-deep);font-weight:700;font-size:var(--fs-meta);padding:var(--s-1) var(--s-2);border-radius:var(--r-pill);border:1px solid #efe1bd}.checkin-cta{display:flex;align-items:center;justify-content:center;gap:var(--s-2);width:calc(100% - var(--gutter) * 2);margin:var(--s-4) var(--gutter) var(--s-1);position:relative;z-index:3;border:none;cursor:pointer;padding:var(--s-4);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:#fff;letter-spacing:.02em;background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 8px 20px -10px #5f9a3b8c;transition:transform .12s ease,box-shadow .2s ease}.checkin-cta:active{transform:translateY(1px);box-shadow:0 4px 12px -8px #5f9a3b80}.checkin-cta__ico{width:28px;height:28px;border-radius:50%;background:#fff3;display:grid;place-items:center;font-size:15px}.checkin-cta__spark{display:none}.member-list{list-style:none;margin:var(--s-5) 0 0;padding:0 var(--gutter);display:flex;flex-direction:column;gap:var(--s-3)}.member-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--elev-1);position:relative}.member-card--done{border-color:var(--matcha-pale)}.member-card--pending{background:var(--card);border-color:var(--line)}.member-card__head{display:flex;align-items:center;gap:var(--s-3)}.member-card__avatar{width:42px;height:42px;border-radius:var(--r-sm);flex:none;display:grid;place-items:center;font-size:22px;background:var(--matcha-mist);box-shadow:inset 0 0 0 1px var(--line)}.member-card__name{font-weight:700;font-size:var(--fs-lg);flex:1;color:var(--ink)}.member-card__streak{display:inline-flex;align-items:center;gap:var(--s-1);background:var(--night-mist);color:var(--honey-deep);font-weight:700;font-size:var(--fs-meta);padding:var(--s-1) var(--s-2);border-radius:var(--r-pill);border:1px solid #efe1bd}.member-card__nudge-badge{font-size:var(--fs-xs);color:var(--night);font-weight:700;background:var(--night-mist);padding:3px var(--s-2);border-radius:var(--r-pill);border:1px solid #efe1bd}.member-card__updated{font-size:var(--fs-xs);color:var(--ink-faint);font-weight:500;display:inline-flex;align-items:center;gap:var(--s-1)}.member-card__updated:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--matcha)}.member-card__goals{list-style:none;margin:var(--s-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.member-goal{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);font-size:var(--fs-sm);background:var(--paper-deep)}.member-goal--done{background:var(--matcha-mist)}.member-goal__mark{width:20px;height:20px;border-radius:7px;flex:none;display:grid;place-items:center;font-size:11px;font-weight:700}.member-goal--done .member-goal__mark{background:var(--leaf);color:#fff}.member-goal--pending .member-goal__mark{background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink-faint)}.member-goal__title{font-weight:700;color:var(--ink)}.member-goal--pending .member-goal__title{color:var(--ink-soft)}.member-goal__comment{flex-basis:100%;font-size:var(--fs-sm);color:var(--ink-soft);line-height:var(--lh-normal);background:var(--card);border:1px solid var(--line);border-left:3px solid var(--matcha);border-radius:var(--r-xs);padding:var(--s-2) var(--s-3);position:relative;margin-top:var(--s-1)}.member-goal__comment:before{content:none}.member-goal__comment-q{color:var(--matcha);margin-right:2px}.reaction-bar{flex-basis:100%;display:flex;align-items:center;gap:var(--s-2);margin-top:var(--s-2)}.reaction-bar__btn{border:1px solid var(--line);cursor:pointer;display:inline-flex;align-items:center;gap:var(--s-1);padding:var(--s-1) var(--s-3);border-radius:var(--r-pill);background:var(--card);font-size:var(--fs-body);color:var(--ink-soft);transition:transform .12s ease,background .15s ease,border-color .15s ease}.reaction-bar__btn:active{transform:scale(.94)}.reaction-bar__btn--mine{background:#fcebe1;border-color:#f3cdba;color:#c25a3c}.reaction-bar__count{font-size:var(--fs-xs);font-weight:700}.sloth-bubble{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-4) var(--gutter) 0;padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--matcha-mist);border:1px solid var(--matcha-pale);position:relative}.sloth-bubble__face{font-size:28px;flex:none;line-height:1;filter:drop-shadow(0 3px 5px rgba(74,62,40,.14));animation:sloth-sway 6s ease-in-out infinite;transform-origin:50% 0}@keyframes sloth-sway{0%,to{transform:rotate(-2.5deg)}50%{transform:rotate(2deg)}}.sloth-bubble__text{margin:0;align-self:center;font-size:var(--fs-sm);line-height:var(--lh-snug);color:var(--ink);font-weight:500}.sloth-bubble__img{width:40px;height:40px;object-fit:contain;flex:none}.streak-board{margin:var(--s-4) var(--gutter) 0}.streak-board__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-2);margin-bottom:var(--s-2)}.streak-board__title{font-family:var(--font-body);font-size:var(--fs-h2);font-weight:700;color:var(--ink);letter-spacing:.01em;margin:0}.streak-board__hint{font-size:var(--fs-xs);font-weight:700;color:var(--ink-faint);letter-spacing:.04em}.streak-board__rail{list-style:none;display:flex;gap:var(--s-2);overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%);padding:2px 12px;margin:0 -12px}.streak-board__rail::-webkit-scrollbar{display:none}.streak-chip{scroll-snap-align:start;flex:none;min-width:96px;max-width:140px;display:flex;flex-direction:column;align-items:center;gap:var(--s-1);padding:var(--s-3) var(--s-3) var(--s-2);background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--elev-1)}.streak-chip__ava{width:36px;height:36px;border-radius:var(--r-sm);flex:none;display:grid;place-items:center;font-size:19px;background:var(--matcha-mist);box-shadow:inset 0 0 0 1px var(--line)}.streak-chip__name{display:flex;align-items:center;gap:var(--s-1);max-width:100%;font-size:var(--fs-meta);font-weight:700;color:var(--ink);line-height:var(--lh-tight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.streak-chip__you{flex:none;font-size:var(--fs-xs);font-weight:700;color:var(--leaf-deep);background:var(--matcha-mist);border:1px solid var(--matcha-pale);border-radius:var(--r-pill);padding:1px var(--s-2)}.streak-chip__days{display:inline-flex;align-items:baseline;gap:2px;color:var(--honey-deep);line-height:1}.streak-chip__fire{font-size:var(--fs-sm);align-self:center}.streak-chip__num{font-family:var(--font-body);font-size:var(--fs-h1);font-weight:700;letter-spacing:.01em}.streak-chip__unit{font-size:var(--fs-xs);font-weight:700;color:var(--ink-faint)}.streak-chip--me{background:var(--matcha-mist);border-color:var(--matcha-pale);box-shadow:var(--elev-1),0 0 0 1px var(--matcha-pale) inset}.streak-chip--me .streak-chip__ava{background:#fff}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#423b2e6b;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center;animation:sheet-fade .18s ease}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:480px;background:var(--paper);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--s-2) var(--s-5) calc(var(--s-6) + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 40px -16px #4a3e284d;max-height:88vh;overflow-y:auto;animation:sheet-rise .26s cubic-bezier(.22,1,.36,1)}@keyframes sheet-rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet:before{content:"";display:block;width:40px;height:4px;border-radius:3px;background:var(--line);margin:0 auto var(--s-4)}.sheet__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s-4)}.sheet__header h2{margin:0;font-family:var(--font-body);font-size:var(--fs-h1);font-weight:700;color:var(--ink)}.sheet__close{border:1px solid var(--line);background:var(--card);width:32px;height:32px;border-radius:50%;font-size:15px;color:var(--ink-soft);display:grid;place-items:center}.sheet__empty{color:var(--ink-soft);font-size:var(--fs-sm);text-align:center;padding:var(--s-6) 0}.sheet__list{list-style:none;margin:0 0 var(--s-4);padding:0;display:flex;flex-direction:column;gap:var(--s-3)}.sheet__goal{display:flex;flex-direction:column;gap:var(--s-2)}.checktoggle{display:flex;align-items:center;gap:var(--s-3);border:1px solid var(--line);cursor:pointer;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--card);font-family:var(--font-body);text-align:left;transition:transform .12s ease,border-color .2s ease,background .2s ease}.checktoggle:active{transform:scale(.99)}.checktoggle__mark{width:28px;height:28px;border-radius:var(--r-xs);flex:none;display:grid;place-items:center;font-size:16px;font-weight:700;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink-faint)}.checktoggle__title{font-size:var(--fs-lg);font-weight:700;color:var(--ink-soft)}.checktoggle--done{background:var(--matcha-mist);border-color:var(--matcha)}.checktoggle--done .checktoggle__mark{background:var(--leaf);color:#fff;box-shadow:none}.checktoggle--done .checktoggle__title{color:var(--leaf-deep)}.sheet__comment{border:1px solid var(--line);width:100%;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--card);font-size:var(--fs-body);font-family:var(--font-body);transition:border-color .2s ease}.sheet__comment::placeholder{color:var(--ink-faint)}.sheet__comment:focus{outline:none;border-color:var(--matcha);box-shadow:0 0 0 3px var(--matcha-mist)}.sheet__save{width:100%;border:none;cursor:pointer;padding:var(--s-4);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:#fff;letter-spacing:.02em;background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 8px 20px -10px #5f9a3b8c;transition:transform .12s ease,box-shadow .2s ease}.sheet__save:active{transform:translateY(1px);box-shadow:0 4px 12px -8px #5f9a3b80}.sheet__save:disabled{filter:saturate(.5) brightness(1.04);opacity:.6;box-shadow:none;cursor:default}.checkin-success{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--s-3);padding:var(--s-8) var(--s-4) var(--s-6);animation:success-fade .3s ease both}@keyframes success-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.checkin-success__mascot{width:96px;height:96px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(74,62,40,.16));transform-origin:50% 80%;animation:success-pop .5s cubic-bezier(.22,1,.36,1) both}@keyframes success-pop{0%{opacity:0;transform:scale(.7)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.checkin-success__title{margin:var(--s-1) 0 0;font-family:var(--font-body);font-size:var(--fs-h1);font-weight:700;letter-spacing:.02em;color:var(--leaf-deep)}.checkin-success__praise{margin:0;max-width:28ch;font-size:var(--fs-sm);line-height:var(--lh-snug);font-weight:500;color:var(--ink-soft)}.checkin-success__close{margin-top:var(--s-3);border:1px solid var(--matcha-pale);cursor:pointer;padding:var(--s-2) var(--s-5);border-radius:var(--r-pill);font-family:var(--font-body);font-size:var(--fs-sm);font-weight:700;color:var(--leaf-deep);background:var(--matcha-mist);transition:transform .12s ease,background .2s ease}.checkin-success__close:active{transform:translateY(1px)}.month-cal{margin:var(--s-4) var(--gutter);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5) var(--s-4);box-shadow:var(--elev-1)}.month-cal__title{font-family:var(--font-body);font-size:var(--fs-h2);font-weight:700;color:var(--ink);text-align:center;margin-bottom:var(--s-4)}.month-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--s-1)}.month-cal__weekday{text-align:center;font-size:var(--fs-xs);color:var(--ink-faint);font-weight:500;padding-bottom:var(--s-1)}.month-cal__cell{aspect-ratio:1 / 1;display:grid;place-items:center;border-radius:var(--r-xs);font-size:var(--fs-sm);color:var(--ink-soft)}.month-cal__cell--blank{background:none}.month-cal__cell--none{background:var(--paper-deep)}.month-cal__cell--full{background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);color:#fff;font-weight:700;box-shadow:0 3px 8px -5px #5f9a3b99}.calendar-page{padding:var(--s-5) 0 0}.calendar-header{display:flex;gap:var(--s-3);padding:0 var(--gutter);flex-wrap:wrap}.calendar-header label{flex:1;display:flex;flex-direction:column;gap:var(--s-1);font-size:var(--fs-meta);color:var(--ink-soft);font-weight:500}.calendar-header select{border:1px solid var(--line);padding:var(--s-3);border-radius:var(--r-sm);background:var(--card);font-size:var(--fs-body);color:var(--ink)}.streak-display{margin:var(--s-4) var(--gutter) 0;text-align:center;font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:var(--honey-deep);background:var(--night-mist);border:1px solid #efe1bd;padding:var(--s-3);border-radius:var(--r-md)}.onboarding{padding:calc(var(--s-10) + env(safe-area-inset-top,0px)) var(--s-6) calc(var(--s-10) + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:var(--s-4);min-height:100vh;position:relative}.onboarding:after{content:none}.onboarding:before{content:none}.onboarding h1{font-family:var(--font-hand);font-size:var(--fs-h1);color:var(--ink);line-height:var(--lh-snug);margin:0}.onboarding p{font-size:var(--fs-sm);line-height:var(--lh-normal);color:var(--ink-soft);font-weight:500;margin:0}.onboarding label{display:flex;flex-direction:column;gap:var(--s-2);font-size:var(--fs-sm);font-weight:700;color:var(--ink)}.onboarding input[type=text],.onboarding textarea{border:1px solid var(--line);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--card);font-size:var(--fs-lg);font-family:var(--font-body);resize:vertical;transition:border-color .2s ease,box-shadow .2s ease}.onboarding input[type=text]:focus,.onboarding textarea:focus{outline:none;border-color:var(--matcha);box-shadow:0 0 0 3px var(--matcha-mist)}.onboarding input::placeholder,.onboarding textarea::placeholder{color:var(--ink-faint)}.onboarding>button{width:100%;border:none;cursor:pointer;padding:var(--s-4);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:#fff;letter-spacing:.02em;margin-top:var(--s-1);background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 8px 20px -10px #5f9a3b8c;transition:transform .12s ease,box-shadow .2s ease}.onboarding>button:active{transform:translateY(1px);box-shadow:0 4px 12px -8px #5f9a3b80}.onboarding>button:disabled{filter:saturate(.5) brightness(1.04);opacity:.6;box-shadow:none;cursor:default}.onboarding__mascot{width:96px;height:96px;object-fit:contain;display:block;margin:0 auto;filter:drop-shadow(0 8px 10px rgba(74,62,40,.14));animation:sloth-sway 6s ease-in-out infinite;transform-origin:50% 8%}.recovery-code{display:block;font-family:Kosugi Maru,monospace;font-size:var(--fs-lg);letter-spacing:.1em;color:var(--bark-deep);background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s-4);text-align:center;word-break:break-all}.me-page,.settings-page{padding:calc(var(--s-8) + env(safe-area-inset-top,0px)) var(--gutter) calc(var(--s-8) + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:var(--s-5)}.me-page>h1,.settings-page>h1{font-family:var(--font-hand);font-size:var(--fs-h1);color:var(--ink);margin:0}.me-page h2,.settings-page h2{font-family:var(--font-body);font-size:var(--fs-h2);font-weight:700;color:var(--ink);margin:0 0 var(--s-3)}.me-page section,.settings-page section{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-5) var(--s-4);box-shadow:var(--elev-1)}.me-page label{display:flex;flex-direction:column;gap:var(--s-2);font-size:var(--fs-sm);font-weight:700;color:var(--ink)}.me-page input[type=text],.settings-page input[type=text]{border:1px solid var(--line);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--paper-deep);font-size:var(--fs-lg);font-family:var(--font-body);transition:border-color .2s ease,box-shadow .2s ease}.me-page input[type=text]:focus,.settings-page input[type=text]:focus{outline:none;border-color:var(--matcha);box-shadow:0 0 0 3px var(--matcha-mist)}.me-page section button,.settings-page section button:not(.notify-prompt__enable){margin-top:var(--s-3)}.profile>button,.recovery>button{border:1px solid var(--matcha-pale);cursor:pointer;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);font-family:var(--font-body);font-size:var(--fs-body);font-weight:700;color:var(--leaf-deep);background:var(--matcha-mist)}.goals ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.goals li{display:flex;align-items:center;gap:var(--s-2)}.goals li input[type=text]{flex:1}.goals li button{border:1px solid var(--line);cursor:pointer;padding:var(--s-2) var(--s-3);border-radius:var(--r-xs);font-size:var(--fs-sm);font-weight:700;color:var(--ink-soft);background:var(--paper-deep);white-space:nowrap}.goal-inactive{opacity:.5}.goal-inactive input[type=text]{text-decoration:line-through}.add-goal{display:flex;align-items:center;gap:var(--s-2);margin-top:var(--s-3)}.add-goal input[type=text]{flex:1}.add-goal button{border:none;cursor:pointer;padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);font-family:var(--font-body);font-size:var(--fs-body);font-weight:700;color:#fff;background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 4px 12px -8px #5f9a3b8c;white-space:nowrap}.notify-goals ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s-2)}.notify-goals li label{display:flex;align-items:center;gap:var(--s-3);font-size:var(--fs-body);color:var(--ink)}.notify-goals input[type=checkbox]{width:20px;height:20px;accent-color:var(--leaf-deep)}.settings-page p,.me-page p{font-size:var(--fs-meta);line-height:var(--lh-normal);color:var(--ink-soft);font-weight:500;margin:var(--s-3) 0 0}.notify-prompt{display:flex;flex-direction:column;gap:var(--s-3)}.notify-prompt p{font-size:var(--fs-sm);line-height:var(--lh-normal);color:var(--ink);font-weight:500;margin:0}.notify-prompt--granted{background:var(--matcha-mist);border:1px solid var(--matcha-pale);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4)}.notify-prompt--granted p{color:var(--leaf-deep);font-weight:700}.notify-prompt--info{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4)}.notify-prompt__steps{margin:var(--s-1) 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--s-3);counter-reset:step}.notify-prompt__steps li{display:flex;align-items:center;gap:var(--s-3);font-size:var(--fs-sm);color:var(--ink)}.notify-prompt__shot{flex:none;min-width:56px;height:40px;padding:0 var(--s-3);border-radius:var(--r-xs);display:grid;place-items:center;font-size:var(--fs-body);background:var(--matcha-mist);border:1px solid var(--matcha-pale);color:var(--leaf-deep)}.notify-prompt__note{font-size:var(--fs-meta)!important;color:var(--ink-faint)!important;line-height:var(--lh-normal)}.notify-prompt__enable{border:none;cursor:pointer;padding:var(--s-4);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--fs-lg);font-weight:700;color:#fff;background:linear-gradient(180deg,var(--leaf) 0%,var(--leaf-deep) 100%);box-shadow:0 8px 20px -10px #5f9a3b8c;transition:transform .12s ease,box-shadow .2s ease}.notify-prompt__enable:active{transform:translateY(1px);box-shadow:0 4px 12px -8px #5f9a3b80}.notify-prompt h3{font-family:var(--font-body);font-size:var(--fs-h2);font-weight:700;color:var(--ink);margin:0;line-height:var(--lh-snug)}
