@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,700;9..144,800;9..144,900&family=Nunito:wght@400;500;600;700;800&family=Caveat:wght@500;700&display=swap");:root{--terracotta-50:#FBEEE6;--terracotta-100:#F6DCCC;--terracotta-200:#EEBFA3;--terracotta-300:#E29B75;--terracotta-400:#D67F55;--terracotta-500:#C96A3F;--terracotta-600:#B0562F;--terracotta-700:#8C4223;--terracotta-800:#6B321B;--sage-50:#EFF3EB;--sage-100:#DCE6D1;--sage-200:#BFD0AE;--sage-300:#9DB887;--sage-400:#7FA068;--sage-500:#668651;--sage-600:#4F6B3E;--sage-700:#3B5230;--peach-50:#FFF3EB;--peach-100:#FFE4D3;--peach-200:#FFCCAE;--peach-300:#FFB085;--peach-400:#FB9663;--peach-500:#E87A47;--butter-50:#FFF7E0;--butter-100:#FFEDB8;--butter-200:#FFE08A;--butter-300:#FBCE5C;--butter-400:#F0B431;--butter-500:#D89614;--blush-100:#FCE1DD;--blush-200:#F8C5BD;--blush-300:#F1A197;--blush-400:#E47D72;--cream-50:#FBF6EC;--cream-100:#F5EEDF;--cream-200:#ECE0CA;--cream-300:#DBCBAF;--ink-900:#2D2118;--ink-700:#4D3A29;--ink-500:#7A6450;--ink-300:#B4A38E;--ink-100:#D8C9B1;--c-bg:var(--cream-50);--c-surface:#FFFFFF;--c-surface-muted:var(--cream-100);--c-fg:var(--ink-900);--c-fg-muted:var(--ink-500);--c-border:var(--ink-100);--c-border-strong:var(--ink-300);--font-display:"Fraunces","Feather Bold",Georgia,serif;--font-body:"Nunito",ui-rounded,system-ui,-apple-system,sans-serif;--font-hand:"Caveat","Marker Felt",cursive;--fs-xs:12px;--fs-sm:14px;--fs-md:16px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--fs-3xl:36px;--fs-4xl:48px;--fs-5xl:64px;--lh-tight:1.05;--lh-snug:1.2;--lh-body:1.45;--tracking-tight:-0.02em;--tracking-caps:0.08em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--radius-pill:999px;--shadow-card-sm:0 1px 2px rgba(45,33,24,0.06),0 2px 4px rgba(45,33,24,0.04);--shadow-card-md:0 2px 6px rgba(45,33,24,0.06),0 8px 16px rgba(45,33,24,0.08);--shadow-card-lg:0 4px 12px rgba(45,33,24,0.08),0 20px 40px rgba(45,33,24,0.12);--inner-highlight:inset 0 1px 0 rgba(255,255,255,0.35);--ease-squish:cubic-bezier(.34,1.56,.64,1);--ease-out:cubic-bezier(.2,.7,.3,1);--dur-fast:120ms;--dur-med:220ms;--dur-slow:420ms}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-body);font-size:var(--fs-md);line-height:var(--lh-body);font-weight:500;color:var(--c-fg);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:contain}button{font:inherit;color:inherit}img{display:block;max-width:100%}a{color:inherit}.display-xl{font-size:var(--fs-4xl)}.display-xl,h1{font-family:var(--font-display);font-weight:900;line-height:var(--lh-tight);letter-spacing:var(--tracking-tight)}h1{font-size:var(--fs-3xl);margin:0}h2{font-size:var(--fs-2xl);letter-spacing:var(--tracking-tight)}h2,h3{font-family:var(--font-display);font-weight:800;line-height:var(--lh-snug);margin:0}h3{font-size:var(--fs-xl)}p{margin:0}.label{font-size:11px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-fg-muted)}.hand{font-family:var(--font-hand);font-weight:700}.app-shell{position:relative;max-width:520px;margin:0 auto;min-height:100dvh;background:var(--c-bg);display:flex;flex-direction:column}.app-scroll{flex:1 1;padding:max(env(safe-area-inset-top),24px) 20px 140px;display:flex;flex-direction:column;gap:18px}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 4px 4px;gap:12px}.app-header .greet{font-family:var(--font-display);font-weight:900;font-size:28px;color:var(--c-fg);line-height:1.05;letter-spacing:var(--tracking-tight)}.app-header .greet .sun{color:var(--terracotta-500)}.app-header .sub{font-size:13px;color:var(--c-fg-muted);margin-top:4px;font-weight:600}.avatar{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:999px;border:3px solid #fff;background:var(--peach-100);box-shadow:0 2px 0 0 var(--cream-300);overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.avatar.tone-blush{background:var(--blush-100)}.avatar.tone-sage{background:var(--sage-100)}.avatar.tone-butter{background:var(--butter-100)}.avatar.size-lg{width:62px;height:62px}.card{background:#fff;border-radius:22px;padding:18px;box-shadow:var(--shadow-card-md)}.card.flat{box-shadow:var(--shadow-card-sm);padding:14px}.card.butter{background:var(--butter-100)}.card.blush{background:var(--blush-100)}.card.peach{background:var(--peach-100)}.hero-stats{display:flex;gap:12px}.hero-stats .stat{flex:1 1;padding:14px;display:flex;align-items:center;gap:10px;border-radius:22px;box-shadow:var(--shadow-card-md)}.hero-stats .stat img{flex-shrink:0}.hero-stats .num{font-family:var(--font-display);font-weight:900;font-size:28px;line-height:1}.hero-stats .lbl{font-size:11px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;margin-top:2px}.hero-stats .streak{background:var(--butter-100)}.hero-stats .streak .num{color:var(--terracotta-700)}.hero-stats .streak .lbl{color:var(--terracotta-600)}.hero-stats .xp{background:var(--blush-100)}.hero-stats .xp .lbl,.hero-stats .xp .num{color:var(--blush-400)}.partner-nudge{display:flex;align-items:center;gap:12px;padding:14px;background:var(--peach-100);border-radius:22px;box-shadow:var(--shadow-card-md)}.partner-nudge .title{font-family:var(--font-display);font-weight:900;font-size:15px;color:var(--peach-500);line-height:1.1}.partner-nudge .sub{font-size:12px;color:var(--ink-700);font-weight:600;margin-top:2px}.section-label{font-size:11px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-fg-muted);padding:0 4px;margin-bottom:8px}.goal-list{display:flex;flex-direction:column;gap:10px}.goal-row{display:flex;align-items:center;gap:14px;background:#fff;padding:14px 18px;border-radius:22px;box-shadow:var(--shadow-card-sm);transition:opacity var(--dur-med) var(--ease-out)}.goal-row.done{opacity:.78}.goal-row .title{flex:1 1;font-family:var(--font-body);font-weight:700;font-size:16px;color:var(--c-fg);line-height:1.25;transition:color var(--dur-med),-webkit-text-decoration var(--dur-med);transition:color var(--dur-med),text-decoration var(--dur-med);transition:color var(--dur-med),text-decoration var(--dur-med),-webkit-text-decoration var(--dur-med)}.goal-row.done .title{color:var(--c-fg-muted);text-decoration:line-through}.checkbox{width:34px;height:34px;border-radius:999px;border:3px solid var(--cream-300);background:#fff;box-shadow:0 2px 0 0 var(--cream-300);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:17px;cursor:pointer;padding:0;flex-shrink:0;transition:transform var(--dur-slow) var(--ease-squish),background var(--dur-fast),box-shadow var(--dur-fast),border-color var(--dur-fast)}.checkbox:focus-visible{outline:3px solid var(--terracotta-300);outline-offset:3px}.checkbox.checked{border-color:transparent;background:var(--sage-500);box-shadow:0 3px 0 0 var(--sage-700)}.checkbox.pop{transform:scale(1.15)}.checkbox .tick{opacity:0;transition:opacity var(--dur-fast)}.checkbox.checked .tick{opacity:1}.xp-chip{font-family:var(--font-display);font-weight:900;font-size:13px;padding:4px 10px;border-radius:999px;white-space:nowrap;color:var(--terracotta-500);background:var(--butter-100)}.xp-chip.done{color:var(--sage-700);background:var(--sage-100)}.btn{font-family:var(--font-body);font-weight:800;font-size:16px;padding:14px 26px;border-radius:999px;border:0;cursor:pointer;letter-spacing:.01em;transition:transform 80ms var(--ease-out),background 80ms,box-shadow 80ms;color:#fff;background:var(--terracotta-500);box-shadow:0 4px 0 0 var(--terracotta-700),var(--inner-highlight);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{background:var(--terracotta-400)}.btn.is-pressed,.btn:active{transform:translateY(4px);background:var(--terracotta-600);box-shadow:0 0 0 0 var(--terracotta-700),inset 0 1px 0 rgba(255,255,255,.2)}.btn:focus-visible{outline:3px solid var(--terracotta-300);outline-offset:3px}.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn.full{width:100%}.btn.sm{padding:10px 18px;font-size:14px}.btn.lg{padding:18px 34px;font-size:20px}.btn.secondary{background:var(--sage-500);box-shadow:0 4px 0 0 var(--sage-700),var(--inner-highlight)}.btn.secondary:hover{background:var(--sage-400)}.btn.secondary:active{background:var(--sage-600);box-shadow:0 0 0 0 var(--sage-700),inset 0 1px 0 rgba(255,255,255,.2)}.btn.partner{background:var(--peach-400);box-shadow:0 4px 0 0 #B85828,var(--inner-highlight)}.btn.partner:hover{background:var(--peach-300)}.btn.partner:active{background:var(--peach-500);box-shadow:0 0 0 0 #B85828,inset 0 1px 0 rgba(255,255,255,.2)}.btn.ghost{background:#fff;color:var(--terracotta-600);box-shadow:0 4px 0 0 var(--cream-300)}.btn.ghost:active,.btn.ghost:hover{background:var(--cream-100)}.btn.ghost:active{box-shadow:0 0 0 0 var(--cream-300)}.tab-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:max(env(safe-area-inset-bottom),12px);width:calc(min(100vw, 520px) - 32px);background:#fff;border-radius:28px;padding:8px;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:4px;gap:4px;box-shadow:var(--shadow-card-lg);z-index:40}.tab-bar a{background:transparent;color:var(--c-fg-muted);border:0;cursor:pointer;border-radius:22px;padding:10px 4px;font-family:var(--font-body);font-weight:800;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:background var(--dur-fast),color var(--dur-fast);text-decoration:none}.tab-bar a:hover{color:var(--ink-700)}.tab-bar a.active{background:var(--terracotta-100);color:var(--terracotta-700)}.tab-bar .glyph{font-size:20px;line-height:1}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:-180px;width:calc(min(100vw, 520px) - 32px);background:#fff;border-radius:20px;padding:14px 18px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-card-lg);transition:bottom var(--dur-slow) var(--ease-squish);z-index:45}.toast.show{bottom:calc(env(safe-area-inset-bottom) + 100px)}.toast img{width:40px;height:40px;flex-shrink:0}.toast .msg{font-family:var(--font-display);font-weight:900;font-size:18px;color:var(--c-fg);line-height:1.05}.toast .sub{font-size:13px;color:var(--c-fg-muted);font-weight:600;margin-top:2px}.streak-hero{text-align:center;padding:26px;background:var(--butter-100)}.streak-hero img{width:92px;margin:0 auto 8px}.streak-hero .num{font-family:var(--font-display);font-weight:900;font-size:72px;color:var(--terracotta-700);line-height:.9;letter-spacing:-.03em}.streak-hero .days{font-family:var(--font-hand);font-weight:700;font-size:28px;color:var(--terracotta-500);transform:rotate(-3deg);display:inline-block;margin-top:4px}.streak-hero .caption{font-size:13px;color:var(--ink-700);font-weight:600;margin-top:8px}.calendar .calendar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.calendar .month{font-family:var(--font-display);font-weight:900;font-size:18px}.calendar .count{font-size:11px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-fg-muted)}.calendar .dow{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px;margin-bottom:8px}.calendar .dow span{text-align:center;font-size:10px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-fg-muted)}.calendar .weeks{display:flex;flex-direction:column;gap:6px}.calendar .week{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px}.calendar .day{aspect-ratio:1;border-radius:12px;background:var(--cream-100);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:900;font-size:14px;color:var(--ink-300)}.calendar .day.done{background:var(--butter-300);box-shadow:0 2px 0 0 var(--butter-500);color:var(--terracotta-700)}.calendar .day.today{background:var(--terracotta-500);box-shadow:0 3px 0 0 var(--terracotta-700);color:#fff}.calendar .day.empty{background:transparent;box-shadow:none}.milestones{display:flex;gap:10px}.milestone{flex:1 1;text-align:center;padding:14px 8px;border-radius:18px;background:#fff;box-shadow:var(--shadow-card-sm);opacity:.55}.milestone.hit{background:var(--butter-100);opacity:1}.milestone img{width:30px;margin:0 auto 4px}.milestone .d{font-family:var(--font-display);font-weight:900;font-size:18px}.milestone .lbl{font-size:10px;font-weight:700;color:var(--c-fg-muted)}.versus-hero{padding:20px;background:linear-gradient(180deg,var(--peach-50) 0,var(--blush-100) 100%)}.versus-hero .row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.versus-hero .side{text-align:center;flex:1 1;display:flex;flex-direction:column;align-items:center;gap:6px}.versus-hero .side .name{font-family:var(--font-display);font-weight:900;font-size:16px}.versus-hero .side .score{font-family:var(--font-display);font-weight:900;font-size:40px;line-height:1}.versus-hero .side.me .score{color:var(--terracotta-500)}.versus-hero .side.partner .score{color:var(--peach-500)}.versus-hero .vs{font-family:var(--font-display);font-weight:900;font-size:28px;color:var(--ink-500);padding:0 8px}.versus-bar{position:relative;height:22px;background:rgba(45,33,24,.08);border-radius:999px;overflow:hidden}.versus-bar .me{position:absolute;inset:0;background:var(--terracotta-500);border-radius:999px 0 0 999px}.versus-bar .partner{position:absolute;top:0;bottom:0;right:0;background:var(--peach-400);border-radius:0 999px 999px 0}.versus-lead{text-align:center;margin-top:10px;font-family:var(--font-display);font-weight:900;font-size:14px;color:var(--terracotta-700)}.reactions{display:flex;gap:10px;justify-content:center}.reactions button{width:54px;height:54px;border-radius:999px;border:0;background:#fff;font-size:26px;cursor:pointer;box-shadow:0 3px 0 0 var(--cream-300),inset 0 1px 0 rgba(255,255,255,.6);transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast)}.reactions button:active{transform:translateY(3px);box-shadow:0 0 0 0 var(--cream-300)}.reactions button.popped{animation:pop-spring var(--dur-slow) var(--ease-squish)}@keyframes pop-spring{0%{transform:scale(1)}40%{transform:scale(1.25)}to{transform:scale(1)}}.form-wrap{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:40px 20px;max-width:440px;margin:0 auto;gap:18px}.form-wrap .logo{width:132px;margin:0 auto 4px}.form-wrap h1{text-align:center;font-size:32px}.form-wrap p.sub{text-align:center;color:var(--c-fg-muted);font-weight:600}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:800;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--c-fg-muted);padding-left:4px}.field input,.field select{font:inherit;font-weight:600;padding:14px 18px;border-radius:var(--radius-pill);border:2px solid var(--cream-300);background:#fff;color:var(--c-fg);outline:none;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.field input:focus,.field select:focus{border-color:var(--terracotta-400);box-shadow:0 0 0 4px var(--terracotta-100)}.form-error{background:var(--blush-100);color:var(--terracotta-800);padding:10px 16px;border-radius:var(--radius-lg);font-weight:700;font-size:14px}.form-link{text-align:center;color:var(--c-fg-muted);font-weight:600;font-size:14px}.form-link a{color:var(--terracotta-600);font-weight:800;text-decoration:none}.form-link a:hover{text-decoration:underline}.invite-code{font-family:var(--font-display);font-weight:900;font-size:48px;letter-spacing:.12em;color:var(--terracotta-700);text-align:center;padding:18px 12px;box-shadow:var(--shadow-card-sm);-webkit-user-select:all;-moz-user-select:all;user-select:all}.install-banner,.invite-code{background:var(--butter-100);border-radius:var(--radius-xl)}.install-banner{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 108px);left:50%;transform:translateX(-50%);width:calc(min(100vw, 520px) - 32px);padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-card-md);z-index:35}.install-banner img{width:40px;height:40px;flex-shrink:0}.install-banner .msg{flex:1 1;font-weight:700;font-size:14px;color:var(--terracotta-700)}.install-banner .close{background:transparent;border:0;cursor:pointer;color:var(--terracotta-600);font-weight:800;padding:6px 10px;border-radius:999px}.landing{padding:56px 20px 80px;gap:40px;background:var(--cream-100);min-height:100dvh}.landing,.landing-header{display:flex;flex-direction:column;align-items:center}.landing-header{max-width:620px;text-align:center;gap:14px}.landing-header .wordmark{width:168px;filter:drop-shadow(0 3px 0 rgba(45,33,24,.08))}.landing-header h1{font-size:clamp(34px,6vw,54px)}.landing-header h1 em{font-family:var(--font-hand);font-weight:700;font-style:normal;color:var(--terracotta-500);display:inline-block;transform:rotate(-3deg)}.landing-header p{max-width:52ch;color:var(--ink-700)}.landing-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.landing-hero{width:100%;max-width:440px;background:#fff;border-radius:var(--radius-xl);padding:28px 24px;box-shadow:var(--shadow-card-md);display:flex;flex-direction:column;gap:16px}.landing-hero h3{text-align:center}.landing-bullets{display:grid;grid-gap:10px;gap:10px}.landing-bullets li{list-style:none;display:flex;align-items:center;gap:10px;font-weight:700;color:var(--ink-700)}.landing-bullets li img{width:22px}.landing-footer{font-weight:600;font-size:13px;color:var(--c-fg-muted);text-align:center}.landing-footer .hand{color:var(--terracotta-500);font-size:17px}