:root{color-scheme:light;--color-eager-green: #58cc02;--color-storybook-green: #d7ffb8;--color-spark-blue: #1cb0f6;--color-fresh-leaf: #a5ed6e;--color-night-ink: #000437;--color-paper-white: #ffffff;--color-charcoal: #4b4b4b;--color-pencil-gray: #777777;--color-faded-gray: #afafaf;--bg-canvas: var(--color-paper-white);--ink: var(--color-charcoal);--muted: var(--color-pencil-gray);--accent: var(--color-eager-green);--accent-2: var(--color-spark-blue);--surface: var(--color-paper-white);--surface-tint: var(--color-storybook-green);--line: var(--color-faded-gray);--ok: var(--color-eager-green);--err: #ff4b4b;--radius: 12px;--border-width: 2px;--shadow: none;--font-display: "Nunito", "Nunito Black", system-ui, sans-serif;--font-body: "Nunito Sans", "Nunito", system-ui, sans-serif;--text-caption: 13px;--text-nav: 15px;--text-body: 17px;--text-subheading: 19px;--text-heading-sm: 32px;--text-heading: 48px;--text-display: 64px;--font-weight-medium: 500;--font-weight-bold: 700;--font-weight-black: 900;--spacing-unit: 4px;--spacing-8: 8px;--spacing-12: 12px;--spacing-16: 16px;--spacing-24: 24px;--spacing-32: 32px;--element-gap: 12px;--section-gap: 24px;--spacing-10: 10px;--spacing-20: 20px;--spacing-45: 45px;--safe-top: calc( max( env(safe-area-inset-top, 0px), var(--tg-safe-area-inset-top, 0px) ) + var(--tg-content-safe-area-inset-top, 0px) );--safe-bottom: calc( max( env(safe-area-inset-bottom, 0px), var(--tg-safe-area-inset-bottom, 0px) ) + var(--tg-content-safe-area-inset-bottom, 0px) );--safe-left: calc( max( env(safe-area-inset-left, 0px), var(--tg-safe-area-inset-left, 0px) ) + var(--tg-content-safe-area-inset-left, 0px) );--safe-right: calc( max( env(safe-area-inset-right, 0px), var(--tg-safe-area-inset-right, 0px) ) + var(--tg-content-safe-area-inset-right, 0px) );--app-height: var(--tg-viewport-stable-height, 100dvh);--header-pad-top: var(--spacing-12);--header-pad-bottom: var(--spacing-10);--header-pad-x: var(--spacing-16);--content-pad-x: var(--spacing-16);--content-pad-y: var(--spacing-16);--footer-pad-y: var(--spacing-8);--footer-pad-x: var(--spacing-8);--tab-min-height: 52px;--footer-bar-height: calc( var(--footer-pad-y) * 2 + var(--tab-min-height) + var(--border-width) );font-family:var(--font-body);font-size:var(--text-body);line-height:1.18;font-weight:var(--font-weight-medium)}*{box-sizing:border-box}html,body,#root{height:100%;max-height:100%}body{margin:0;min-height:100%;min-height:var(--app-height);color:var(--ink);background:var(--bg-canvas);font-family:var(--font-body);overscroll-behavior:none}button,input{font:inherit}a{color:var(--accent-2);text-decoration:none}.app{min-height:var(--app-height);max-width:28rem;margin:0 auto;padding:0;display:flex;flex-direction:column;gap:0;width:100%;box-sizing:border-box}.app-shell{height:var(--app-height);max-height:var(--app-height);overflow:hidden;padding-left:var(--safe-left);padding-right:var(--safe-right)}.app.center{justify-content:center;align-items:stretch;min-height:var(--app-height);padding:var(--safe-top) var(--spacing-20) max(var(--spacing-24),var(--safe-bottom));padding-left:max(var(--spacing-20),var(--safe-left));padding-right:max(var(--spacing-20),var(--safe-right))}.brand-hero{margin:0;font-family:var(--font-display);font-size:clamp(2.25rem,10vw,var(--text-display));font-weight:var(--font-weight-black);letter-spacing:-.02em;color:var(--color-eager-green);line-height:1.2}.auth-screen{gap:0;padding:0;height:var(--app-height);min-height:var(--app-height);max-height:var(--app-height);overflow:hidden;background:var(--color-paper-white);padding-left:var(--safe-left);padding-right:var(--safe-right)}.auth-hero{position:relative;flex:1;min-height:14rem;display:grid;place-content:center;justify-items:center;gap:var(--spacing-12);padding:calc(var(--safe-top) + var(--spacing-32)) var(--spacing-20) var(--spacing-24);overflow:hidden}.auth-blob{position:absolute;left:50%;top:42%;width:min(18rem,78vw);height:min(18rem,78vw);border-radius:50%;background:var(--color-storybook-green);transform:translate(-50%,-50%);pointer-events:none}.auth-soft-blob{position:absolute;left:12%;bottom:18%;z-index:1;animation:illu-drift 7s ease-in-out infinite}.auth-brand{position:relative;z-index:2;margin:0;text-align:center;max-width:8ch}.auth-tagline{position:relative;z-index:2;margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);line-height:1.4;color:var(--color-charcoal);text-align:center;max-width:18rem}.auth-star{position:absolute;top:18%;right:14%;z-index:1;animation:illu-twinkle 2.8s ease-in-out infinite}.auth-panel{position:relative;z-index:2;flex-shrink:0;display:grid;gap:var(--spacing-16);width:100%;padding:var(--spacing-24) var(--spacing-20);padding-bottom:max(var(--spacing-24),var(--safe-bottom));background:var(--color-paper-white);border-top:var(--border-width) solid var(--color-faded-gray)}.auth-support{margin:0;text-align:center}.auth-screen .btn.primary{font-family:var(--font-display);font-size:var(--text-subheading);font-weight:var(--font-weight-black);letter-spacing:-.02em;padding:1rem}.onboarding-dots{display:flex;gap:var(--spacing-8);justify-content:center;margin-bottom:var(--spacing-8)}.onboarding-dot{width:10px;height:10px;border-radius:50%;background:var(--color-faded-gray);border:var(--border-width) solid var(--color-faded-gray)}.onboarding-dot.done{background:var(--color-storybook-green);border-color:var(--color-eager-green)}.onboarding-dot.active{background:var(--color-eager-green);border-color:var(--color-eager-green);width:22px;border-radius:var(--radius)}.onboarding-step-label{margin:0 0 var(--spacing-16);text-align:center;font-family:var(--font-body);font-size:var(--text-caption);font-weight:var(--font-weight-bold);letter-spacing:.053em;text-transform:uppercase;color:var(--color-eager-green)}.onboarding-ready{display:grid;gap:var(--spacing-8);text-align:center;padding:var(--spacing-16);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-storybook-green)}.onboarding-actions{margin-top:var(--spacing-8)}.onboarding-actions .btn.big{flex:1}.success-sky{position:relative;height:5rem;margin:0 auto var(--spacing-10);width:min(100%,18rem)}.success-blob,.success-star{position:absolute}.success-blob-a{left:0;top:.2rem;animation:illu-drift 6.5s ease-in-out infinite}.success-blob-b{right:.4rem;top:1.4rem;animation:illu-drift 8s ease-in-out infinite reverse}.success-star-a{left:42%;top:0;animation:illu-twinkle 2.4s ease-in-out infinite}.success-star-b{right:28%;top:2.4rem;animation:illu-twinkle 3.1s ease-in-out infinite .4s}.empty-state{display:grid;gap:var(--spacing-12);justify-items:center;text-align:center;padding:var(--spacing-32) var(--spacing-20);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-paper-white)}.empty-state.compact{padding:var(--spacing-20) var(--spacing-12)}.empty-state-art{display:grid;place-items:center;min-height:4rem;width:5.5rem;height:5.5rem;border-radius:var(--radius);border:var(--border-width) solid var(--color-eager-green);background:var(--color-storybook-green)}.empty-state-copy{display:grid;gap:.35rem;justify-items:center}.empty-state-copy .muted{margin:0}.empty-state-action{display:grid;width:100%;max-width:16rem;justify-items:stretch}.empty-state-action .btn{width:100%}@keyframes illu-drift{0%,to{transform:translate(0)}50%{transform:translate(6px)}}@keyframes illu-twinkle{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.72}}.brand-mark{font-family:var(--font-display);font-weight:var(--font-weight-black);letter-spacing:-.02em;color:var(--color-eager-green);font-size:var(--text-subheading);line-height:1.25;text-decoration:none}.lead{margin:0;font-size:1.15rem}.muted{margin:0;color:var(--muted)}.ok{color:var(--ok);margin:.25rem 0 0}.err{color:var(--err);margin:.25rem 0 0}.top{flex-shrink:0;z-index:20;background:var(--bg-canvas);padding-top:var(--safe-top);border-bottom:var(--border-width) solid var(--color-faded-gray)}.top-inner{display:grid;gap:var(--spacing-10);padding:var(--header-pad-top) var(--header-pad-x) var(--header-pad-bottom)}.top-row{display:flex;align-items:center;gap:var(--spacing-10);min-height:44px}.top-leading{display:grid;align-content:center;gap:2px;flex-shrink:0;min-width:0;max-width:42%}.top-context{margin:0;color:var(--muted);font-family:var(--font-body);font-size:var(--text-caption);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-title{flex:1;margin:0;min-width:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);letter-spacing:-.02em;line-height:1.15;text-align:center;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.screen-title{margin:0;font-family:var(--font-body);font-size:var(--text-heading-sm);font-weight:var(--font-weight-bold);letter-spacing:-.02em;line-height:1.2;color:var(--ink)}.who{margin:0;color:var(--muted);font-size:.9rem}.back{display:inline-flex;align-items:center;min-height:44px;font-family:var(--font-body);font-size:var(--text-body);color:var(--ink);text-decoration:none}.top-actions{display:flex;align-items:center;gap:var(--spacing-10);flex-shrink:0;margin-left:auto}.top-row:has(.top-title) .top-actions{margin-left:0}.header-pending{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 .75rem;background:var(--color-eager-green);color:var(--color-paper-white);border:var(--border-width) solid var(--color-eager-green);font-family:var(--font-display);font-size:var(--text-subheading);font-weight:var(--font-weight-black);line-height:1;text-decoration:none;border-radius:var(--radius)}.header-pending:hover,.header-pending:focus-visible{background:var(--color-storybook-green);border-color:var(--color-eager-green);color:var(--color-charcoal);outline:none}.header-balance{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 .75rem;border:var(--border-width) solid var(--color-faded-gray);background:var(--color-paper-white);color:var(--color-charcoal);font-family:var(--font-display);font-size:var(--text-subheading);font-weight:var(--font-weight-black);line-height:1;text-decoration:none;border-radius:var(--radius);white-space:nowrap}.header-balance:hover,.header-balance:focus-visible{border-color:var(--color-spark-blue);color:var(--color-spark-blue);outline:none}.header-avatar{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:var(--color-storybook-green);color:var(--color-charcoal);border:var(--border-width) solid var(--color-eager-green);font-family:var(--font-display);font-size:1.05rem;font-weight:var(--font-weight-black);line-height:1;text-decoration:none;border-radius:var(--radius);flex-shrink:0}.header-avatar.active{background:var(--color-eager-green);color:var(--color-paper-white);border-color:var(--color-eager-green)}.header-avatar:hover,.header-avatar:focus-visible{border-color:var(--color-spark-blue);outline:none}.content{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;display:grid;align-content:start;gap:var(--section-gap);padding:var(--content-pad-y) var(--content-pad-x);padding-bottom:calc(var(--content-pad-y) + var(--spacing-8))}.app-shell:not(.has-footer) .content{padding-bottom:calc(var(--content-pad-y) + var(--safe-bottom))}.langs{display:flex;gap:var(--spacing-12);align-items:stretch}.langs button{border:var(--border-width) solid var(--color-faded-gray);background:var(--color-paper-white);color:var(--muted);padding:.55rem .85rem;min-height:44px;border-radius:var(--radius);cursor:pointer;font-family:var(--font-body);font-size:var(--text-nav);font-weight:var(--font-weight-bold);letter-spacing:.053em;text-transform:uppercase;line-height:1.33}.langs button.active{background:var(--color-storybook-green);color:var(--color-eager-green);border-color:var(--color-eager-green)}.langs button:disabled{opacity:.55;cursor:not-allowed}.settings-langs{margin-top:.75rem;flex-wrap:wrap}.settings-langs button{min-width:5.5rem}.form{display:grid;gap:var(--element-gap)}.form label{display:grid;gap:.35rem;font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-bold);color:var(--ink)}.form input,.form select,.form textarea{border:var(--border-width) solid var(--color-faded-gray);background:var(--color-paper-white);border-radius:var(--radius);padding:.75rem .85rem;min-height:44px;color:var(--ink);font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-medium);outline:none}.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--color-eager-green)}.form input:focus-visible,.form select:focus-visible,.form textarea:focus-visible{border-color:var(--color-spark-blue)}.form .hint,.compact-label .hint{font-size:var(--text-caption);font-weight:var(--font-weight-bold);color:var(--muted)}.form label.check{display:flex;align-items:flex-start;gap:.6rem;cursor:pointer;font-weight:var(--font-weight-medium)}.form label.check input{width:auto;min-height:auto;margin-top:.2rem;flex-shrink:0;accent-color:var(--color-eager-green)}.form label.check .hint{display:block;margin-top:.15rem}.compact-label{display:grid;gap:.35rem;margin:.5rem 0}.compact-label input{border:var(--border-width) solid var(--color-faded-gray);background:var(--color-paper-white);border-radius:var(--radius);padding:.65rem .75rem;min-height:44px;color:var(--ink);font-family:var(--font-body);outline:none}.compact-label input:focus,.compact-label input:focus-visible{border-color:var(--color-eager-green)}.overdue-card{display:grid;gap:.5rem;padding:var(--spacing-16);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-paper-white)}.actions.row{flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:var(--border-width) solid transparent;border-radius:var(--radius);padding:.75rem 1rem;min-height:44px;cursor:pointer;font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-bold);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--color-eager-green);color:var(--color-paper-white);border-color:transparent}.btn.primary:hover:not(:disabled),.btn.primary:focus-visible:not(:disabled){background:color-mix(in srgb,var(--color-eager-green) 88%,var(--color-charcoal));border-color:transparent;outline:none}.btn.secondary{background:transparent;color:var(--color-spark-blue);border-color:var(--color-faded-gray)}.btn.secondary:hover:not(:disabled),.btn.secondary:focus-visible:not(:disabled){border-color:var(--color-spark-blue);outline:none}.btn.ghost{background:transparent;color:var(--color-charcoal);border-color:var(--color-faded-gray);padding:.45rem .7rem;min-height:36px;font-size:var(--text-caption)}.btn.ghost:hover:not(:disabled),.btn.ghost:focus-visible:not(:disabled){border-color:var(--color-spark-blue);color:var(--color-spark-blue);outline:none}.btn.big{width:100%;padding:1rem;font-family:var(--font-display);font-size:var(--text-subheading);font-weight:var(--font-weight-black);letter-spacing:-.02em}.block{background:var(--color-paper-white);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:var(--spacing-16) var(--spacing-20);display:grid;gap:.65rem}.block h2{margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);color:var(--ink);letter-spacing:-.02em;line-height:1.4}.row-card{display:flex;align-items:center;gap:.75rem}.row-card>div{flex:1;display:grid;gap:.15rem}.emoji{font-size:1.75rem}.actions{display:grid;gap:.65rem}.mono{margin:0;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9rem;word-break:break-all;background:var(--color-paper-white);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:.65rem .75rem}.list{list-style:none;margin:0;padding:0;display:grid;gap:var(--element-gap)}.list-item{display:flex;align-items:center;gap:.75rem;background:var(--color-paper-white);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:var(--spacing-16)}.list-item>div{flex:1;display:grid;gap:.15rem}.list-item.col{flex-direction:column;align-items:stretch}.list.tight{gap:var(--spacing-8)}.list.tight .list-item{padding:var(--spacing-12) var(--spacing-16)}.btn-row{display:flex;flex-wrap:wrap;gap:.5rem}.form.compact{gap:.55rem}.goal-link{display:grid;gap:.45rem;color:inherit;text-decoration:none;width:100%}.reject-note{margin:.25rem 0 0;color:var(--err);font-size:.9rem}.emoji.huge{font-size:3.2rem;margin:0}.reward-img{width:2.5rem;height:2.5rem;object-fit:cover;border-radius:var(--radius);display:block;flex-shrink:0}.reward-img.huge{width:5.5rem;height:5.5rem;border-radius:var(--radius);margin:0 auto}.muted.small{display:block;margin-top:.25rem;font-size:.85rem}.balance-hero.compact{padding-top:.5rem}.balance-hero.celebrate .screen-title{animation:rise-local .42s ease-out}.balance-panel{display:grid;place-content:center;justify-items:center;text-align:center;gap:.2rem;padding:var(--spacing-16) var(--spacing-12)}.balance-panel .label{margin:0;color:var(--muted);font-family:var(--font-body);font-size:var(--text-caption);font-weight:var(--font-weight-bold);line-height:1.67;text-transform:uppercase;letter-spacing:.06em}.balance-panel .balance{margin:0;font-family:var(--font-display);font-size:clamp(2.8rem,12vw,var(--text-heading));font-weight:var(--font-weight-black);letter-spacing:-.04em;line-height:.9;color:var(--color-eager-green)}.balance-panel.compact .balance{font-size:clamp(1.8rem,8vw,var(--text-heading-sm))}.child-greeting{margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);color:var(--color-charcoal);line-height:1.4}.pending-banner{display:flex;align-items:center;gap:var(--spacing-16);padding:var(--spacing-16);border:var(--border-width) solid var(--color-eager-green);border-radius:var(--radius);background:var(--color-storybook-green);color:inherit;text-decoration:none}.pending-banner-count{flex-shrink:0;display:grid;place-content:center;min-width:2.75rem;min-height:2.75rem;padding:0 .5rem;border-radius:var(--radius);background:var(--color-eager-green);color:var(--color-paper-white);font-family:var(--font-display);font-size:var(--text-heading-sm);font-weight:var(--font-weight-black);line-height:1}.pending-banner strong{display:block;font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-bold);color:var(--color-charcoal)}.home-ctas{gap:var(--spacing-12)}.home-ctas .btn.big{width:100%}.pending-card{gap:var(--spacing-16)}.pending-card-head{display:grid;gap:.25rem}.pending-points{font-size:var(--text-subheading)}.task-waiting{margin:0;padding:var(--spacing-16);text-align:center;border:var(--border-width) solid var(--color-spark-blue);border-radius:var(--radius);background:var(--color-paper-white);color:var(--color-spark-blue);font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-bold)}.sticker-panel{border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:var(--spacing-24) var(--spacing-16);background:var(--color-paper-white)}.below-fold{padding-top:var(--spacing-8);border-top:var(--border-width) solid var(--color-faded-gray);opacity:.95}.below-fold .weekly-goal.compact h2{font-size:var(--text-body)}.streak-line.compact{margin:0;text-align:center}.extras-row{flex-wrap:wrap}.extras-row .btn{flex:1 1 auto}.progress-wide{width:100%}.reward-status-label{margin:0;font-size:var(--text-caption);font-weight:var(--font-weight-bold);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.reward-status-label.almost{color:var(--color-charcoal)}.reward-status-label.available{color:var(--color-eager-green)}.balance-meta{display:grid;gap:.25rem;justify-items:center;margin-top:0;text-align:center}.balance-meta .caption{margin:0;font-size:var(--text-caption);color:var(--muted);line-height:1.67}.section-plain{display:grid;gap:var(--element-gap)}.section-plain>h2{margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);letter-spacing:-.02em;line-height:1.4;color:var(--ink)}.section-plain>h2,.section-plain .section-head{margin-bottom:0}.dream-goal{display:grid;gap:.45rem;padding:var(--spacing-16);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-paper-white)}.dream-goal.almost{border-color:var(--color-eager-green);background:color-mix(in srgb,var(--color-storybook-green) 55%,white)}.dream-goal.available{border-color:var(--color-eager-green);background:var(--color-storybook-green)}.dream-goal+.dream-goal{margin-top:var(--element-gap)}.task-hero{display:grid;gap:var(--spacing-10);text-align:center;padding:var(--spacing-20) 0}.reward-points{margin:0;font-family:var(--font-display);font-size:var(--text-heading-sm);font-weight:var(--font-weight-black);line-height:1;color:var(--accent)}.task-hero .reward-points{color:var(--accent)}.pending-actions .btn{flex:1;min-width:7rem}.success-hero .screen-title{font-family:var(--font-display);font-size:clamp(2.2rem,9vw,var(--text-display));font-weight:var(--font-weight-black);line-height:.95;transform:rotate(-2deg);max-width:14ch;margin-left:auto;margin-right:auto;color:var(--color-eager-green)}.success-hero .lead{font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);line-height:1.4;color:var(--color-charcoal)}.emoji.pop,.reward-img.pop{animation:pop .48s cubic-bezier(.2,.9,.3,1.2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@keyframes pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes rise-local{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.balance-hero{text-align:center;padding:var(--spacing-20) 0;display:grid;gap:var(--spacing-20);justify-items:center}.balance-hero .label{margin:0;color:var(--muted)}.balance{margin:.15rem 0;font-family:var(--font-display);font-size:clamp(2.4rem,10vw,var(--text-heading));font-weight:var(--font-weight-black);letter-spacing:-.04em;line-height:.8;color:var(--color-eager-green)}.xp-block{margin:0;max-width:16rem;width:100%;text-align:left}.xp-head{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.35rem;font-size:var(--text-caption);color:var(--muted)}.xp-progress{height:.45rem}.streak-line{margin:0;font-size:var(--text-caption);font-weight:var(--font-weight-bold);color:var(--muted);line-height:1.23}.streak-line.active{color:var(--ink)}.weekly-goal-progress{margin:0 0 .5rem;font-weight:var(--font-weight-bold)}.weekly-goal.claimed .weekly-goal-progress,.weekly-goal.met .weekly-goal-progress{color:var(--ok)}.tiny{font-size:.8rem;margin:.45rem 0 0}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.5rem}.section-head h2{margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);letter-spacing:-.02em;line-height:1.4;color:var(--ink)}.achievements-preview .list{margin-bottom:.75rem}.achievements-count{margin:0 0 1rem}.achievement-list .achievement-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:var(--spacing-16);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-paper-white)}.achievement-list .achievement-row+.achievement-row{margin-top:var(--element-gap)}.achievement-row.locked{opacity:.55}.achievement-row.unlocked strong{color:var(--accent)}.collections-count{margin:0 0 1rem}.collections-preview .collection-preview-row{display:flex;flex-wrap:wrap;gap:.65rem;list-style:none;margin:0 0 .75rem;padding:0}.collection-preview-row li{display:flex;align-items:center;gap:.35rem;padding:.35rem .55rem;background:var(--color-storybook-green);border:var(--border-width) solid var(--color-eager-green);border-radius:var(--radius)}.collection-album{margin-bottom:1.25rem}.collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;list-style:none;margin:.75rem 0 0;padding:0}.collection-sticker{display:flex;flex-direction:column;gap:.25rem;padding:.85rem .75rem;border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);min-height:7rem}.collection-sticker.locked{opacity:.55}.collection-sticker.unlocked{border-color:var(--color-eager-green);background:var(--color-storybook-green)}.collection-emoji{font-size:1.6rem;line-height:1}.goal-head{display:flex;align-items:center;gap:.55rem}.progress{height:.75rem;border-radius:var(--radius);background:var(--color-faded-gray);overflow:hidden}.progress-bar{height:100%;background:var(--color-eager-green);border-radius:var(--radius);transition:width .28s ease;transform-origin:left center}.progress-bar.progress-fill-in{animation:progress-fill .64s cubic-bezier(.2,.8,.2,1) both}.pill{display:inline-flex;align-items:center;font-size:var(--text-caption);font-weight:var(--font-weight-bold);color:var(--muted);background:var(--color-paper-white);border:var(--border-width) solid var(--color-faded-gray);padding:.35rem .65rem;border-radius:var(--radius);line-height:1.23}.footer-nav{flex-shrink:0;z-index:20;padding:var(--footer-pad-y) var(--footer-pad-x);padding-bottom:calc(var(--footer-pad-y) + var(--safe-bottom));background:var(--color-paper-white);border-top:var(--border-width) solid var(--color-faded-gray)}.tab-bar{width:100%;margin:0;display:flex;align-items:stretch;gap:var(--spacing-8)}.tab-bar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tab-min-height);padding:.35rem .25rem;border-radius:var(--radius);border:var(--border-width) solid transparent;background:transparent;color:var(--color-pencil-gray);text-decoration:none;font-family:var(--font-body);font-size:var(--text-caption);font-weight:var(--font-weight-bold);line-height:1.2;letter-spacing:0;text-transform:none;position:relative;-webkit-tap-highlight-color:transparent}.tab-bar-item:hover,.tab-bar-item:focus-visible{color:var(--color-charcoal);outline:none}.tab-bar-item.active{background:var(--color-storybook-green);color:var(--color-eager-green);border-color:var(--color-eager-green)}.tab-bar-icon{position:relative;display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center}.tab-bar-svg{width:24px;height:24px;display:block}.tab-bar-item.active .tab-bar-svg-cut{stroke:var(--color-paper-white)}.tab-bar-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-bar-badge{position:absolute;top:-6px;right:-10px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;border:var(--border-width) solid var(--color-paper-white);background:var(--color-eager-green);color:var(--color-paper-white);font-family:var(--font-display);font-size:11px;font-weight:var(--font-weight-black);line-height:14px;display:inline-flex;align-items:center;justify-content:center}.tabs{width:100%;margin:0;display:flex;align-items:stretch;gap:var(--spacing-8)}.tabs a,.tabs span{flex:1;text-align:center;padding:.65rem .25rem;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);color:var(--muted);font-family:var(--font-body);font-size:var(--text-nav);font-weight:var(--font-weight-bold);letter-spacing:.053em;text-transform:uppercase;line-height:1.33;text-decoration:none;position:relative;background:transparent;border:var(--border-width) solid transparent}.tabs a.active,.tabs span.active{background:var(--color-storybook-green);color:var(--color-eager-green);border-color:var(--color-eager-green)}.toast{position:fixed;left:50%;bottom:calc(var(--safe-bottom) + var(--spacing-16));transform:translate(-50%);background:var(--color-night-ink);color:var(--color-paper-white);padding:.75rem 1rem;border-radius:var(--radius);border:var(--border-width) solid var(--color-night-ink);z-index:30;max-width:min(28rem,calc(100vw - 2rem));font-family:var(--font-body);font-size:var(--text-body);font-weight:var(--font-weight-bold);animation:rise .22s ease-out}.app-shell.has-footer .toast{bottom:calc(var(--footer-bar-height) + var(--safe-bottom) + var(--spacing-12))}.toast.ok,.toast.success{background:var(--color-eager-green);border-color:var(--color-eager-green);color:var(--color-paper-white)}.dev-bar{display:flex;gap:.5rem}.dev-bar button{border:var(--border-width) dashed var(--color-faded-gray);background:var(--color-paper-white);color:var(--ink);border-radius:var(--radius);padding:.45rem .7rem;cursor:pointer;font-size:.85rem;font-weight:var(--font-weight-bold)}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:.75rem}.theme-swatch{display:flex;align-items:center;gap:.55rem;border:var(--border-width) solid var(--color-faded-gray);background:var(--color-paper-white);color:var(--ink);border-radius:var(--radius);padding:.65rem .75rem;cursor:pointer;text-align:left}.theme-swatch.active{border-color:var(--color-eager-green);background:var(--color-storybook-green);outline:none}.theme-swatch:disabled{opacity:.65;cursor:wait}.theme-swatch-dot{width:1.1rem;height:1.1rem;border-radius:var(--radius);flex-shrink:0;background:var(--swatch-a);border:var(--border-width) solid color-mix(in srgb,var(--ink) 22%,transparent);border-right:.55rem solid var(--swatch-b);box-sizing:border-box}.theme-swatch-meadow{--swatch-a: #ffffff;--swatch-b: #58cc02}.theme-swatch-ocean{--swatch-a: #f0fbff;--swatch-b: #1cb0f6}.theme-swatch-sunset{--swatch-a: #f7ffe8;--swatch-b: #58cc02}.theme-swatch-slate{--swatch-a: #f5f5f5;--swatch-b: #4b4b4b}.theme-swatch-berry{--swatch-a: #efffe0;--swatch-b: #58cc02}.seasonal-banner{border-radius:var(--radius);padding:var(--spacing-16) var(--spacing-20);background:var(--color-paper-white);border:var(--border-width) solid var(--color-faded-gray);border-left:6px solid var(--seasonal-accent, var(--color-eager-green));animation:seasonal-in .45s ease both}.seasonal-title{margin:0 0 .2rem;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);color:var(--ink);line-height:1.4}.surprise-banner{border-radius:var(--radius);padding:var(--spacing-16) var(--spacing-20);background:var(--color-storybook-green);border:var(--border-width) solid var(--color-eager-green);animation:seasonal-in .45s ease both;display:grid;gap:.35rem}.surprise-title{margin:0;font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);color:var(--ink);line-height:1.4}.preset-row{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0 .75rem}.preset-row .btn{padding:.35rem .65rem;font-size:.9rem}.mascot{--mascot-scale: 1;width:calc(3.2rem + var(--mascot-scale) * .55rem);height:calc(3.2rem + var(--mascot-scale) * .55rem);margin:0 auto .35rem}.mascot-home{animation:mascot-float 3.6s ease-in-out infinite}.mascot-celebrate{width:5.5rem;height:5.5rem;margin-bottom:.5rem}.mascot-svg{display:block;filter:none}.mascot-svg.cheer{animation:mascot-bounce .7s ease both}.mascot-svg.seasonal .mascot-ring,.mascot-ring{animation:mascot-pulse 2.4s ease-in-out infinite}@keyframes mascot-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes mascot-bounce{0%{transform:scale(.86);opacity:.4}60%{transform:scale(1.06)}to{transform:scale(1);opacity:1}}@keyframes mascot-pulse{0%,to{opacity:.45}50%{opacity:.9}}@keyframes seasonal-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.balance-panel.balance-rise{animation:balance-rise .56s cubic-bezier(.2,.8,.2,1) both}.balance-panel .balance.balance-pop{animation:balance-pop .48s cubic-bezier(.2,.9,.3,1.15) both}.success-settle{animation:success-settle .52s cubic-bezier(.2,.8,.2,1) both}.success-settle.delay{animation-delay:90ms}@keyframes balance-rise{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes balance-pop{0%{transform:scale(1)}35%{transform:scale(1.14)}to{transform:scale(1)}}@keyframes success-settle{0%{opacity:0;transform:translateY(14px) rotate(-2deg)}to{opacity:1;transform:translateY(0) rotate(-2deg)}}.success-hero .lead.success-settle{animation-name:success-settle-flat}@keyframes success-settle-flat{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes progress-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.form-screen{gap:var(--spacing-16)}.form-section{display:grid;gap:var(--element-gap);padding:var(--spacing-16);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);background:var(--color-paper-white)}.form-section-title{margin:0;font-family:var(--font-body);font-size:var(--text-caption);font-weight:var(--font-weight-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);line-height:1.23}.form-advanced{background:color-mix(in srgb,var(--color-storybook-green) 35%,white);border-color:var(--color-eager-green)}.form-advanced-toggle{justify-self:start;min-height:40px;padding:.5rem .85rem}.form-cta{display:grid;gap:var(--spacing-12);align-items:stretch}.form-cta.sticky-cta{position:sticky;bottom:0;z-index:5;margin:0 calc(-1 * var(--content-pad-x));padding:var(--spacing-8) var(--content-pad-x) var(--spacing-12);background:var(--color-paper-white);border-top:var(--border-width) solid var(--color-faded-gray)}.app-shell:not(.has-footer) .form-cta.sticky-cta{padding-bottom:calc(var(--spacing-12) + var(--safe-bottom))}.preview-chip{display:inline-flex;align-items:center;justify-content:center;justify-self:center;min-height:36px;padding:.35rem .85rem;border:var(--border-width) solid var(--color-eager-green);border-radius:var(--radius);background:var(--color-storybook-green);color:var(--color-charcoal);font-family:var(--font-display);font-size:var(--text-body);font-weight:var(--font-weight-black);letter-spacing:-.02em;line-height:1}.invite-link.mono,.mono.invite-link{font-size:var(--text-caption);background:var(--color-storybook-green);border-color:var(--color-eager-green)}.overdue-list{gap:var(--spacing-16)}.overdue-actions .btn{min-height:44px}.join-panel .lead,.invite-result .lead{font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);line-height:1.4;color:var(--ink)}.stat-row{display:flex;align-items:baseline;gap:var(--spacing-10);padding:var(--spacing-12) 0;border-bottom:var(--border-width) solid var(--color-faded-gray)}.stat-row:last-child{border-bottom:none}.stat-figure{font-family:var(--font-display);font-size:var(--text-heading-sm);font-weight:var(--font-weight-black);letter-spacing:-.03em;line-height:1;color:var(--ink);min-width:2.5ch}.stats-child,.stats-week,.family-goal-panel,.collection-album{padding-bottom:var(--spacing-20);border-bottom:var(--border-width) solid var(--color-faded-gray)}.stats-child:last-child,.collection-album:last-child{border-bottom:none}.collection-sticker{background:var(--color-paper-white)}.collection-sticker.unlocked{background:var(--color-storybook-green)}.family-goal-panel h3{margin:var(--spacing-20) 0 var(--spacing-10);font-family:var(--font-body);font-size:var(--text-subheading);font-weight:var(--font-weight-bold);line-height:1.4}.list-item.tight-row{padding:var(--spacing-12) var(--spacing-16)}.settings-screen .section-plain+.section-plain{padding-top:var(--spacing-20);border-top:var(--border-width) solid var(--color-faded-gray)}.app[data-age-band=YOUNG]{--text-body: 16px;--text-caption: 13px;--text-subheading: 22px;--text-heading-sm: 36px}.app[data-age-band=YOUNG] .btn{min-height:52px;padding:.9rem 1.1rem}.app[data-age-band=YOUNG] .btn.big{min-height:58px;font-size:1.35rem}.app[data-age-band=YOUNG] .btn.ghost{min-height:44px}.app[data-age-band=YOUNG] .balance-panel .balance{font-size:clamp(3rem,13vw,3.6rem)}.app[data-age-band=YOUNG] .list-item{padding:1.35rem 0}.app[data-age-band=YOUNG] .form input,.app[data-age-band=YOUNG] .form select{min-height:52px;font-size:16px}.app[data-age-band=YOUNG] .preview-chip{min-height:44px;font-size:1.15rem}.app[data-age-band=YOUNG] .tab-bar-item{min-height:56px;gap:4px;font-size:14px}.app[data-age-band=YOUNG] .tab-bar-icon,.app[data-age-band=YOUNG] .tab-bar-svg{width:28px;height:28px}.app[data-age-band=TEEN] .mascot-home,.app[data-age-band=TEEN] .mascot-celebrate{display:none}.app[data-age-band=TEEN] .success-sky{height:2.5rem;opacity:.55}.app[data-age-band=TEEN] .seasonal-banner{border-left-width:3px;padding:var(--spacing-10) var(--spacing-20)}.app[data-age-band=TEEN] .screen-title{font-size:28px}.app[data-age-band=TEEN] .balance-panel{padding:var(--spacing-8)}.app[data-age-band=TEEN] .preview-chip{font-family:var(--font-body);font-weight:var(--font-weight-bold)}@media(prefers-reduced-motion:reduce){.balance-panel.balance-rise,.balance-panel .balance.balance-pop,.success-settle,.success-hero .lead.success-settle,.progress-bar.progress-fill-in,.emoji.pop,.reward-img.pop,.auth-star,.auth-soft-blob,.success-blob-a,.success-blob-b,.success-star-a,.success-star-b,.mascot-home,.mascot-svg.cheer,.mascot-ring{animation:none!important}}@media(min-width:720px){.app-shell{border-left:var(--border-width) solid var(--color-faded-gray);border-right:var(--border-width) solid var(--color-faded-gray)}.app.center:not(.auth-screen){padding-top:calc(var(--safe-top) + 1.5rem)}}.btn.small{min-height:36px;padding:.4rem .75rem;font-size:var(--text-caption)}.family-name-panel{margin-bottom:var(--spacing-8)}.family-name-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-12)}.family-name{margin:0;font-family:var(--font-display);font-weight:800;font-size:var(--text-title);color:var(--color-charcoal)}.family-slots{display:grid;gap:var(--spacing-12)}.family-slot{display:flex;align-items:center;gap:var(--spacing-12);border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:var(--spacing-12) var(--spacing-16);background:var(--color-paper-white)}.family-slot.filled{border-color:var(--color-eager-green);background:var(--color-storybook-green)}.family-slot.empty{border-style:dashed}.family-slot-emoji{font-size:1.75rem;line-height:1;width:2.25rem;text-align:center;flex-shrink:0}.family-slot-body{flex:1;min-width:0}.family-slot-role{display:block;font-family:var(--font-display);font-weight:800;color:var(--color-charcoal)}.family-slot-actions{display:flex;flex-direction:column;gap:.35rem;flex-shrink:0}.who-are-you{display:grid;gap:var(--spacing-12)}.who-choices{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-12)}.who-choice{display:grid;gap:.35rem;justify-items:center;border:var(--border-width) solid var(--color-faded-gray);border-radius:var(--radius);padding:var(--spacing-16) var(--spacing-12);background:var(--color-paper-white);cursor:pointer;font-family:var(--font-body);color:var(--color-charcoal)}.who-choice.selected{border-color:var(--color-eager-green);background:var(--color-storybook-green)}.who-choice-emoji{font-size:2rem;line-height:1}
