:root{--ground: #e6dcc6;--surface: #f0e7d3;--surface-2: #e9dec9;--ink: #3a312a;--muted: #8c7e6d;--hair: rgba(58, 49, 42, .1);--hair-soft: rgba(58, 49, 42, .06);--brand: #c6764c;--brand-ink: #a65c36;--track: rgba(58, 49, 42, .1);--shadow: 0 1px 2px rgba(58, 49, 42, .05), 0 8px 24px rgba(58, 49, 42, .07);--h-sage: #8b9a66;--h-clay: #c6764c;--h-saffron: #dca144;--h-pine: #4e8c7d;--h-plum: #8a6e97;--h-rose: #c67c82;--h-dusk: #6e86a6;--h-ochre: #b98a3c;--font-serif: ui-serif, "New York", Georgia, "Iowan Old Style", serif;--font-round: ui-rounded, "SF Pro Rounded", "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-body: -apple-system, BlinkMacSystemFont, ui-sans-serif, "Segoe UI", Roboto, system-ui, sans-serif}@media (prefers-color-scheme: dark){:root{--ground: #201b16;--surface: #2a241d;--surface-2: #322a22;--ink: #efe6d7;--muted: #a99a85;--hair: rgba(239, 230, 215, .12);--hair-soft: rgba(239, 230, 215, .07);--brand: #d98a5e;--brand-ink: #e6a075;--track: rgba(239, 230, 215, .11);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 10px 28px rgba(0, 0, 0, .34);--h-sage: #9fae77;--h-clay: #d3835a;--h-saffron: #e4ae56;--h-pine: #5ca192;--h-plum: #9e82ab;--h-rose: #d28e93;--h-dusk: #8298b6;--h-ochre: #cb9c4c}}:root[data-theme=light]{--ground: #e6dcc6;--surface: #f0e7d3;--surface-2: #e9dec9;--ink: #3a312a;--muted: #8c7e6d;--hair: rgba(58,49,42,.1);--hair-soft: rgba(58,49,42,.06);--brand: #c6764c;--brand-ink: #a65c36;--track: rgba(58,49,42,.1);--shadow: 0 1px 2px rgba(58,49,42,.05), 0 8px 24px rgba(58,49,42,.07);--h-sage:#8b9a66;--h-clay:#c6764c;--h-saffron:#dca144;--h-pine:#4e8c7d;--h-plum:#8a6e97;--h-rose:#c67c82;--h-dusk:#6e86a6;--h-ochre:#b98a3c}:root[data-theme=dark]{--ground:#201b16;--surface:#2a241d;--surface-2:#322a22;--ink:#efe6d7;--muted:#a99a85;--hair:rgba(239,230,215,.12);--hair-soft:rgba(239,230,215,.07);--brand:#d98a5e;--brand-ink:#e6a075;--track:rgba(239,230,215,.11);--shadow:0 1px 2px rgba(0,0,0,.3), 0 10px 28px rgba(0,0,0,.34);--h-sage:#9fae77;--h-clay:#d3835a;--h-saffron:#e4ae56;--h-pine:#5ca192;--h-plum:#9e82ab;--h-rose:#d28e93;--h-dusk:#8298b6;--h-ochre:#cb9c4c}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-round);-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100dvh;max-width:480px;margin:0 auto;overflow:hidden;position:relative}.appbar{padding:16px 18px 10px;display:flex;align-items:center;justify-content:space-between}.appbar .ttl{font-family:var(--font-serif);font-size:22px;font-weight:600}.appbar .ttl small{display:block;font-family:var(--font-round);font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.iconbtn{width:32px;height:32px;border:none;border-radius:9px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font-size:15px;cursor:pointer}.view{flex:1;overflow-y:auto;overflow-x:hidden;padding:6px 16px 20px;-webkit-overflow-scrolling:touch}.view::-webkit-scrollbar{width:0}.tabbar{display:flex;gap:4px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--hair-soft)}.tabbar button{flex:1;border:none;background:transparent;color:var(--muted);font-family:var(--font-round);font-size:11px;font-weight:700;padding:8px 0 4px;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px}.tabbar button .ico{font-size:17px}.tabbar button.act{color:var(--brand-ink)}.card{background:var(--surface);border-radius:18px;padding:16px;box-shadow:var(--shadow);margin-bottom:14px}.card h5{margin:0 0 12px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:48px 20px}.empty h2{color:var(--ink);font-size:18px;margin:0 0 6px}.onboard{padding:32px 8px}.onboard h2{font-family:var(--font-serif);font-size:24px;margin:0 0 8px}.onboard>p{color:var(--muted);font-size:14px;margin:0 0 20px;max-width:34ch;line-height:1.45}.suggest{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sug{display:flex;align-items:center;gap:9px;border:none;text-align:left;background:var(--surface);border-radius:14px;padding:14px;box-shadow:var(--shadow);color:var(--ink);font-family:var(--font-round);font-weight:700;font-size:14px;cursor:pointer;transition:transform .09s ease;border-left:3px solid var(--c)}.sug:active{transform:scale(.97)}.sug-ic{font-size:20px}.welcome-list{display:grid;gap:14px;margin:4px 0 18px}.welcome-item{display:flex;gap:12px;align-items:flex-start}.welcome-item .wemoji{font-size:22px;flex:none;width:30px;text-align:center}.welcome-item b{font-size:14.5px}.welcome-item p{margin:2px 0 0;color:var(--muted);font-size:12.5px;line-height:1.4}.tnum{font-variant-numeric:tabular-nums}.fab{position:absolute;right:18px;bottom:calc(74px + env(safe-area-inset-bottom));width:54px;height:54px;border-radius:50%;border:none;background:var(--brand);color:#fff;font-size:28px;line-height:1;box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 55%,transparent);cursor:pointer;transition:transform .1s ease;z-index:5}.fab:active{transform:scale(.9)}.hero{background:var(--surface);border-radius:22px;padding:18px;box-shadow:var(--shadow);display:flex;align-items:center;gap:18px;margin-bottom:16px}.ring{position:relative;flex:none}.ring svg{display:block}.ring .track{stroke:var(--track)}.ring .seg{transition:opacity .45s ease}.ring .prog{transition:stroke-dashoffset .6s cubic-bezier(.2,.85,.25,1)}.ring .slice{animation:sliceIn .4s ease both;transition:stroke .3s ease}@keyframes sliceIn{0%{opacity:0}}.ring .lbl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center}.ring .lbl b{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.ring .lbl s{font-size:9px;color:var(--muted);text-decoration:none;letter-spacing:.12em;text-transform:uppercase}.hero-txt h3{margin:0 0 4px;font-size:16px;font-weight:800}.hero-txt p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.35}.chip{display:inline-flex;align-items:center;gap:5px;margin-top:10px;font-size:12px;font-weight:700;background:var(--surface-2);padding:5px 11px;border-radius:999px}.task{display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:16px;padding:13px 15px;box-shadow:var(--shadow);margin-bottom:9px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .09s ease}.task:active{transform:scale(.985)}.task .ic{font-size:19px;width:24px;text-align:center}.task .meta{min-width:0;flex:1}.task .meta b{font-size:14.5px;font-weight:700;display:block}.task .meta s{text-decoration:none;font-size:11px;color:var(--muted);font-weight:600}.task.on .meta b{color:var(--muted)}.task .chk{width:28px;height:28px;border-radius:50%;border:2px solid var(--c);flex:none;display:grid;place-content:center;color:#fff;font-size:15px;transition:background .25s ease}.task .chk span{opacity:0;transform:scale(.4);transition:opacity .2s ease,transform .25s cubic-bezier(.3,1.4,.5,1)}.task.on .chk{background:var(--c)}.task.on .chk span{opacity:1;transform:scale(1)}.task .edit-btn{flex:none;width:32px;height:32px;border:none;background:transparent;color:var(--muted);font-size:16px;cursor:pointer;border-radius:9px;display:grid;place-content:center;margin-right:2px}.task .edit-btn:active{background:var(--surface-2);transform:scale(.9)}.dowrow{display:grid;grid-template-columns:96px repeat(7,1fr);gap:6px;align-items:end;padding:2px 4px 8px;position:sticky;top:0;background:var(--ground);z-index:2}.dowrow .d{text-align:center;font-size:10px;font-weight:700;color:var(--muted)}.dowrow .d .n{display:block;font-size:11px;color:var(--ink)}.dowrow .d.today .n{background:var(--brand);color:#fff;width:18px;height:18px;border-radius:6px;margin:1px auto 0;display:grid;place-content:center}.dowrow .d.we{color:color-mix(in srgb,var(--muted) 60%,var(--h-rose))}.weekcard{background:var(--surface);border-radius:18px;padding:6px 12px;box-shadow:var(--shadow)}.wrow{display:grid;grid-template-columns:96px repeat(7,1fr);gap:6px;align-items:center;padding:10px 0;border-bottom:1px solid var(--hair-soft)}.wrow:last-child{border-bottom:0}.wname{display:flex;align-items:center;gap:7px;min-width:0;cursor:pointer}.wname b{font-size:11.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell{aspect-ratio:1;max-width:30px;width:100%;margin:0 auto;border-radius:8px;border:1.5px solid var(--c);cursor:pointer;transition:background .2s ease,transform .1s ease}.cell.on{background:var(--c)}.cell:active{transform:scale(.85)}.cell.today{outline:2px solid color-mix(in srgb,var(--c) 42%,transparent);outline-offset:1px}.cell.fut{opacity:.28;border-style:dashed;pointer-events:none}.cell.off{border:none;background:var(--track);opacity:.5;pointer-events:none;max-width:30px;width:100%;margin:0 auto;aspect-ratio:1;border-radius:8px}.wchart{background:var(--surface);border-radius:18px;padding:14px 16px 12px;box-shadow:var(--shadow);margin-top:14px}.wchart h5{margin:0 0 12px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.wbars{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:end;height:88px}.wb{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.wb .bar{width:64%;max-width:18px;border-radius:5px 5px 3px 3px;background:color-mix(in srgb,var(--brand) 42%,transparent);transition:height .5s cubic-bezier(.2,.85,.25,1);min-height:4px}.wb.today .bar{background:var(--brand)}.wb.best .bar{box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 38%,transparent)}.wb .lb{font-size:10px;font-weight:700;color:var(--muted)}.wb.today .lb{color:var(--brand-ink)}.modal-back{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000006b;display:flex;align-items:flex-end;z-index:20;animation:mfade .16s ease}@keyframes mfade{0%{opacity:0}}.modal{width:100%;background:var(--ground);border-radius:22px 22px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));max-height:92%;overflow-y:auto;animation:mup .26s cubic-bezier(.2,.85,.25,1)}@keyframes mup{0%{transform:translateY(100%)}}.modal h3{margin:0 0 14px;font-size:17px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:7px}.field input[type=text]{width:100%;padding:11px 12px;border-radius:10px;border:1px solid var(--hair);background:var(--surface);color:var(--ink);font-size:15px;font-family:var(--font-round)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip-pick{border:none;background:var(--surface);border-radius:10px;padding:8px 10px;font-size:18px;cursor:pointer;box-shadow:var(--shadow)}.chip-pick.sel{outline:2px solid var(--ink)}.daypick{display:flex;gap:6px;flex-wrap:wrap}.daybtn{flex:1;min-width:38px;padding:9px 0;border-radius:10px;border:1px solid var(--hair);background:var(--surface);color:var(--muted);font-family:var(--font-round);font-weight:700;font-size:13px;cursor:pointer;transition:background .15s ease,color .15s ease}.daybtn.sel{background:var(--brand);color:#fff;border-color:var(--brand)}.swatch{width:34px;height:34px;border-radius:9px;border:none;cursor:pointer;position:relative}.swatch.sel:after{content:"✓";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:15px;font-weight:700}.seg{display:flex;gap:8px}.seg button{flex:1;padding:10px;border-radius:10px;border:1px solid var(--hair);background:var(--surface);color:var(--ink);font-size:14px;font-family:var(--font-round);cursor:pointer}.seg button.sel{background:var(--ink);color:var(--ground);border-color:var(--ink)}.stepper{display:flex;align-items:center;gap:14px}.stepper button{width:36px;height:36px;border-radius:9px;border:1px solid var(--hair);background:var(--surface);color:var(--ink);font-size:18px;cursor:pointer}.stepper span{font-size:15px;font-variant-numeric:tabular-nums}.modal-actions{display:flex;gap:10px;margin-top:8px}.btn{flex:1;padding:13px;border-radius:12px;border:none;font-size:15px;font-weight:700;font-family:var(--font-round);cursor:pointer}.btn-primary{background:var(--brand);color:#fff}.btn-primary:disabled{opacity:.5}.btn-ghost{background:var(--surface);color:var(--ink)}.btn-danger{background:transparent;color:var(--h-rose);flex:none;padding:13px 16px}.pop{position:absolute;left:50%;top:34%;transform:translate(-50%,-50%) scale(.5);font-size:40px;opacity:0;pointer-events:none;z-index:9}.pop.go{animation:pop .7s ease forwards}@keyframes pop{15%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}to{opacity:0;transform:translate(-50%,-90%) scale(1)}}.streakrow{display:flex;align-items:center;gap:14px}.streakrow .flame{font-size:34px}.streakrow .big{font-size:32px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.streakrow .cap{font-size:11px;color:var(--muted)}.streakrow .rec{margin-left:auto;text-align:right;font-size:11px;color:var(--muted)}.streakrow .rec b{display:block;font-size:19px;color:var(--ink);font-variant-numeric:tabular-nums}.trendsvg{display:block;width:100%;height:auto;margin-top:10px}.trendsvg .area{fill:color-mix(in srgb,var(--brand) 13%,transparent)}.trendsvg .ln{fill:none;stroke:var(--brand);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.trendsvg .lastdot{fill:var(--brand);stroke:var(--surface);stroke-width:2}.delta{font-size:11.5px;font-weight:800;font-variant-numeric:tabular-nums}.delta.up{color:var(--h-pine)}.delta.down{color:var(--h-rose)}.xlabels{display:flex;justify-content:space-between;font-size:9.5px;color:var(--muted);font-weight:700;margin-top:4px}.hbar{display:grid;grid-template-columns:92px 1fr 42px;gap:10px;align-items:center;margin-bottom:11px}.hbar:last-child{margin-bottom:0}.hbar.tap{cursor:pointer}.hbar .nm{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbar .tr{height:8px;border-radius:5px;background:color-mix(in srgb,var(--c) 15%,transparent);overflow:hidden}.hbar .tr i{display:block;height:100%;border-radius:5px;background:var(--c);transition:width .5s ease}.hbar .pc{font-size:11px;font-weight:700;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.sheet-back{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000006b;display:flex;align-items:flex-end;z-index:30;animation:mfade .16s ease}.sheet{width:100%;background:var(--ground);border-radius:22px 22px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));max-height:90%;overflow-y:auto;animation:mup .26s cubic-bezier(.2,.85,.25,1)}.sheet-h{display:flex;align-items:center;gap:11px;margin-bottom:14px}.sheet-h .ic{font-size:25px}.sheet-h b{font-size:16px;font-weight:800}.sheet-h s{display:block;text-decoration:none;font-size:11px;color:var(--muted)}.sheet-h .x{margin-left:auto;width:30px;height:30px;border:none;border-radius:9px;background:var(--surface);color:var(--muted);font-size:14px;cursor:pointer;box-shadow:var(--shadow)}.goalcard{background:var(--surface);border-radius:16px;padding:16px;box-shadow:var(--shadow)}.goalwrap{position:relative}.goalsvg{width:100%;height:auto;display:block;overflow:visible}.goalsvg text{font-family:var(--font-round);font-weight:700}.goalsvg .tgt{stroke:var(--muted);stroke-width:1.4;stroke-dasharray:4 4;opacity:.55}.goalsvg .tgtlbl{fill:var(--muted);font-size:9px}.goalsvg .area{fill:color-mix(in srgb,var(--c) 12%,transparent)}.goalsvg .cum{fill:none;stroke:var(--c);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.goalsvg .end{fill:var(--c);stroke:var(--surface);stroke-width:2}.goalsvg .hit{fill:var(--brand);stroke:var(--surface);stroke-width:2}.goal-flag{position:absolute;transform:translate(-50%,-140%);background:var(--brand);color:#fff;font-weight:800;font-size:10.5px;padding:4px 9px;border-radius:999px;white-space:nowrap;box-shadow:var(--shadow)}.goal-flag:after{content:"";position:absolute;left:50%;bottom:-4px;transform:translate(-50%);border:4px solid transparent;border-top-color:var(--brand);border-bottom:0}.goal-cap{margin-top:14px;font-size:12.5px;font-weight:700;line-height:1.4;color:var(--muted)}.goal-cap.done{color:var(--brand-ink)}.sheet-edit{margin-top:14px;width:100%;padding:12px;border-radius:12px;border:1px solid var(--hair);background:var(--surface);color:var(--ink);font-family:var(--font-round);font-weight:700;font-size:14px;cursor:pointer}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
