:root{--bg: #FFF9ED;--surface: #FFFFFF;--surface-soft: #E7F5E9;--green-light: #A8DDB5;--primary: #6FBE83;--primary-press: #5FAF74;--primary-strong: #315C3C;--on-primary: #173A22;--primary-light: var(--green-light);--primary-100: var(--surface-soft);--primary-050: #F3FAF4;--surface-cream: var(--bg);--surface-sunk: var(--track);--line-green: var(--green-light);--ink: #2B3A2F;--ink-soft: #5F6D63;--ink-faint: #7C877E;--line: #F1EBDD;--line-strong: #E6DECB;--track: #EFE7D4;--blue-soft: #CFE8F6;--blue-ink: #1F4257;--yellow-soft: #F8E8A8;--yellow-ink: #6B5413;--pink-soft: #F4D5D8;--pink-ink: #4A2A30;--lavender-soft: #DDD6F4;--lavender-ink: #3A2F66;--warn: #C98A3C;--warn-bg: #FBF1CF;--warn-line: var(--yellow-soft);--warn-ink: #6B5413;--danger: #C25B4E;--danger-bg: var(--pink-soft);--danger-line: #EBC0C4;--danger-ink: #7A2E26;--gold: #F8E8A8;--font-display: "Frank Ruhl Libre", "Rubik", serif;--font: "Rubik", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--fs-hero: 36px;--fs-page: 32px;--fs-h1: var(--fs-page);--fs-h2: 19px;--fs-h3: 16px;--fs-body: 15px;--fs-small: 14px;--fs-tiny: 13px;--fs-micro: 12px;--fs-timer: 64px;--r-xs: 12px;--r-sm: 14px;--r-btn: 16px;--r-md: 18px;--r-tile: 20px;--r-lg: 24px;--r-xl: 28px;--r-pill: 999px;--shadow-sm: none;--shadow-soft: 0 10px 30px rgba(49, 92, 60, .08);--shadow-md: var(--shadow-soft);--shadow-lg: 0 20px 60px rgba(49, 92, 60, .12);--shadow-cta: 0 14px 34px rgba(111, 190, 131, .28);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--page-x: 24px;--stack: 22px;--btn-h: 56px;--tab-h: 72px;--header-h: 60px;--max-w: 480px;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg)}body{font-family:var(--font);color:var(--ink);font-size:var(--fs-body);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}#root{min-height:100%;max-width:var(--max-w);margin:0 auto;background:var(--bg);position:relative;box-shadow:0 0 0 1px #315c3c0a,var(--shadow-soft);overflow-x:clip}h1,h2,h3,h4{font-weight:600;color:var(--primary-strong);line-height:1.25}h1{font-family:var(--font-display);font-weight:700;font-size:var(--fs-page);line-height:1.1}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}.display{font-family:var(--font-display);font-weight:700;color:var(--primary-strong);line-height:1.1;letter-spacing:0}.display-hero{font-size:var(--fs-hero)}.display-page{font-size:var(--fs-page)}.display-card{font-size:28px}.display-sm{font-size:24px}.num{font-family:var(--font);font-variant-numeric:tabular-nums}p,li,span,strong{overflow-wrap:anywhere}strong{color:var(--primary-strong);font-weight:600}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:16px;color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--ink-faint);opacity:1}a{color:var(--primary-strong);text-decoration:none}img{max-width:100%;display:block}ul{list-style:none}input[type=checkbox],input[type=radio]{accent-color:var(--primary);width:20px;height:20px;flex:none}:focus-visible{outline:2.5px solid var(--primary-strong);outline-offset:2px;border-radius:var(--r-xs)}.btn:focus-visible,.chip:focus-visible,.option:focus-visible{outline-offset:3px}[hidden]{display:none!important}.screen{min-height:100dvh;padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + var(--sp-6));animation:fade-in .25s ease}.screen--plain{padding-bottom:var(--sp-8)}.screen-pad{padding:var(--sp-5) var(--page-x)}.screen-pad.stack>*+*{margin-top:var(--stack)}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--sp-3);min-height:var(--header-h);padding:calc(env(safe-area-inset-top) + var(--sp-4)) var(--page-x) var(--sp-3);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:saturate(1.1) blur(12px);-webkit-backdrop-filter:saturate(1.1) blur(12px)}.app-header h1{font-size:28px;min-width:0}.app-header .back{width:44px;height:44px;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--surface);font-size:22px;line-height:1;color:var(--primary-strong);flex:none;transition:transform .12s ease}.app-header .back:active{transform:scale(.92)}.icon-btn{width:44px;height:44px;flex:none;border-radius:var(--r-pill);display:grid;place-items:center;background:var(--surface-soft);color:var(--primary-strong);font-size:19px;line-height:1;transition:transform .12s ease}.icon-btn:active{transform:scale(.92)}.icon-btn--white{background:var(--surface)}.chev{color:var(--ink-faint);font-size:22px;line-height:0;flex:none;display:grid;place-items:center}.section-title{font-size:var(--fs-h2);font-weight:600;color:var(--primary-strong)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.card{background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-5)}button.card{width:100%;text-align:start;font-size:inherit;color:inherit}.card--soft{background:var(--surface-soft)}.card--flat{border:1px solid var(--line-strong)}.card--sm{border-radius:var(--r-md);padding:var(--sp-4)}.card--tap{transition:transform .12s ease-out}.card--tap:active{transform:scale(.98)}.card--hero{background:var(--surface);box-shadow:var(--shadow-soft);overflow:hidden}.card--celebrate{background:var(--yellow-soft);color:var(--yellow-ink)}.card--celebrate strong,.card--celebrate h3{color:var(--yellow-ink)}.card--accent,.card--accent-strong,.card--accent-warn{position:relative;padding-inline-start:calc(var(--sp-5) + 6px)}.card--accent:before,.card--accent-strong:before,.card--accent-warn:before{content:"";position:absolute;inset-inline-start:10px;top:var(--sp-5);bottom:var(--sp-5);width:4px;border-radius:var(--r-pill);background:var(--green-light)}.card--accent-strong:before{background:var(--primary)}.card--accent-warn{background:var(--warn-bg)}.card--accent-warn:before{background:var(--warn)}.tint-mint{background:var(--surface-soft);color:var(--primary-strong)}.tint-yellow{background:var(--yellow-soft);color:var(--yellow-ink)}.tint-blue{background:var(--blue-soft);color:var(--blue-ink)}.tint-pink{background:var(--pink-soft);color:var(--pink-ink)}.tint-lavender{background:var(--lavender-soft);color:var(--lavender-ink)}.tint-cream{background:var(--bg);color:var(--ink)}:is(.tint-yellow,.tint-blue,.tint-pink,.tint-lavender) :is(strong,h2,h3,.eyebrow,.muted){color:inherit}:is(.tint-yellow,.tint-blue,.tint-pink,.tint-lavender) .muted{opacity:.85}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:12px 20px;border-radius:var(--r-btn);font-size:16px;font-weight:600;line-height:1.25;text-align:center;transition:transform .12s ease-out,background .15s ease,box-shadow .15s ease;min-height:var(--btn-h);width:100%}.btn:active{transform:scale(.98)}.btn--primary{background:var(--primary);color:var(--on-primary);font-size:17px;box-shadow:var(--shadow-cta)}.btn--primary:active{background:var(--primary-press);box-shadow:none}.btn--dark{background:var(--primary-strong);color:var(--bg)}.btn--ghost{background:transparent;color:var(--primary-strong);font-weight:500;font-size:15px}.btn--soft{background:var(--surface-soft);color:var(--primary-strong);font-size:15px}.btn--line{background:var(--surface);border:1.5px solid var(--green-light);color:var(--primary-strong)}.btn--outline{background:transparent;border:1.5px solid var(--line-strong);color:var(--primary-strong)}.btn--white{background:var(--surface);color:var(--primary-strong)}.btn--sm{min-height:44px;padding:9px 16px;font-size:14px;border-radius:var(--r-sm)}.btn--md{min-height:48px;border-radius:var(--r-sm);font-size:15px}.btn--danger{background:var(--danger);color:#fff}.btn:disabled{background:var(--track);color:var(--ink-faint);box-shadow:none;border-color:transparent;pointer-events:none}.chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:30px;padding:0 12px;border-radius:var(--r-pill);font-size:var(--fs-tiny);font-weight:500;background:var(--bg);color:var(--primary-strong);white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .12s ease}.chip--mint{background:var(--surface-soft)}.chip--white{background:var(--surface)}button.chip{min-height:36px;padding:0 14px;font-size:14px}button.chip:active{transform:scale(.95)}.chip--line{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink)}.chip--active{background:var(--primary-strong);border:1px solid var(--primary-strong);color:var(--bg);font-weight:600}.icon-chip{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:var(--r-pill);background:var(--surface-soft);color:var(--primary-strong)}.icon-chip:active{transform:scale(.9)}.pill-row{display:flex;gap:var(--sp-2);flex-wrap:wrap}.tile{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:var(--r-sm);background:var(--surface-soft);font-size:19px;line-height:1}.tile--lg{width:52px;height:52px;border-radius:16px;font-size:24px}.tile--xl{width:56px;height:56px;border-radius:16px;font-size:28px}.list-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;text-align:start;padding:11px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:none}.list-row .t{font-size:15px;font-weight:600;color:var(--primary-strong);display:block}.list-row .s{font-size:13px;color:var(--ink-soft);display:block}.input{width:100%;min-height:52px;padding:12px 18px;border-radius:var(--r-sm);background:var(--surface);border:1.5px solid var(--line-strong);color:var(--ink);font-size:16px;transition:border-color .15s ease,box-shadow .15s ease;-moz-appearance:textfield}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px var(--surface-soft)}.input::-webkit-outer-spin-button,.input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:24px}details>summary::-webkit-details-marker{display:none}details>summary:after{content:"";width:9px;height:9px;flex:none;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s ease;opacity:.7}details[open]>summary:after{transform:rotate(-135deg) translateY(-2px)}details[open]>summary{margin-bottom:var(--sp-3)}.option{display:flex;align-items:center;gap:14px;width:100%;min-height:84px;padding:14px 16px;border-radius:22px;background:var(--surface);text-align:start;font-size:16px;font-weight:600;color:var(--primary-strong);transition:transform .1s ease,background .15s ease,border-color .15s ease;border:2px solid transparent}.option:active{transform:scale(.98)}.option--selected{border-color:var(--primary);background:var(--surface-soft)}.option .emoji{font-size:24px;line-height:1;width:52px;height:52px;flex:none;display:grid;place-items:center;border-radius:16px;background:var(--bg)}.option--selected .emoji{background:var(--surface)}.option .opt-sub{display:block;font-size:13px;font-weight:400;color:var(--ink-soft);margin-top:2px}.option:after{content:"";margin-inline-start:auto;flex:none;width:28px;height:28px;border-radius:var(--r-pill);border:2px solid var(--line-strong)}.option--selected:after{display:none}.option:has(.check):after{display:none}.option .check{margin-inline-start:auto;flex:none;min-width:28px;height:28px;padding:0 8px;display:inline-grid;place-items:center;border-radius:var(--r-pill);background:var(--primary);color:#fff;font-size:14px;font-weight:700;animation:check-pop .18s ease-out}.option .check--secondary{background:var(--green-light);color:var(--primary-strong)}@keyframes check-pop{0%{transform:scale(.8)}to{transform:none}}.bar{height:8px;border-radius:var(--r-pill);background:var(--surface-soft);overflow:hidden}.card--soft .bar,.tint-mint .bar{background:var(--surface)}.bar>i{display:block;height:100%;min-width:0;border-radius:var(--r-pill);background:var(--primary);animation:bar-fill .6s cubic-bezier(.22,1,.36,1);transform-origin:right center}@keyframes bar-fill{0%{transform:scaleX(0)}to{transform:none}}.segs{display:flex;gap:4px;flex:1;min-width:0}.segs>i{flex:1;height:6px;border-radius:var(--r-pill);background:var(--track);transition:background .2s ease}.segs--thick>i{height:8px}.segs>i.done{background:var(--primary)}.segs>i.now{background:var(--green-light)}.card .segs>i:not(.done):not(.now){background:var(--surface-soft)}.steps{display:flex;gap:4px;padding:0}.steps>i{flex:1;height:6px;border-radius:var(--r-pill);background:var(--track);transition:background .2s ease}.steps>i.done{background:var(--primary)}.steps>i.now{background:var(--primary)}.plant{display:inline-grid;place-items:center;width:40px;height:40px;flex:none;border-radius:var(--r-sm);background:var(--surface-soft);font-size:19px}.plant--lg{width:56px;height:56px;font-size:28px;border-radius:16px}.level-tag{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-tiny);font-weight:600;color:var(--primary-strong)}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}.week-strip .wd{font-size:12px;font-weight:500;color:var(--ink-soft);margin-bottom:6px;display:block}.week-strip .dot{width:36px;height:36px;margin:0 auto;display:grid;place-items:center;border-radius:var(--r-pill);background:#fff9;color:#fff;font-size:14px;font-weight:700}.week-strip .dot--done{background:var(--primary)}.week-strip .dot--today{background:var(--surface);box-shadow:inset 0 0 0 2px var(--primary);color:var(--primary-strong)}.week-strip .dot--planned{background:transparent;border:1.5px dashed var(--primary)}.week-strip .dot--missed{background:var(--yellow-soft);color:var(--yellow-ink)}.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.cat-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:84px;padding:12px 6px;border-radius:var(--r-md);font-size:13px;font-weight:600;transition:transform .12s ease-out}.cat-tile .ce{font-size:24px;line-height:1}.cat-tile:active{transform:scale(.96)}.media{position:relative;border-radius:var(--r-xl);overflow:hidden;background:#eef0ea}.media--square{aspect-ratio:1}.art{position:relative;display:grid;place-items:center;overflow:hidden;isolation:isolate}.art:before,.art:after{content:"";position:absolute;border-radius:var(--r-pill);background:#ffffff73;z-index:-1}.art:before{width:62%;aspect-ratio:1;inset-inline-end:-12%;top:-30%}.art:after{width:34%;aspect-ratio:1;inset-inline-start:8%;bottom:-14%;background:#ffffff4d}.art .ae{font-size:64px;line-height:1;filter:drop-shadow(0 8px 16px rgba(49,92,60,.12))}.media-pill{position:absolute;padding:5px 12px;border-radius:var(--r-pill);background:var(--bg);color:var(--primary-strong);font-size:13px;font-weight:600}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.stat-tile{border-radius:var(--r-md);padding:16px}.stat-tile .v{font-size:26px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;display:block}.stat-tile .l{font-size:13px;display:block;margin-top:4px}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.tiny{font-size:var(--fs-tiny)}.eyebrow{font-size:var(--fs-micro);font-weight:600;letter-spacing:.06em;color:var(--ink-soft)}.eyebrow--green{color:#3f8f57}.center{text-align:center}.stack>*+*{margin-top:var(--sp-4)}.stack-sm>*+*{margin-top:var(--sp-2)}.stack-lg>*+*{margin-top:var(--sp-6)}.row{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.grow{flex:1;min-width:0}.wrap{flex-wrap:wrap}.ltr{direction:ltr;unicode-bidi:isolate}.divider{height:1px;background:#315c3c1a;border:none}.safety-note{background:var(--warn-bg);border-radius:var(--r-md);padding:var(--sp-4);color:var(--warn-ink);font-size:var(--fs-small);line-height:1.55}.safety-note--stop{background:var(--pink-soft);color:var(--danger-ink)}.safety-note strong{color:inherit}.note{background:var(--surface-soft);border-radius:var(--r-md);padding:var(--sp-4);color:var(--primary-strong);font-size:var(--fs-small);line-height:1.55}.cue{background:var(--bg);border-radius:var(--r-sm);padding:8px 12px;font-size:13px;color:var(--ink)}.cue-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r-pill);background:var(--surface);font-size:13px;color:var(--ink)}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--max-w);height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding:8px 12px env(safe-area-inset-bottom);display:flex;background:var(--surface);border-top:1px solid var(--line);z-index:50}.tabbar a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:12px;font-weight:400;color:var(--ink-faint);position:relative;isolation:isolate}.tabbar a .ti{width:56px;height:32px;line-height:0;display:grid;place-items:center;border-radius:var(--r-pill);color:var(--ink-faint);transition:color .18s ease,background .18s ease}.tabbar a.active{color:var(--primary-strong);font-weight:600}.tabbar a.active .ti{color:var(--primary-strong);background:var(--surface-soft);animation:tab-pop .32s cubic-bezier(.22,1,.36,1)}@keyframes tab-pop{0%{transform:scale(.85)}55%{transform:scale(1.06)}to{transform:none}}.sticky-cta{position:sticky;bottom:0;z-index:10;padding:28px var(--page-x) calc(env(safe-area-inset-bottom) + 20px);background:linear-gradient(to top,var(--bg) 60%,color-mix(in srgb,var(--bg) 0%,transparent))}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.06)}to{transform:scale(1);opacity:1}}@keyframes grow-in{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes float-up{0%{transform:translateY(0);opacity:1}to{transform:translateY(-40px);opacity:0}}@keyframes shape-drift{0%{transform:translateY(-14px);opacity:0}to{transform:none;opacity:1}}@keyframes leaf-fall{0%{transform:translateY(-10px) rotate(0);opacity:0}10%{opacity:1}to{transform:translateY(320px) rotate(220deg);opacity:0}}.pop{animation:pop .4s cubic-bezier(.22,1,.36,1)}@keyframes check-draw-kf{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.check-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:check-draw-kf .45s .1s cubic-bezier(.65,0,.35,1) forwards}.check-badge{display:grid;place-items:center;width:96px;height:96px;border-radius:var(--r-pill);background:var(--primary);color:#fff;box-shadow:0 0 0 12px #6fbe8338;animation:pop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes burst-ring{0%{transform:scale(.6);opacity:.55}to{transform:scale(1.9);opacity:0}}.burst{position:relative}.burst:after{content:"";position:absolute;inset:-4px;border-radius:inherit;border:2px solid var(--green-light);animation:burst-ring .9s ease-out forwards;pointer-events:none}.confetti-leaf{position:absolute;top:0;font-size:20px;animation:leaf-fall 2.4s ease-in forwards;pointer-events:none}.shape{position:absolute;border-radius:var(--r-pill);animation:shape-drift 1.2s ease-out both;pointer-events:none}.shape--sq{border-radius:4px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.check-draw{stroke-dashoffset:0}}.live{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);padding:calc(env(safe-area-inset-top) + var(--sp-4)) var(--page-x) calc(env(safe-area-inset-bottom) + var(--sp-5))}.live h2{font-family:var(--font-display);font-weight:700;font-size:30px;line-height:1.1}.live-timer{font-size:var(--fs-timer);font-weight:600;line-height:1.05;color:var(--primary-strong);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}.live-ring{width:min(240px,72vw);min-height:150px;padding:var(--sp-4);display:grid;place-items:center;border-radius:var(--r-pill)}.ring{position:relative;display:grid;place-items:center;flex:none}.ring svg{position:absolute;inset:0;transform:scaleX(-1) rotate(-90deg)}.ring .ring-track{stroke:var(--surface-soft)}.ring .ring-fill{stroke:var(--primary);stroke-linecap:round;transition:stroke-dashoffset .6s ease-out}.ring .ring-val{position:relative;font-weight:600;color:var(--primary-strong);font-variant-numeric:tabular-nums;direction:ltr}.empty{text-align:center;padding:var(--sp-10) var(--sp-6);color:var(--ink-soft)}.empty .big{font-size:44px;width:96px;height:96px;margin:0 auto var(--sp-4);display:grid;place-items:center;border-radius:28px;background:var(--surface-soft)}.empty h3{font-family:var(--font-display);font-weight:700;font-size:24px}.hscroll{display:flex;gap:var(--sp-3);overflow-x:auto;scroll-snap-type:x mandatory;margin:0 calc(var(--page-x) * -1);padding:var(--sp-1) var(--page-x);scroll-padding:0 var(--page-x);-webkit-overflow-scrolling:touch}.hscroll::-webkit-scrollbar{display:none}.hscroll>*{scroll-snap-align:start;flex:0 0 auto}.journey{position:relative;padding-inline-start:32px}.journey:before{content:"";position:absolute;inset-inline-start:9px;top:12px;bottom:12px;width:2px;border-radius:2px;background:var(--surface-soft)}.journey-node{position:relative;padding:var(--sp-2) 0 var(--sp-4)}.journey-node:before{content:"";position:absolute;inset-inline-start:-32px;top:10px;width:20px;height:20px;border-radius:var(--r-pill);background:var(--surface);border:2px solid var(--surface-soft)}.journey-node.done:before{background:var(--green-light);border-color:var(--green-light)}.journey-node.current:before{background:var(--primary);border-color:var(--primary);box-shadow:0 0 0 5px var(--surface-soft)}.cal-day{aspect-ratio:1;display:grid;place-items:center;border-radius:var(--r-pill);font-size:14px;font-variant-numeric:tabular-nums}.cal-day{border:2px solid transparent;color:var(--ink);background:transparent;width:100%;min-width:0}.cal-day--today{background:var(--surface);font-weight:600;color:var(--primary-strong);box-shadow:inset 0 0 0 2px var(--primary)}.cal-day--done{background:var(--primary);color:#fff;font-weight:600}.cal-day--missed{background:var(--yellow-soft);color:var(--warn);font-weight:600}.cal-day--planned{border:1.5px dashed var(--primary)}.cal-day--sel{border:2px solid var(--primary-strong)}.welcome{background:var(--bg)}.welcome-mark{width:148px;height:148px;margin:0 auto;display:grid;place-items:center;border-radius:44px;background:var(--surface-soft);animation:pop .5s cubic-bezier(.22,1,.36,1)}.welcome-word{font-size:44px;font-weight:800;letter-spacing:.08em;direction:ltr}.onboarding-step>.eyebrow+h2{margin-top:6px}.onboarding-step>h2{font-family:var(--font-display);font-weight:700;font-size:34px;line-height:1.1}.onboarding-step>h2+p.muted{font-size:16px;margin-top:8px}.onboarding-step .stack-sm>.option+.option{margin-top:12px}.card--soft .segs>i:not(.done):not(.now),.tint-mint .segs>i:not(.done):not(.now){background:var(--surface)}.exanim{display:grid;place-items:center;margin:0 auto}.exanim-svg{width:100%;height:100%;overflow:visible}.exanim-video{width:100%;height:100%;object-fit:contain;display:block}.exanim-svg *,.exanim-svg g,.exanim-svg line,.exanim-svg circle,.exanim-svg path{transform-box:view-box}.ex-ground{stroke:var(--line-green);stroke-width:2.5;stroke-linecap:round}.ex-sprout{fill:var(--primary-light);transform-origin:80px 140px;animation:ex-sway 3.5s ease-in-out infinite}@keyframes ex-sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.exanim-svg .seg{stroke:var(--primary-light);stroke-width:7.5;stroke-linecap:round;fill:none}.exanim-svg .seg.near{stroke:var(--primary-strong)}.exanim-svg .spine{stroke:var(--primary-strong);stroke-width:10;stroke-linecap:round;fill:none}.exanim-svg .foot{stroke:var(--primary-strong);stroke-width:6;stroke-linecap:round}.exanim-svg .foot:not(.near){stroke:var(--primary-light)}.exanim-svg .head{fill:var(--primary)}.fig,.pbody,.sbody,.spbody{transform-box:view-box}.ankleNear,.shinNear{transform-origin:80px 138px}.thighNear{transform-origin:80px 112px}.pelvis,.torso,.thighFar{transform-origin:80px 86px}.shinFar{transform-origin:80px 112px}.upperNear,.upperFar{transform-origin:80px 52px}.foreNear,.foreFar{transform-origin:80px 72px}.exanim-svg .thighFar{transform:rotate(0)}@media(prefers-reduced-motion:reduce){.exanim-svg *{animation-duration:1ms!important}}.ex-squat .shinNear{animation:sq-shin 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .thighNear{animation:sq-thigh 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .torso{animation:sq-torso 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .thighFar{animation:sq-thighFar 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .shinFar{animation:sq-shinFar 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .upperNear,.ex-squat .upperFar{animation:sq-arm 2.6s cubic-bezier(.5,0,.5,1) infinite}.ex-squat .foreNear,.ex-squat .foreFar{transform:rotate(24deg)}@keyframes sq-shin{0%,8%,to{transform:rotate(0)}50%{transform:rotate(40deg)}}@keyframes sq-thigh{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-92deg)}}@keyframes sq-torso{0%,8%,to{transform:rotate(0)}50%{transform:rotate(46deg)}}@keyframes sq-thighFar{0%,8%,to{transform:rotate(0)}50%{transform:rotate(50deg)}}@keyframes sq-shinFar{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-80deg)}}@keyframes sq-arm{0%,8%,to{transform:rotate(0)}50%{transform:rotate(74deg)}}.ex-calf .fig{animation:calf-fig 1.5s ease-in-out infinite}.ex-calf .foot,.ex-calf .foot.near{animation:calf-foot 1.5s ease-in-out infinite;transform-origin:80px 138px}.ex-calf .foreNear,.ex-calf .foreFar{transform:rotate(150deg)}@keyframes calf-fig{0%,to{transform:translateY(0)}45%{transform:translateY(-13px)}}@keyframes calf-foot{0%,to{transform:rotate(0)}45%{transform:rotate(44deg)}}.ex-hinge .torso{animation:hinge-torso 2.8s ease-in-out infinite}.ex-hinge .thighNear,.ex-hinge .thighFar{animation:hinge-thigh 2.8s ease-in-out infinite}.ex-hinge .shinNear,.ex-hinge .shinFar{animation:hinge-shin 2.8s ease-in-out infinite}.ex-hinge .armNear,.ex-hinge .armFar{animation:hinge-arm 2.8s ease-in-out infinite;transform-origin:80px 52px}@keyframes hinge-torso{0%,7%,to{transform:rotate(0)}50%{transform:rotate(76deg)}}@keyframes hinge-thigh{0%,7%,to{transform:rotate(0)}50%{transform:rotate(-8deg)}}@keyframes hinge-shin{0%,7%,to{transform:rotate(0)}50%{transform:rotate(8deg)}}@keyframes hinge-arm{0%,7%,to{transform:rotate(0)}50%{transform:rotate(-12deg)}}.ex-lunge .shinNear{animation:lg-shinFront 2.8s ease-in-out infinite}.ex-lunge .thighNear{animation:lg-thighFront 2.8s ease-in-out infinite}.ex-lunge .thighFar{animation:lg-thighBack 2.8s ease-in-out infinite}.ex-lunge .shinFar{animation:lg-shinBack 2.8s ease-in-out infinite}.ex-lunge .torso{animation:lg-torso 2.8s ease-in-out infinite}@keyframes lg-torso{0%,8%,to{transform:rotate(0)}50%{transform:rotate(3deg)}}@keyframes lg-shinFront{0%,8%,to{transform:rotate(0)}50%{transform:rotate(26deg)}}@keyframes lg-thighFront{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-34deg)}}@keyframes lg-thighBack{0%,8%,to{transform:rotate(0)}50%{transform:rotate(90deg)}}@keyframes lg-shinBack{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-96deg)}}.ex-row .torso{transform:rotate(56deg)}.ex-row .thighNear,.ex-row .thighFar{transform:rotate(-6deg)}.ex-row .shinNear,.ex-row .shinFar{transform:rotate(6deg)}.ex-row .upperNear,.ex-row .upperFar{animation:row-upper 1.9s ease-in-out infinite}.ex-row .foreNear,.ex-row .foreFar{animation:row-fore 1.9s ease-in-out infinite}.ex-row .upperFar,.ex-row .foreFar{animation-delay:-.05s}@keyframes row-upper{0%,to{transform:rotate(6deg)}50%{transform:rotate(-46deg)}}@keyframes row-fore{0%,to{transform:rotate(2deg)}50%{transform:rotate(34deg)}}.ex-press .upperNear{transform-origin:80px 52px;animation:pr-upN 1.9s ease-in-out infinite}.ex-press .upperFar{transform-origin:80px 52px;animation:pr-upF 1.9s ease-in-out infinite}.ex-press .foreNear{transform-origin:80px 72px;animation:pr-foN 1.9s ease-in-out infinite}.ex-press .foreFar{transform-origin:80px 72px;animation:pr-foF 1.9s ease-in-out infinite}@keyframes pr-upN{0%,to{transform:rotate(205deg)}50%{transform:rotate(216deg)}}@keyframes pr-upF{0%,to{transform:rotate(155deg)}50%{transform:rotate(144deg)}}@keyframes pr-foN{0%,to{transform:rotate(58deg)}50%{transform:rotate(2deg)}}@keyframes pr-foF{0%,to{transform:rotate(-58deg)}50%{transform:rotate(-2deg)}}.ex-pullapart .upperNear{transform-origin:80px 52px;animation:pa-near 2s ease-in-out infinite}.ex-pullapart .upperFar{transform-origin:80px 52px;animation:pa-far 2s ease-in-out infinite}.ex-pullapart .foreNear,.ex-pullapart .foreFar{transform:rotate(0)}@keyframes pa-near{0%,to{transform:rotate(272deg)}50%{transform:rotate(230deg)}}@keyframes pa-far{0%,to{transform:rotate(268deg)}50%{transform:rotate(310deg)}}.ex-walk .torso{transform:rotate(7deg)}.ex-walk .shinNear{animation:wk-stance 1.05s ease-in-out infinite}.ex-walk .thighNear{animation:wk-stanceT 1.05s ease-in-out infinite}.ex-walk .thighFar{animation:wk-swingT 1.05s ease-in-out infinite}.ex-walk .shinFar{animation:wk-swingS 1.05s ease-in-out infinite}.ex-walk .foreFar{transform:rotate(4deg)}.ex-walk .upperNear{animation:wk-armN 1.05s ease-in-out infinite}.ex-walk .upperFar{animation:wk-armF 1.05s ease-in-out infinite}.ex-walk .pelvis{animation:wk-bob .525s ease-in-out infinite}@keyframes wk-stance{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes wk-stanceT{0%,to{transform:rotate(6deg)}50%{transform:rotate(-6deg)}}@keyframes wk-swingT{0%,to{transform:rotate(28deg)}50%{transform:rotate(-30deg)}}@keyframes wk-swingS{0%,to{transform:rotate(-4deg)}25%{transform:rotate(-46deg)}60%{transform:rotate(0)}}@keyframes wk-armN{0%,to{transform:rotate(-20deg)}50%{transform:rotate(20deg)}}@keyframes wk-armF{0%,to{transform:rotate(20deg)}50%{transform:rotate(-20deg)}}@keyframes wk-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5px)}}.ex-run .torso{transform:rotate(14deg)}.ex-run .fig{animation:rn-bounce .62s ease-in-out infinite}.ex-run .shinNear{animation:rn-stance .62s ease-in-out infinite}.ex-run .thighFar{animation:rn-swingT .62s ease-in-out infinite}.ex-run .shinFar{animation:rn-swingS .62s ease-in-out infinite}.ex-run .foreNear,.ex-run .foreFar{transform:rotate(78deg)}.ex-run .upperNear{animation:rn-armN .62s ease-in-out infinite}.ex-run .upperFar{animation:rn-armF .62s ease-in-out infinite}@keyframes rn-bounce{0%,to{transform:translateY(0)}30%{transform:translateY(-7px)}65%{transform:translateY(1px)}}@keyframes rn-stance{0%,to{transform:rotate(-8deg)}50%{transform:rotate(10deg)}}@keyframes rn-swingT{0%,to{transform:rotate(56deg)}50%{transform:rotate(-34deg)}}@keyframes rn-swingS{0%,to{transform:rotate(-70deg)}50%{transform:rotate(-6deg)}}@keyframes rn-armN{0%,to{transform:rotate(-46deg)}50%{transform:rotate(40deg)}}@keyframes rn-armF{0%,to{transform:rotate(40deg)}50%{transform:rotate(-46deg)}}.pbody{transform-box:view-box}.parm,.pupper{transform-origin:98px 88px}.pfore{transform-origin:96px 112px}.ex-pushup .pbody{animation:pu-body 2.2s ease-in-out infinite;transform-origin:30px 126px}.ex-pushup .pupper{animation:pu-upper 2.2s ease-in-out infinite}.ex-pushup .pfore{animation:pu-fore 2.2s ease-in-out infinite}@keyframes pu-body{0%,8%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(16px) rotate(2deg)}}@keyframes pu-upper{0%,8%,to{transform:rotate(0)}50%{transform:rotate(46deg)}}@keyframes pu-fore{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-46deg)}}.ex-plank .pbody{animation:pl-breath 3.6s ease-in-out infinite;transform-origin:60px 92px}@keyframes pl-breath{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5px)}}.ex-pike .pbody{transform:rotate(-30deg);transform-origin:96px 90px}.ex-pike .pupper{animation:pu-upper 2.2s ease-in-out infinite}.ex-pike .pfore{animation:pu-fore 2.2s ease-in-out infinite}.sbody{transform-box:view-box}.sthigh{transform-origin:86px 122px}.sshin{transform-origin:104px 102px}.sarm{transform-origin:48px 122px}.ex-bridge .sbody{animation:br-lift 2.6s ease-in-out infinite;transform-origin:44px 122px}.ex-bridge .sshin{animation:br-shin 2.6s ease-in-out infinite}.ex-bridge .sarm{transform:rotate(96deg)}@keyframes br-lift{0%,12%,to{transform:rotate(0)}50%{transform:rotate(-15deg)}}@keyframes br-shin{0%,12%,to{transform:rotate(0)}50%{transform:rotate(28deg)}}.ex-situp .sbody{animation:si-curl 2.4s ease-in-out infinite;transform-origin:92px 122px}.ex-situp .sarm{transform:rotate(0)}@keyframes si-curl{0%,8%,to{transform:rotate(0)}50%{transform:rotate(-42deg)}}.ex-deadbug .sarm{animation:db-arm 2.6s ease-in-out infinite}.ex-deadbug .sthigh{animation:db-thigh 2.6s ease-in-out infinite}.ex-deadbug .sshin{animation:db-shin 2.6s ease-in-out infinite}.ex-deadbug .sthigh{transform:rotate(-64deg)}@keyframes db-arm{0%,to{transform:rotate(0)}50%{transform:rotate(74deg)}}@keyframes db-thigh{0%,to{transform:rotate(-64deg)}50%{transform:rotate(-18deg)}}@keyframes db-shin{0%,to{transform:rotate(0)}50%{transform:rotate(-30deg)}}.qarm{transform-origin:58px 92px}.qleg{transform-origin:100px 92px}.ex-birddog .qarm{animation:bd-arm 3s ease-in-out infinite}.ex-birddog .qleg{animation:bd-leg 3s ease-in-out infinite}@keyframes bd-arm{0%,15%,to{transform:rotate(74deg)}45%,60%{transform:rotate(0)}}@keyframes bd-leg{0%,15%,to{transform:rotate(-66deg)}45%,60%{transform:rotate(0)}}.spbody{transform-box:view-box}.sptop{transform-origin:80px 118px}.ex-sideplank .spbody{animation:sp-hold 3.4s ease-in-out infinite;transform-origin:44px 128px}.ex-sideplank .sptop{animation:sp-arm 3.4s ease-in-out infinite}@keyframes sp-hold{0%,to{transform:rotate(0)}50%{transform:rotate(-3deg)}}@keyframes sp-arm{0%,to{transform:rotate(0)}50%{transform:rotate(-8deg)}}.ex-catcow .fig{animation:cc-arch 3.6s ease-in-out infinite;transform-origin:79px 92px}.ex-catcow .head{animation:cc-head 3.6s ease-in-out infinite;transform-origin:48px 90px}@keyframes cc-arch{0%,to{transform:translateY(-3px) scaleY(.96)}50%{transform:translateY(3px) scaleY(1.05)}}@keyframes cc-head{0%,to{transform:rotate(-12deg)}50%{transform:rotate(14deg)}}.media .exanim-video{object-fit:cover}
