:root{--bg:#f6f4fd;--card:#fff;--line:#ebe7f7;--soft:#f3f0fb;--text:#1f1a3d;--dim:#716b93;--mint:#1ed6ab;--mint-d:#0ea885;--mint-l:#e3fbf4;--pink:#ff4fc3;--pink-d:#d22d9b;--pink-l:#ffe8f7;--gold:#ffb627;--gold-d:#d48a00;--gold-l:#fff4d9;--blue:#3d9bff;--blue-d:#1f6fd1;--purple:#8b6cff;--purple-d:#6447e0;--red:#ff5a77;--shadow:0 1px 0 #e6e1f5, 0 8px 24px #46329612;color:var(--text);-webkit-tap-highlight-color:transparent;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:radial-gradient(90% 40% at 0% 0%, #ffe9f8 0%, transparent 60%), radial-gradient(90% 40% at 100% 0%, #e2f8ff 0%, transparent 60%), var(--bg);overscroll-behavior:none;-webkit-user-select:none;user-select:none;background-attachment:fixed}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{opacity:.55;cursor:default}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:800}h1{font-size:30px}h2{font-size:22px}h3{font-size:17px}.app{max-width:480px;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(env(safe-area-inset-bottom) + 24px);flex-direction:column;gap:14px;margin:0 auto;display:flex;position:relative}.app.has-chatbar{padding-bottom:calc(env(safe-area-inset-bottom) + 96px)}.btn{--c:var(--mint);--d:var(--mint-d);color:#fff;background:var(--c);box-shadow:0 5px 0 var(--d);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:12px 18px;font-size:16px;font-weight:800;transition:transform 80ms,box-shadow 80ms;display:inline-flex}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--d);transform:translateY(4px)}.btn small{opacity:.85;font-size:12px;font-weight:700}.btn.pink{--c:var(--pink);--d:var(--pink-d)}.btn.blue{--c:var(--blue);--d:var(--blue-d)}.btn.purple{--c:var(--purple);--d:var(--purple-d)}.btn.ghost{--c:#fff;--d:#ddd7ef;color:var(--text);border:2px solid #ddd7ef}.btn.big{padding:15px 22px;font-size:17px}.btn.wide{width:100%}.link{color:var(--dim);text-underline-offset:3px;font-size:14px;font-weight:700;text-decoration:underline}.link.danger{color:var(--red);align-self:center}.topbar{align-items:center;gap:12px;display:flex}.level{flex:1;align-items:center;gap:10px;display:flex}.badge,.big-badge{color:#6b4300;background:linear-gradient(160deg, #ffe08a, var(--gold));width:42px;height:42px;box-shadow:0 4px 0 var(--gold-d);border-radius:14px;place-items:center;font-size:19px;font-weight:900;display:grid;transform:rotate(-6deg)}.xpbar{background:#ece8f8;border-radius:11px;flex:1;height:22px;position:relative;overflow:hidden;box-shadow:inset 0 2px 3px #3c288c14}.xpbar .fill{background:linear-gradient(90deg, var(--gold), #ffd86b);border-radius:11px;height:100%;transition:width .8s cubic-bezier(.2,.9,.3,1.2)}.xpbar span{color:#5e4a00;place-items:center;font-size:12px;font-weight:800;display:grid;position:absolute;inset:0}.today{justify-content:space-between;align-items:baseline;padding:4px 2px 0;display:flex}.tag{color:var(--mint-d);background:var(--mint-l);white-space:nowrap;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:800}.tag.all{color:#8a5a00;background:var(--gold-l)}.habit{background:var(--card);box-shadow:var(--shadow);border:2px solid #0000;border-radius:24px;align-items:stretch;gap:10px;padding:14px 14px 14px 16px;transition:border-color .3s,background .3s;display:flex;position:relative}.habit.is-done{background:linear-gradient(135deg, #fff 40%, var(--mint-l))}.habit.highlight{border-color:var(--pink);animation:.6s ease-in-out 3 nudge}@keyframes nudge{50%{transform:scale(1.02)}}.habit-body{text-align:left;flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.habit-top{align-items:center;gap:10px;display:flex}.emoji-bubble{background:var(--soft);border-radius:14px;flex:none;place-items:center;width:44px;height:44px;font-size:24px;display:grid}.habit-name{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.habit-name h3{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chain{background:var(--soft);color:var(--dim);filter:grayscale();border-radius:999px;padding:3px 8px;font-size:13px;font-weight:900}.chain.hot{filter:none;color:#c2410c;background:#ffedd5}.plan{color:var(--dim);margin:0;font-size:14px;line-height:1.35}.plan b{color:var(--text)}.mini-week{gap:5px;display:flex}.mini{color:#b2acd0;background:var(--soft);border-radius:7px;place-items:center;width:22px;height:22px;font-size:10px;font-weight:900;display:grid}.mini.done,.mini.repaired{background:var(--mint);color:#fff}.mini.reserve{background:var(--blue);color:#fff}.mini.repair{background:var(--purple);color:#fff}.mini.missed{color:var(--red);background:#ffe4e9}.mini.unlogged{color:var(--blue);background:#e3f0ff}.mini.tonight{box-shadow:inset 0 0 0 2px var(--pink);color:var(--pink);background:#fff}.mini.before,.mini.future{opacity:.55}.done-wrap{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:6px;display:flex;position:relative}.done-wrap>small{color:var(--pink-d);font-size:12px;font-weight:800}.habit.is-done .done-wrap>small{color:var(--mint-d)}.done-btn{color:#fff;background:radial-gradient(circle at 35% 30%, #ff8ad9, var(--pink) 55%, #e0349f);width:70px;height:70px;box-shadow:0 6px 0 var(--pink-d), 0 10px 18px #ff4fc34d;border-radius:50%;font-size:34px;font-weight:900;transition:transform .1s,box-shadow .1s;animation:2.6s ease-in-out infinite breathe}.done-btn:active:not(:disabled){box-shadow:0 1px 0 var(--pink-d);transform:translateY(5px)scale(.97)}.done-btn.on{background:radial-gradient(circle at 35% 30%, #6ff0cf, var(--mint) 55%, #13b58f);box-shadow:0 4px 0 var(--mint-d), 0 0 22px #1ed6ab73;animation:none}@keyframes breathe{50%{transform:scale(1.05)}}.float{z-index:5;white-space:nowrap;color:var(--gold);text-shadow:0 2px 0 var(--gold-d);pointer-events:none;flex-direction:column;align-items:flex-end;font-size:26px;font-weight:900;animation:1.6s ease-out forwards rise;display:flex;position:absolute;top:-26px;right:-4px}.float small{color:var(--pink-d);text-shadow:none;font-size:13px}@keyframes rise{0%{opacity:0;transform:translateY(20px)scale(.6)}20%{opacity:1;transform:translateY(0)scale(1.15)}to{opacity:0;transform:translateY(-70px)scale(1)}}.pill{border-radius:999px;padding:3px 9px;font-size:12px;font-weight:900}.pill.gold{background:var(--gold-l);color:#9a6400}.card{background:var(--card);box-shadow:var(--shadow);border-radius:24px;flex-direction:column;gap:12px;padding:16px;display:flex}.card.flat{box-shadow:none;border:2px solid var(--line)}.card p{color:var(--dim);margin:0;font-size:14px;line-height:1.45}.card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.sub{font-size:13px!important}.row{gap:10px;display:flex}.row>.btn{flex:1}.col{flex-direction:column;gap:12px;display:flex}.hint{font-size:13px!important}.hint b{color:#b07300}.card.ask{background:linear-gradient(135deg,#fff,#eaf4ff)}.card.miss{background:linear-gradient(135deg,#fff,#f1edff)}.card.checkin-card{background:linear-gradient(135deg, #fff, var(--pink-l))}.card.remind{background:linear-gradient(135deg, #fff, var(--mint-l))}.card.welcome{text-align:center;background:linear-gradient(160deg, #fff, var(--mint-l));align-items:center;padding:26px 18px}.card.welcome .chips{justify-content:center}.week{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day{flex-direction:column;align-items:center;gap:6px;display:flex}.dot{background:var(--soft);width:36px;height:36px;color:var(--dim);border-radius:50%;place-items:center;font-size:15px;font-weight:900;display:grid}.dl{color:var(--dim);font-size:11px;font-weight:800}.day.done .dot,.day.repaired .dot{background:var(--mint);color:#fff;box-shadow:0 3px 0 var(--mint-d)}.day.reserve .dot{background:var(--blue);box-shadow:0 3px 0 var(--blue-d);font-size:14px}.day.repair .dot{background:var(--purple);box-shadow:0 3px 0 var(--purple-d);font-size:14px}.day.missed .dot{color:var(--red);background:#ffe4e9}.day.unlogged .dot{color:var(--blue);background:#e3f0ff}.day.tonight .dot{box-shadow:inset 0 0 0 2.5px var(--pink);color:var(--pink);background:#fff}.day.tonight .dl{color:var(--pink)}.day.before .dot,.day.future .dot{opacity:.5}.segments{gap:5px;display:flex}.segments span{background:var(--soft);color:#7a4f00;border-radius:6px;flex:1;place-items:center;height:16px;font-size:10px;display:grid}.segments span.on{background:linear-gradient(180deg, #ffd86b, var(--gold));box-shadow:0 2px 0 var(--gold-d)}.bar{background:var(--soft);border-radius:8px;height:16px;overflow:hidden}.bar div{background:linear-gradient(90deg, var(--gold), #ffd86b);border-radius:8px;height:100%}.stages{justify-content:space-between;display:flex;position:relative}.stages:before{content:"";background:var(--line);border-radius:2px;height:3px;position:absolute;top:24px;left:10%;right:10%}.stage{flex-direction:column;align-items:center;gap:4px;width:25%;display:flex;position:relative}.stage span{border:2px solid var(--line);filter:grayscale();opacity:.45;background:#fff;border-radius:16px;place-items:center;width:50px;height:50px;font-size:24px;display:grid}.stage small{color:var(--dim);font-size:11px;font-weight:800}.stage.past span{filter:none;opacity:.8}.stage.now span{filter:none;opacity:1;border-color:var(--mint);box-shadow:0 0 0 4px var(--mint-l);transform:scale(1.1)}.stage.now small{color:var(--mint-d)}.stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat{background:var(--soft);border-radius:16px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;display:flex}.stat b{font-size:20px;font-weight:900}.stat small{color:var(--dim);font-size:11px;font-weight:700}.reminders{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.reminders li{align-items:center;gap:12px;display:flex}.reminders li div{flex-direction:column;gap:1px;display:flex}.reminders b{font-size:15px}.reminders small{color:var(--dim);font-size:12px;font-weight:700}.tick{background:#fff;border:2.5px solid #d2cbe9;border-radius:9px;flex:none;width:28px;height:28px}.tick:active{background:var(--mint);border-color:var(--mint)}.foot{color:var(--dim);text-align:center;justify-content:center;gap:8px;margin:4px 0 0;font-size:13px;display:flex}.chatbar{left:50%;bottom:calc(env(safe-area-inset-bottom) + 14px);z-index:10;background:#fff;border:2px solid #efe9fb;border-radius:999px;align-items:center;gap:8px;width:calc(100% - 28px);max-width:452px;padding:7px 7px 7px 14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 2px #e3ddf5,0 10px 30px #46329629}.chatbar.inline{width:100%;box-shadow:none;margin-top:4px;position:static;transform:none}.chatbar .spark{font-size:18px}.chatbar input{min-width:0;font:inherit;color:var(--text);-webkit-user-select:text;user-select:text;background:0 0;border:0;outline:none;flex:1;padding:8px 0;font-size:16px;font-weight:700}.chatbar input::placeholder{color:#a7a1c4}.send{background:var(--pink);color:#fff;width:40px;height:40px;box-shadow:0 3px 0 var(--pink-d);border-radius:50%;flex:none;font-size:20px;font-weight:900}.send:disabled{opacity:1;background:#e5e0f4;box-shadow:0 3px #d3cce9}.sheet.chat{height:82vh}.chat-head{justify-content:space-between;align-items:center;display:flex}.x{background:var(--soft);width:34px;height:34px;color:var(--dim);border-radius:50%;font-size:15px;font-weight:900}.lines{flex-direction:column;flex:1;gap:8px;padding:4px 0;display:flex;overflow-y:auto}.bubble{white-space:pre-wrap;-webkit-user-select:text;user-select:text;border-radius:20px;max-width:85%;padding:10px 14px;font-size:15px;line-height:1.4}.bubble.user{background:var(--pink);color:#fff;border-bottom-right-radius:6px;align-self:flex-end}.bubble.assistant{background:var(--soft);border-bottom-left-radius:6px;align-self:flex-start}.typing{gap:5px;padding:14px 16px;display:flex}.typing i{background:#b5aed4;border-radius:50%;width:8px;height:8px;animation:1.2s infinite blink}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}@keyframes blink{50%{opacity:.25;transform:translateY(-3px)}}.hello{flex-direction:column;gap:14px;display:flex}.hello p{color:var(--dim);margin:0;font-size:15px;line-height:1.45}.sheet-back{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#281e5a47;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:480px;max-height:92vh;padding:20px 18px calc(env(safe-area-inset-bottom) + 20px);background:#fff;border-radius:28px 28px 0 0;flex-direction:column;gap:14px;animation:.28s cubic-bezier(.2,.9,.3,1.1) up;display:flex;overflow-y:auto;box-shadow:0 -10px 40px #281e5a26}.sheet.small{padding-bottom:calc(env(safe-area-inset-bottom) + 28px)}.modal{text-align:center;background:#fff;border-radius:28px;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:360px;margin:auto 20px;padding:26px 20px;animation:.4s cubic-bezier(.2,.9,.3,1.4) pop;display:flex;box-shadow:0 20px 60px #281e5a40}.sheet-back:has(.modal){align-items:center}.why{color:var(--dim);margin:0;font-size:15px;line-height:1.45}.why b{color:var(--text)}.chest{font-size:96px;line-height:1.1;animation:.9s ease-in-out infinite wiggle}.chest.open{animation:.4s cubic-bezier(.2,.9,.3,1.6) pop}.big-icon{font-size:64px;line-height:1.1;animation:.5s cubic-bezier(.2,.9,.3,1.6) pop}.big-badge{border-radius:32px;width:110px;height:110px;font-size:52px;animation:.7s cubic-bezier(.2,.9,.3,1.3) spin-in}.level-up h2{color:var(--gold-d);font-size:30px}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(100%)}}@keyframes pop{0%{opacity:0;transform:scale(.5)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)scale(1.05)}75%{transform:rotate(8deg)scale(1.05)}}@keyframes spin-in{0%{transform:rotate(-200deg)scale(.2)}to{transform:rotate(-6deg)scale(1)}}.how{color:var(--dim);flex-direction:column;gap:10px;margin:0;padding-left:18px;font-size:14px;line-height:1.45;display:flex}.how b{color:var(--text)}.scale{flex-direction:column;gap:8px;display:flex}.scale label{font-size:14px;font-weight:700}.scale-row{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.scale-row.emoji{grid-template-columns:repeat(5,1fr)}.scale-row button{background:var(--soft);border-radius:12px;height:40px;font-size:16px;font-weight:800}.scale-row button.on{background:var(--mint);color:#fff;box-shadow:0 3px 0 var(--mint-d)}.scale-row.emoji button{font-size:22px}.scale-row.emoji button.on{background:var(--gold-l);box-shadow:inset 0 0 0 2px var(--gold)}.toast{left:50%;bottom:calc(env(safe-area-inset-bottom) + 84px);z-index:30;background:var(--text);color:#fff;text-align:center;border-radius:16px;width:calc(100% - 32px);max-width:440px;padding:14px 16px;font-size:14px;font-weight:700;animation:.25s up;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #281e5a4d}.setup{flex-direction:column;gap:16px;min-height:calc(100vh - 60px);padding-top:12px;display:flex}.dots{gap:6px;display:flex}.dots span{background:#e6e1f5;border-radius:3px;flex:1;height:6px;transition:background .3s}.dots span.on{background:var(--mint)}.step-body{flex-direction:column;gap:12px;display:flex}.field{border:2px solid var(--line);width:100%;color:var(--text);font:inherit;-webkit-user-select:text;user-select:text;background:#fff;border-radius:16px;outline:none;padding:15px 16px;font-size:17px;font-weight:700}.field:focus{border-color:var(--mint)}.field.time{text-align:center;font-size:32px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:2px solid var(--line);box-shadow:0 2px 0 var(--line);background:#fff;border-radius:999px;padding:10px 14px;font-size:15px;font-weight:700}.chip.on{background:var(--mint-l);border-color:var(--mint);color:var(--mint-d)}.choice{flex-direction:column;gap:12px;display:flex}.plan-preview{background:var(--pink-l);color:var(--dim);border:1.5px dashed #ff9ad9;border-radius:18px;padding:14px 16px;font-size:15px;line-height:1.45}.plan-preview span{letter-spacing:.08em;text-transform:uppercase;color:var(--pink-d);margin-bottom:4px;font-size:11px;font-weight:900;display:block}.plan-preview b{color:var(--text)}.setup-nav{justify-content:space-between;gap:12px;margin-top:auto;padding-bottom:12px;display:flex}.setup-nav .btn:last-child{flex:1}.splash{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;padding:24px;display:flex}.splash form{flex-direction:column;gap:12px;width:100%;max-width:320px;display:flex}.logo{border-radius:24px;width:96px;height:96px;box-shadow:0 10px 30px #46329640}.spinner{border:4px solid var(--line);border-top-color:var(--mint);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{color:var(--red);margin:0;font-size:14px;font-weight:700}.confetti{pointer-events:none;z-index:50;position:fixed;inset:0;overflow:hidden}.confetti i{border-radius:2px;width:9px;height:13px;animation:1.2s cubic-bezier(.1,.7,.3,1) forwards burst;position:absolute}@keyframes burst{0%{opacity:1;transform:translate(-50%,-50%)scale(.4)}70%{opacity:1}to{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy) + 120px)) rotate(var(--r));opacity:0}}@media (prefers-reduced-motion:reduce){.done-btn,.chest,.habit.highlight{animation:none}}
