:root{--ground: #f4f1fa;--ink: #1c1830;--muted: #5e5873;--muted-2: #3e3852;--glass: rgba(255, 255, 255, .45);--glass-strong: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .75);--glass-hi: rgba(255, 255, 255, .95);--shadow: 0 10px 30px rgba(52, 36, 110, .1);--field: rgba(255, 255, 255, .65);--line: rgba(28, 24, 48, .08);--track: rgba(28, 24, 48, .08);--primary: #1c1830;--primary-hover: #2c2650;--on-primary: #ffffff;--accent: #ff6a3d;--accent-text: #c2410c;--accent-soft: #ffe2d4;--indigo: #4b3fd1;--indigo-soft: #e3dfff;--teal: #0f766e;--teal-bar: #0f9f8f;--teal-soft: #d3f5ea;--blue: #1d5fbf;--blue-soft: #dcebff;--gold: #a16207;--gold-soft: #fff1c7;--ok: #15803d;--ok-fill: #16a34a;--bad: #b42318;--blob-1: #ffc7a8;--blob-2: #c9c2ff;--blob-3: #b8f0e0;--blob-opacity: .85;--radius: 26px;--font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Fredoka", var(--font);color-scheme:light}:root[data-theme=dark]{--ground: #120f1f;--ink: #f3f0ff;--muted: #b4adcb;--muted-2: #d6d1e8;--glass: rgba(46, 38, 78, .42);--glass-strong: rgba(46, 38, 78, .8);--glass-border: rgba(255, 255, 255, .12);--glass-hi: rgba(255, 255, 255, .14);--shadow: 0 10px 30px rgba(0, 0, 0, .35);--field: rgba(255, 255, 255, .08);--line: rgba(255, 255, 255, .08);--track: rgba(255, 255, 255, .1);--primary: #f3f0ff;--primary-hover: #ffffff;--on-primary: #1c1830;--accent-text: #ff9b73;--accent-soft: rgba(255, 106, 61, .2);--indigo: #aea3ff;--indigo-soft: rgba(124, 108, 255, .22);--teal: #5eead4;--teal-soft: rgba(45, 212, 191, .18);--blue: #93c5fd;--blue-soft: rgba(96, 165, 250, .2);--gold: #fcd34d;--gold-soft: rgba(252, 211, 77, .18);--ok: #4ade80;--bad: #fca5a5;--blob-1: #8a3d22;--blob-2: #3f2f8f;--blob-3: #155e55;--blob-opacity: .55;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}body{background:var(--ground);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--indigo)}h1,h2,h3,p{margin:0}:focus-visible{outline:3px solid var(--indigo);outline-offset:2px;border-radius:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.backdrop{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:var(--blob-opacity);animation:drift 22s ease-in-out infinite alternate}.blob.b1{width:360px;height:360px;background:var(--blob-1);top:-110px;left:-120px}.blob.b2{width:320px;height:320px;background:var(--blob-2);top:32%;right:-150px;animation-delay:-6s}.blob.b3{width:300px;height:300px;background:var(--blob-3);bottom:-100px;left:-60px;animation-delay:-12s}@keyframes drift{0%{transform:translate(0) scale(1)}to{transform:translate(40px,30px) scale(1.12)}}.app{position:relative;z-index:1;max-width:480px;margin:0 auto;min-height:100dvh}.screen{padding:calc(env(safe-area-inset-top) + 24px) 20px 120px;display:flex;flex-direction:column;gap:14px}.screen.no-tabs{padding-bottom:32px;min-height:100dvh}.screen-head{display:flex;align-items:center;gap:12px}.screen-head h1{font-size:28px;font-weight:800;letter-spacing:-.02em;flex:1}.title-xl{font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1.15}.lead{font-size:15px;color:var(--muted)}.spacer{flex:1}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:10px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.muted{color:var(--muted)}.small{font-size:13px}.xs{font-size:12px}.bold{font-weight:700}.label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.03em;text-transform:uppercase}.section-title{font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin-top:6px}.big-number{font-size:40px;font-weight:800;letter-spacing:-.03em;line-height:1}.unit{font-size:16px;font-weight:700;color:var(--muted);margin-left:4px}.ok-text{color:var(--ok);font-weight:700}.bad-text{color:var(--bad);font-weight:700}.accent-text{color:var(--accent-text)}.glass{background:var(--glass);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-hi),var(--shadow)}.card{border-radius:var(--radius);padding:16px}.card.tight{padding:6px 14px}.card.pad-lg{padding:20px}.list-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);min-height:56px}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.list-row .t{font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .s{font-size:13px;font-weight:600;color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:56px;padding:0 24px;border-radius:28px;border:0;background:var(--primary);color:var(--on-primary);font-weight:700;font-size:16px;text-decoration:none;box-shadow:0 10px 24px #1c183038;transition:transform .15s ease,background .15s ease}.btn:hover{background:var(--primary-hover)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{width:100%}.btn.sm{height:44px;padding:0 18px;font-size:14px;border-radius:22px;box-shadow:none}.btn.ghost{background:var(--field);color:var(--ink);box-shadow:none;border:1px solid var(--glass-border)}.btn.accent{background:var(--accent);color:#fff}.btn.danger{background:transparent;color:var(--bad);box-shadow:none;border:1.5px solid currentColor}.btn-link{background:none;border:0;color:var(--indigo);font-weight:700;padding:10px;font-size:14px}.icon-btn{width:44px;height:44px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;border:0;color:var(--ink);flex:none;text-decoration:none}.round-add{width:36px;height:36px;border-radius:18px;border:0;background:var(--primary);color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;flex:none}.round-add.accent{background:var(--accent);color:#fff}.dashed{min-height:52px;border-radius:22px;border:1.5px dashed color-mix(in srgb,var(--indigo) 50%,transparent);font-size:15px;font-weight:700;color:var(--indigo);display:flex;align-items:center;justify-content:center;gap:8px;width:100%}.field{display:flex;flex-direction:column;gap:6px}.field>label,.field>.label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.02em}.input{height:52px;border-radius:16px;border:1px solid var(--glass-border);background:var(--field);padding:0 16px;font-size:16px;font-weight:600;outline:none;width:100%}.input:focus{border-color:var(--indigo)}textarea.input{height:auto;min-height:90px;padding:12px 16px}select.input{appearance:none;background-image:none}.input-unit{display:flex;align-items:center;gap:4px;background:var(--field);border-radius:14px;padding:8px 12px;border:1px solid var(--glass-border)}.input-unit input{width:56px;border:0;background:transparent;font-size:18px;font-weight:800;text-align:right;outline:none;padding:0}.input-unit span{font-size:13px;font-weight:600;color:var(--muted)}.error-msg{color:var(--bad);font-size:14px;font-weight:600}.big-input{border:0;background:transparent;font-size:34px;font-weight:800;outline:none;padding:0;width:100%;letter-spacing:-.02em}.segmented{border-radius:30px;padding:5px;display:flex;gap:4px}.segmented button{flex:1;min-height:42px;border-radius:22px;border:0;background:transparent;font-size:14px;font-weight:700;color:var(--muted)}.segmented button[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px;margin:0 -20px;padding-inline:20px}.chips::-webkit-scrollbar{display:none}.chip{height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--glass-border);background:var(--field);font-size:13px;font-weight:700;color:var(--muted-2);white-space:nowrap;flex:none}.chip[aria-pressed=true]{background:var(--primary);color:var(--on-primary);border-color:transparent}.bar{height:8px;border-radius:4px;background:var(--track);overflow:hidden}.bar>i{display:block;height:100%;border-radius:4px;transition:width .6s cubic-bezier(.2,.8,.2,1)}.switch{width:52px;height:32px;border-radius:16px;border:0;padding:3px;display:flex;flex:none;background:var(--track);transition:background .2s}.switch i{width:26px;height:26px;border-radius:13px;background:#fff;box-shadow:0 2px 6px #0000002e;transition:transform .2s cubic-bezier(.3,1.4,.6,1)}.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true] i{transform:translate(20px)}.ic{width:40px;height:40px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:none}.tone-orange{background:var(--accent-soft);color:var(--accent-text)}.tone-indigo{background:var(--indigo-soft);color:var(--indigo)}.tone-teal{background:var(--teal-soft);color:var(--teal)}.tone-blue{background:var(--blue-soft);color:var(--blue)}.tone-gold{background:var(--gold-soft);color:var(--gold)}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom));width:min(448px,calc(100% - 32px));height:68px;border-radius:34px;z-index:20;display:flex;align-items:center;justify-content:space-around;padding:0 8px}.tab{display:flex;align-items:center;gap:6px;height:48px;padding:0 13px;border-radius:24px;color:var(--muted);text-decoration:none;font-size:13px;font-weight:700;transition:all .25s ease}.tab:hover{color:var(--ink)}.tab[aria-current=page]{background:var(--primary);color:var(--on-primary);padding:0 16px}.tab .tab-label{display:none}.tab[aria-current=page] .tab-label{display:inline}.sheet-overlay{position:fixed;inset:0;z-index:50;background:#120e2259;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s ease}.sheet{width:min(480px,100%);max-height:92dvh;overflow-y:auto;border-radius:32px 32px 0 0;padding:10px 20px calc(24px + env(safe-area-inset-bottom));background:var(--glass-strong);animation:up .28s cubic-bezier(.2,.9,.3,1);display:flex;flex-direction:column;gap:14px}.sheet-grip{width:44px;height:5px;border-radius:3px;background:var(--track);margin:4px auto 2px}.sheet h2{font-size:20px;font-weight:800}@keyframes up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}}.toast-wrap{position:fixed;top:calc(14px + env(safe-area-inset-top));left:0;right:0;display:flex;justify-content:center;z-index:80;pointer-events:none}.toast{pointer-events:auto;border-radius:20px;padding:12px 18px;font-weight:700;font-size:14px;max-width:90%;animation:up .25s ease;display:flex;gap:10px;align-items:center}.home-stage{position:relative;height:420px}.bubble{position:absolute;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8px 10px;animation:bob 6s ease-in-out infinite;color:var(--ink);background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);box-shadow:inset 0 1px 0 var(--glass-hi),0 8px 24px #34246e24}.bubble-ring{position:absolute;inset:-1px;pointer-events:none}.bubble-ic{width:24px;height:24px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:2px}.bubble strong{font-size:22px;font-weight:800;letter-spacing:-.03em;line-height:1.05;white-space:nowrap}.bubble strong small{font-size:12px;font-weight:700;margin-left:2px;letter-spacing:0;color:var(--muted-2)}.bubble-l{font-size:11.5px;font-weight:700;color:var(--muted-2);line-height:1.2;margin-top:2px;max-width:84px}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.mood-chip{position:absolute;left:50%;transform:translate(-50%);height:36px;padding:0 14px;border-radius:18px;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:800;white-space:nowrap}.dot{width:8px;height:8px;border-radius:4px;display:inline-block}.speech{position:absolute;padding:8px 14px;border-radius:18px 18px 18px 4px;font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--muted-2);white-space:nowrap;animation:pop .35s cubic-bezier(.3,1.6,.5,1);z-index:3}@keyframes pop{0%{transform:scale(.6);opacity:0}}.flame-btn{background:none;border:0;padding:0;display:block;position:relative}.flame-svg{overflow:visible;display:block}.flame-float{animation:float 3.4s ease-in-out infinite;transform-origin:50% 100%;transform-box:fill-box}.flame-body{animation:sway 2.6s ease-in-out infinite;transform-origin:50% 100%;transform-box:fill-box}.flame-core{animation:flicker 1.3s ease-in-out infinite;transform-origin:50% 100%;transform-box:fill-box}.flame-eyes{animation:blink 5.2s infinite;transform-origin:50% 50%;transform-box:fill-box}.flame-shadow{animation:shadow 3.4s ease-in-out infinite;transform-origin:50% 50%;transform-box:fill-box}.flame-spark{animation:twinkle 2.2s ease-in-out infinite;transform-origin:50% 50%;transform-box:fill-box}.flame-ember{animation:rise 2.8s ease-in infinite}.mood-happy .flame-float{animation:hop 1.8s cubic-bezier(.4,0,.4,1) infinite}.mood-happy .flame-body{animation-duration:1.6s}.mood-sulky .flame-float{animation:droop 4.6s ease-in-out infinite}.mood-sulky .flame-body{animation:sulk 5s ease-in-out infinite}.mood-sulky .flame-core{animation-duration:2.6s;opacity:.7}.flame-btn.jump .flame-float{animation:jump .7s cubic-bezier(.3,1.5,.5,1)}.flame-btn.jump.mood-sulky .flame-float{animation:shake .6s ease}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes hop{0%,to{transform:translateY(0) scale(1)}15%{transform:translateY(0) scale(1.06,.94)}45%{transform:translateY(-16px) scale(.97,1.04)}75%{transform:translateY(0) scale(1.04,.96)}}@keyframes droop{0%,to{transform:translateY(2px) scale(1.02,.98)}50%{transform:translateY(6px) scale(1.04,.96)}}@keyframes sway{0%,to{transform:skew(-2.5deg) scaleY(1)}50%{transform:skew(2.5deg) scaleY(1.035)}}@keyframes sulk{0%,to{transform:rotate(-1deg)}45%{transform:rotate(-4deg)}55%{transform:rotate(-4deg)}}@keyframes flicker{0%,to{transform:scale(1);opacity:.55}30%{transform:scale(.94,1.06);opacity:.7}60%{transform:scale(1.04,.95);opacity:.5}}@keyframes blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes shadow{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(.85);opacity:.6}}@keyframes twinkle{0%,to{transform:scale(.6) rotate(0);opacity:.4}50%{transform:scale(1.1) rotate(25deg);opacity:1}}@keyframes rise{0%{transform:translateY(0) scale(1);opacity:0}15%{opacity:1}to{transform:translateY(-70px) scale(.3);opacity:0}}@keyframes jump{0%{transform:translateY(0) scale(1)}25%{transform:translateY(4px) scale(1.12,.88)}55%{transform:translateY(-34px) scale(.92,1.1)}to{transform:translateY(0) scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px) rotate(-3deg)}40%{transform:translate(6px) rotate(3deg)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.week{display:flex;justify-content:space-between}.week .d{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--muted)}.week .d i{width:32px;height:32px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:var(--track)}.week .d.done i{background:var(--accent);color:#fff}.week .d.part i{background:var(--accent-soft);color:var(--accent-text)}.week .d.today{color:var(--ink)}.week .d.today i{box-shadow:0 0 0 2px var(--accent)}.steps{flex:1;display:flex;gap:6px}.steps i{flex:1;height:6px;border-radius:3px;background:var(--track)}.steps i.on{background:var(--primary)}.opt{position:relative;border-radius:22px;padding:14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;text-align:left;min-height:100px;color:var(--ink)}.opt b{font-size:15px;font-weight:700;line-height:1.25}.opt[aria-pressed=true]{background:var(--primary);color:var(--on-primary);border-color:transparent}.opt .check{position:absolute;top:12px;right:12px;width:22px;height:22px;border-radius:11px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center}.stepper{width:44px;height:44px;border-radius:22px;border:0;background:var(--field);font-size:22px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}.ruler{display:flex;align-items:flex-end;justify-content:space-between;height:40px;padding:0 4px}.ruler span{width:2px;background:var(--track);border-radius:1px}.empty{text-align:center;padding:18px 8px;color:var(--muted);font-size:14px}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--track);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.badge-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.badge{border-radius:20px;padding:12px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.badge b{font-size:12px;font-weight:800;line-height:1.2}.badge span{font-size:11px;color:var(--muted);font-weight:600;line-height:1.2}.badge.locked{opacity:.45;filter:grayscale(1)}.pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:14px;font-size:12px;font-weight:800}.kv{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:15px}.kv:last-child{border-bottom:0}.kv span:first-child{color:var(--muted);font-weight:600}.kv span:last-child{font-weight:800}.chart-tip{font-size:11px;font-weight:700}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.goals-card{border-radius:28px;display:flex;flex-direction:column;gap:10px}.goals-count{font-size:15px;font-weight:700;color:var(--muted);background:var(--field);border-radius:16px;padding:6px 12px;white-space:nowrap}.goals-count b{font-size:22px;font-weight:800;color:var(--ink)}.goals-dots{display:flex;gap:5px}.goals-dots i{flex:1;height:8px;border-radius:4px;background:var(--track);transition:background .3s}.goals-dots i.on{background:var(--ok-fill)}.goal-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.goal-row:last-child{border-bottom:0}.goal-ic{position:relative;flex:none}.goal-ok{position:absolute;right:-4px;bottom:-4px;width:18px;height:18px;border-radius:9px;background:var(--ok-fill);color:#fff;display:flex;align-items:center;justify-content:center;border:2px solid var(--ground)}.goal-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.goal-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.goal-title{font-size:15px;font-weight:700;line-height:1.25}.goal-meta{display:flex;flex-direction:column;align-items:flex-start;gap:1px}.goal-val{background:none;border:0;padding:0;font-size:15px;font-weight:800;color:var(--ink);text-decoration:underline dotted color-mix(in srgb,var(--muted) 60%,transparent);text-underline-offset:3px;white-space:nowrap;flex:none}.goal-val small,.goal-hint{font-size:12px;font-weight:700;color:var(--muted)}.goal-row[data-met=true] .goal-title{color:var(--ok)}.goal-plus{flex:none;min-width:64px;height:40px;padding:0 12px;border-radius:20px;border:0;background:var(--primary);color:var(--on-primary);font-size:13px;font-weight:800;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;transition:transform .12s}.goal-plus:active{transform:scale(.94)}.goal-plus.ghost{background:var(--field);color:var(--ink);border:1px solid var(--glass-border)}.goal-check{flex:none;width:44px;height:44px;border-radius:22px;border:2px dashed color-mix(in srgb,var(--muted) 55%,transparent);background:transparent;color:transparent;display:inline-flex;align-items:center;justify-content:center;transition:all .2s}.goal-check:hover{color:var(--muted)}.goal-check.on{background:var(--ok-fill);border:2px solid var(--ok-fill);color:#fff;animation:pop .35s cubic-bezier(.3,1.6,.5,1)}.how{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--muted-2);line-height:1.45}.how b{color:var(--ink)}@media(max-width:600px){input,select,textarea{font-size:max(16px,1em)}.chip[type=date],input.chip{font-size:16px}}
