:root{--bg-grad:linear-gradient(180deg, #fdf3e7 0%, #fbe8e3 55%, #f5dbe6 100%);--text:#5a4a46;--text-2:#8d7771;--text-3:#b09a94;--accent:#f29e8e;--accent-strong:#e0776a;--accent-soft:#fbe3df;--green:#6cc08b;--green-soft:#e3f3e8;--neutral:#c9b8b2;--card:#ffffffeb;--line:#f0e2de;--chip:#fbeee9;--hint:#fff4d9;--hint-line:#f3d98f;--sheet:#fffaf7;--radius:16px;--shadow:0 2px 8px #5a4a4614;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--drawer-h:50dvh;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:#f5dbe6}:root{--page-top:#fdf3e7}html[data-phase=dusk]{--bg-grad:linear-gradient(180deg, #fbd3b0 0%, #f3b9a9 50%, #cfa6c6 100%);--page-top:#fbd3b0;background:#cfa6c6}html[data-phase=night]{--bg-grad:linear-gradient(180deg, #232a52 0%, #3a3a6e 55%, #5a4f7e 100%);--page-top:#232a52;background:#5a4f7e}html[data-phase=night] .home>.hud-top>span,html[data-phase=night] .home>.greeting{color:#f4eefc}body{background:var(--bg-grad);min-height:100dvh;color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,PingFang SC,Hiragino Sans GB,sans-serif;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{font-size:16px}button{cursor:pointer;background:0 0;border:none;padding:0}button:disabled{opacity:.45;cursor:default}h1,h2,h3,p{margin:0}.screen{min-height:100dvh;padding:calc(var(--safe-top) + 14px) max(16px, var(--safe-right)) calc(var(--safe-bottom) + 24px) max(16px, var(--safe-left));max-width:520px;margin:0 auto}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:8px;display:flex}.spread{justify-content:space-between;align-items:center;gap:8px;display:flex}.muted{color:var(--text-2)}.faint{color:var(--text-3);font-size:13px}.title{font-size:20px;font-weight:800}.section-title{margin:18px 2px 8px;font-size:14px;font-weight:700}.btn{background:var(--chip);min-height:44px;color:var(--text);border-radius:22px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-weight:700;display:inline-flex}.btn.primary{background:var(--accent);color:#fff;box-shadow:0 3px 10px #f29e8e73}.btn.ghost{color:var(--text-2);background:0 0;font-weight:600}.btn.block{width:100%}.btn.small{border-radius:17px;min-height:34px;padding:0 12px;font-size:14px}.link{color:var(--accent-strong);font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--text-2);font-size:13px;font-weight:600}.input,.select,.textarea{border:1.5px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;padding:10px 12px}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent)}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-3) 50%), linear-gradient(135deg, var(--text-3) 50%, transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-repeat:no-repeat;background-size:5px 5px;padding-right:28px}.textarea{resize:none;min-height:150px;line-height:1.6}.chip{background:var(--chip);color:var(--text-2);border-radius:12px;align-items:center;gap:4px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-flex}.lv{color:var(--accent-strong);background:var(--accent-soft);border-radius:9px;padding:1px 8px;font-size:12px;font-weight:700}.error-text{color:var(--accent-strong);font-size:14px}.check{border:2px solid var(--neutral);color:#fff;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:14px;font-weight:800;display:inline-flex}.check.on{background:var(--accent);border-color:var(--accent)}.home{max-width:520px;padding:var(--safe-top) var(--safe-right) 0 var(--safe-left);flex-direction:column;margin:0 auto;display:flex;position:fixed;inset:0;overflow:hidden}.home.covered{visibility:hidden}.home.covered .pins{display:none}.page-layer{animation:.28s cubic-bezier(.22,1,.36,1) page-in}@keyframes page-in{0%{opacity:0;transform:translateY(24px)}}.hud-top{justify-content:space-between;align-items:center;padding:12px 18px 0;font-size:14px;font-weight:600;display:flex}.icon-btn{width:40px;height:40px;box-shadow:var(--shadow);background:#ffffffd9;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:inline-flex}.scene{z-index:0;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .6s;position:absolute;inset:0}.scene.ready{opacity:1}.scene-waking{text-align:center;color:var(--text-3);pointer-events:none;font-size:14px;font-weight:600;animation:.5s .8s both fade-in;position:absolute;top:50%;left:0;right:0}html[data-phase=night] .scene-waking{color:#f4eefcb3}.scene canvas{touch-action:none}.scene.pointing canvas{cursor:pointer}.pins{pointer-events:none;position:absolute;inset:0;overflow:hidden}.pin{visibility:hidden;pointer-events:auto;position:absolute;top:0;left:0}.home>.hud-top,.home>.greeting,.home>.hud-bottom{z-index:1;pointer-events:none;position:relative}.home>.hud-top>*,.home>.hud-bottom>.hud-btn{pointer-events:auto}.home>.greeting,.home>.hud-bottom,.pins{transition:opacity .3s}.home.focused>.greeting,.home.drawer-up>.hud-bottom,.home.focused .pins{opacity:0}.back-pill{min-height:40px;box-shadow:var(--shadow);color:var(--text);background:#ffffffeb;border-radius:20px;padding:0 16px;font-size:15px;font-weight:700;animation:.25s fade-in}.ring-pin-btn .ring-label{transform:translateX(calc(-50% + var(--label-shift,0px)));color:var(--text-2);white-space:nowrap;background:#ffffffe0;border-radius:8px;padding:0 6px;font-size:10.5px;font-weight:700;line-height:15px;position:absolute;top:calc(100% - 3px);left:50%;box-shadow:0 1px 3px #5a4a461a}.ring{filter:drop-shadow(0 2px 4px #5a4a4626);justify-content:center;align-items:center;display:inline-flex;position:relative}.ring svg{position:absolute;inset:0}.ring .ring-icon{font-size:15px;line-height:1;position:relative}.ring .ring-count{min-width:16px;height:16px;color:var(--text-2);background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 4px;font-size:10px;font-weight:700;display:flex;position:absolute;top:-4px;right:-5px;box-shadow:0 1px 3px #5a4a4633}.ring.resting{opacity:.55}.ring-arc{transition:stroke-dasharray .9s cubic-bezier(.22,1,.36,1),stroke .9s,opacity .2s}.hud-bottom{padding:10px 0 calc(var(--safe-bottom) + 18px);justify-content:center;align-items:center;gap:14px;margin-top:auto;display:flex;position:relative}.hud-btn{min-width:124px;height:48px;color:var(--text);background:#fffffff0;border-radius:24px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:700;display:flex;box-shadow:0 2px 8px #5a4a4624}.hud-btn svg{color:var(--accent-strong);flex-shrink:0}.hud-btn:active{transform:scale(.97)}.hud-chips{pointer-events:none;justify-content:center;gap:8px;display:flex;position:absolute;top:-22px;left:0;right:0}.hud-chips>*{pointer-events:auto}.pending-chip{color:var(--text-2);box-shadow:var(--shadow);background:#fff;border-radius:14px;padding:4px 12px;font-size:13px;font-weight:700}.backdrop{z-index:20;background:#46322d47;animation:.2s fade-in;position:fixed;inset:0}.sheet{z-index:21;max-width:520px;max-height:calc(100% - var(--safe-top) - 24px);background:var(--sheet);border-radius:24px 24px 0 0;flex-direction:column;margin:0 auto;animation:.28s cubic-bezier(.22,1,.36,1) slide-up;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 24px #5a4a4624}.sheet.tall{height:calc(100% - var(--safe-top) - 24px)}.sheet-head{flex-shrink:0;padding:8px 18px 6px}.sheet-handle{background:#e6d6d1;border-radius:3px;width:38px;height:5px;margin:0 auto 10px}.sheet-title{justify-content:space-between;align-items:center;min-height:32px;font-size:17px;font-weight:800;display:flex}.sheet-body{-webkit-overflow-scrolling:touch;padding:6px 18px calc(var(--safe-bottom) + 20px);flex:1;overflow-y:auto}.sheet-foot{padding:10px 18px calc(var(--safe-bottom) + 14px);border-top:1px solid var(--line);background:var(--sheet);flex-shrink:0;align-items:center;gap:10px;display:flex}.drawer{z-index:10;max-width:520px;height:var(--drawer-h);background:var(--sheet);border-radius:24px 24px 0 0;flex-direction:column;margin:0 auto;transition:transform .45s cubic-bezier(.22,1,.36,1),height .3s;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(calc(100% + 24px));box-shadow:0 -6px 24px #5a4a4624}.drawer.open{transform:translateY(0)}.drawer.dragging{transition:none}.drawer-more{padding:6px 0 6px 12px;font-size:14px}.drawer-level{font-size:13px}.drawer-head{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;padding:8px 18px}@keyframes slide-up{0%{opacity:0;transform:translateY(40%)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}}.examples{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.example{background:var(--chip);color:var(--text-2);text-align:left;border-radius:12px;padding:6px 10px;font-size:13px}.quote{background:var(--chip);color:var(--text-2);white-space:pre-wrap;border-radius:12px;padding:10px 12px;font-size:14px}.item{border:1.5px solid var(--line);background:#fff;border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.item.low{background:var(--hint);border-color:var(--hint-line)}.item.off{opacity:.55}.item-main{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.item-fields{grid-template-columns:1fr 88px;gap:8px;display:grid}.item-fields .select,.item-fields .input{padding:7px 10px}.value-unit{position:relative}.value-unit .input{padding-right:34px}.value-unit span{color:var(--text-3);pointer-events:none;font-size:12px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.item-note{color:var(--text-2);font-size:13px}.flag{color:#b8872a;font-size:12px;font-weight:700}.waiting{flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:40px 0 30px;display:flex}.cat-tail{transform-origin:70px 92px;animation:1.1s ease-in-out infinite alternate tail}.cat-body{animation:1.6s ease-in-out infinite bob}@keyframes tail{0%{transform:rotate(-14deg)}to{transform:rotate(16deg)}}@keyframes bob{50%{transform:translateY(-3px)}}.dots span{animation:1.2s infinite dot;display:inline-block}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}@keyframes dot{50%{opacity:.2}}.flag-wave{transform-origin:0 0;animation:1.8s ease-in-out infinite alternate wave}@keyframes wave{to{transform:skewY(8deg)scaleX(.92)}}.checkin-list.returned{animation:.26s cubic-bezier(.22,1,.36,1) slide-from-left}.checkin-group+.checkin-group{margin-top:16px}.checkin-group-name{font-weight:700}.checkin-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;display:grid}.checkin-tile{border:1.5px solid var(--line);background:#fff;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:62px;padding:10px 6px;font-size:15px;font-weight:700;transition:transform .12s;display:flex}.checkin-tile:active{transform:scale(.95)}.checkin-tile small{color:var(--text-2);font-size:12px;font-weight:600}.checkin-tile.done{border-color:var(--green);background:var(--green-soft)}.checkin-back{color:var(--accent-strong);padding:4px 8px 4px 0;font-size:16px;font-weight:700}.checkin-adjust{flex-direction:column;gap:4px;padding-top:6px;animation:.28s cubic-bezier(.22,1,.36,1) slide-from-right;display:flex}.checkin-dir{color:var(--text-2);font-size:15px;font-weight:700}.checkin-name{font-size:34px;font-weight:800;line-height:1.2}.checkin-card{box-shadow:var(--shadow);background:#fff;border-radius:24px;flex-direction:column;align-items:center;gap:18px;margin-top:18px;padding:24px 16px 20px;display:flex}.checkin-dial{justify-content:space-between;align-items:center;gap:8px;width:100%;display:flex}.checkin-step{background:var(--accent-soft);width:60px;height:60px;color:var(--accent-strong);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:32px;font-weight:700;line-height:1;transition:transform .12s;display:flex}.checkin-step:active:not(:disabled){transform:scale(.92)}.checkin-value{text-align:center;flex:1;min-width:0}.checkin-value b{font-variant-numeric:tabular-nums;letter-spacing:-1px;font-size:64px;font-weight:800;line-height:1;display:block}.checkin-value span{color:var(--text-2);margin-top:6px;font-size:15px;font-weight:600;display:block}.checkin-seg{background:var(--chip);border-radius:19px;padding:3px;display:inline-flex}.checkin-seg button{min-width:72px;height:34px;color:var(--text-2);border-radius:16px;font-size:14px;font-weight:700;transition:background .15s}.checkin-seg button.on{color:var(--text);background:#fff;box-shadow:0 1px 4px #5a4a4624}.checkin-adds{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.checkin-adds button{border:1.5px solid var(--line);min-width:58px;height:40px;color:var(--accent-strong);border-radius:20px;padding:0 12px;font-size:15px;font-weight:700}.checkin-adds button:active{background:var(--accent-soft)}.checkin-hint{text-align:center;margin-top:12px}.checkin-next{flex:1}.checkin-done{flex:1.6}@keyframes slide-from-right{0%{opacity:0;transform:translate(36px)}}@keyframes slide-from-left{0%{opacity:0;transform:translate(-36px)}}.celebrate{--c-peach:#f9c9ad;--c-lilac:#d4c1ec;z-index:30;padding:calc(var(--safe-top) + 24px) 24px calc(var(--safe-bottom) + 24px);background:color-mix(in srgb, var(--sheet) 88%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:opacity .22s;animation:.2s fade-in;display:flex;position:fixed;inset:0}.celebrate.leaving{opacity:0}.celebrate h2{margin-top:14px;font-size:26px;font-weight:800}.celebrate-title{color:var(--text-2);font-size:16px;font-weight:600}.celebrate-check{justify-content:center;align-items:center;width:120px;height:120px;display:flex;position:relative}.celebrate-disc{background:var(--green);border-radius:50%;justify-content:center;align-items:center;width:96px;height:96px;animation:.5s cubic-bezier(.34,1.56,.64,1) both pop;display:flex;box-shadow:0 6px 18px #6cc08b73}.celebrate-disc svg{fill:none;stroke:#fff;stroke-width:5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;width:56px;height:56px;animation:.35s ease-out .2s both draw}.celebrate-halo{position:absolute;inset:0;transform:rotate(-90deg)}.celebrate-halo circle{fill:none;stroke:var(--green);stroke-width:3px;stroke-linecap:round;stroke-dasharray:352;animation:.6s ease-out .15s both draw-halo}.confetti{pointer-events:none;position:absolute;inset:0}.confetti i{background:var(--c);width:8px;height:8px;animation:confetti 1.5s cubic-bezier(.2, .7, .3, 1) var(--d) both;border-radius:50%;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%}.confetti i.star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);border-radius:0;width:13px;height:13px;margin:-6px 0 0 -6px}.celebrate-in{animation:rise-in .4s ease-out var(--delay,0s) both}.celebrate-panel{text-align:left;flex-direction:column;align-items:stretch;gap:12px;width:min(320px,100%);margin-top:16px;display:flex}.celebrate-row{box-shadow:var(--shadow);background:#fff;border-radius:18px;align-items:center;gap:12px;padding:12px 14px;display:flex}.celebrate-full{color:var(--green);font-size:14px;font-weight:700}.celebrate-xp{align-items:center;gap:10px;padding:0 4px;display:flex}.celebrate-xp .xpbar{flex:1;margin-top:0}.celebrate-badge{background:var(--hint);border:1.5px solid var(--hint-line);border-radius:14px;align-items:center;gap:4px;padding:5px 12px;font-size:14px;font-weight:700;display:inline-flex}.celebrate-badge.level{background:var(--accent);border-color:var(--accent);color:#fff;animation:pop .45s cubic-bezier(.34, 1.56, .64, 1) var(--delay,0s) both}.celebrate-offline{margin-top:14px}.celebrate-grown{color:var(--text-2);padding:0 4px;font-size:14px;font-weight:600}@keyframes pop{0%{transform:scale(0)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes draw{0%{stroke-dashoffset:40px}to{stroke-dashoffset:0}}@keyframes draw-halo{0%{stroke-dashoffset:352px;opacity:1}to{stroke-dashoffset:0;opacity:.5}}@keyframes confetti{0%{opacity:0;transform:translate(0)scale(.3)rotate(0)}8%{opacity:1}45%{transform:translate(var(--x), var(--y)) scale(1) rotate(calc(var(--r) * .6));opacity:1}to{transform:translate(calc(var(--x) * 1.15), calc(var(--y) + 130px)) scale(.85) rotate(var(--r));opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){.confetti,.celebrate-halo{display:none}.celebrate-disc,.celebrate-disc svg,.celebrate-badge.level,.celebrate-in{animation:.3s both fade-in}.checkin-adjust,.checkin-list.returned{animation:none}}.xpbar{background:#f3e4e0;border-radius:4px;height:8px;margin-top:6px;overflow:hidden}.xpbar i{background:var(--accent);border-radius:4px;height:100%;transition:width .8s;display:block}.bars{justify-content:space-between;align-items:flex-end;height:72px;margin-top:10px;display:flex;position:relative}.bars i{background:#f6b6a9;border-radius:5px 5px 2px 2px;width:11%;min-height:2px;display:block}.bars i.today{background:var(--accent-strong)}.goal-line{border-top:1.5px dashed #9fcfb0;position:absolute;left:0;right:0}.days{color:var(--text-3);justify-content:space-between;margin-top:3px;font-size:11px;display:flex}.days span{text-align:center;width:11%}.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;display:grid}.stats>div{background:var(--chip);color:var(--text-2);border-radius:12px;padding:8px 10px;font-size:12px}.stats b{color:var(--text);font-size:16px;display:block}.tabs{gap:6px;margin-top:12px;padding-bottom:2px;display:flex;overflow-x:auto}.tab{background:var(--chip);color:var(--text-2);border-radius:14px;flex-shrink:0;padding:5px 12px;font-size:13px;font-weight:600}.tab.on{background:var(--accent);color:#fff}.ms-row{gap:10px;padding:4px 0;font-size:14px;display:flex}.ms-row .faint{flex-shrink:0;width:48px}.list-row{border-bottom:1px solid var(--line);text-align:left;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px 0;display:flex}.list-row:last-child{border-bottom:none}.page-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.back{box-shadow:var(--shadow);background:#ffffffeb;border-radius:14px;padding:5px 12px;font-size:14px;font-weight:600}.trend{align-items:flex-end;gap:6px;height:64px;display:flex}.trend i{background:#f6b6a9;border-radius:4px 4px 2px 2px;flex:1;min-height:2px}.toasts{left:0;right:0;bottom:calc(var(--safe-bottom) + 150px);z-index:40;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed}.toast{pointer-events:auto;color:#fff;background:#463834eb;border-radius:18px;align-items:center;gap:14px;max-width:90%;padding:10px 16px;font-size:14px;animation:.25s slide-up;display:flex}.toast button{color:#ffd1c7;font-weight:700}.center-screen{min-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 38px);flex-direction:column;justify-content:center;gap:18px;display:flex}.hero{text-align:center}.hero svg{width:190px;height:auto}.hero-3d{height:min(56dvh,500px);margin:0 -16px}.unrevealed{visibility:hidden}.reveal{animation:.4s both fade-in}.steps{justify-content:center;gap:6px;display:flex}.steps i{background:#ead9d3;border-radius:3px;width:22px;height:5px}.steps i.on{background:var(--accent)}.goal-editor{grid-template-columns:1fr 90px;gap:8px;margin-top:8px;display:grid}.toggle{background:#e6d6d1;border-radius:15px;flex-shrink:0;width:50px;height:30px;transition:background .2s;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle.on{background:var(--green)}.toggle.on:after{transform:translate(20px)}.install-hint{background:var(--hint);border:1.5px solid var(--hint-line);color:#8a6a24;border-radius:14px;padding:10px 12px;font-size:13px}.ring-pin-btn{padding:5px;display:block;position:relative}.ring-pin-btn .ring{transition:transform .2s,filter .2s;display:flex}.ring-pin-btn .ring-label{transition:background .2s,color .2s}.ring-pin-btn.hot .ring{filter:drop-shadow(0 0 5px #fffffff2)drop-shadow(0 2px 5px #5a4a4638);transform:scale(1.18)}.ring-pin-btn.hot .ring-label{color:var(--text);background:#fff}.greeting{text-align:center;margin-top:2px}.greeting b{font-size:22px;font-weight:800;display:block}.section-row{align-items:baseline}
