@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground:#eef0eb;--raised:#fff;--sunken:#e2e5df;--line:#d3d8d0;--ink:#141a16;--ink-muted:#56605a;--pine:#1f6b4f;--pine-soft:#d6ece1;--on-pine:#fff;--kcal:#e0662f;--kcal-ink:#a83c10;--kcal-soft:#fbe3d6;--protein:#3552c8;--protein-soft:#dde3fa;--over:#b42318;--water:#2a9fd6;--water-soft:#d9eef8;--shadow:0 1px 2px #141a160f, 0 8px 24px #141a160f;--scrim:#141a1661;--f-display:"Bricolage Grotesque Variable", "Figtree Variable", system-ui, sans-serif;--f-sans:"Figtree Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--r-sm:10px;--r-md:16px;--r-lg:24px;--r-pill:999px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#121513;--raised:#1b1f1c;--sunken:#0c0e0d;--line:#2d332f;--ink:#eef2ec;--ink-muted:#9ea8a1;--pine:#5fd3a2;--pine-soft:#183a2d;--on-pine:#0c1a14;--kcal:#ff8a55;--kcal-ink:#ff9d6e;--kcal-soft:#3a2116;--protein:#8ea3ff;--protein-soft:#1d2547;--over:#ff7b6e;--water:#5cc4f0;--water-soft:#14303d;--shadow:0 1px 2px #0000004d;--scrim:#0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#121513;--raised:#1b1f1c;--sunken:#0c0e0d;--line:#2d332f;--ink:#eef2ec;--ink-muted:#9ea8a1;--pine:#5fd3a2;--pine-soft:#183a2d;--on-pine:#0c1a14;--kcal:#ff8a55;--kcal-ink:#ff9d6e;--kcal-soft:#3a2116;--protein:#8ea3ff;--protein-soft:#1d2547;--over:#ff7b6e;--water:#5cc4f0;--water-soft:#14303d;--shadow:0 1px 2px #0000004d;--scrim:#0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--ground)}body{color:var(--ink);font-family:var(--f-sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:15px;line-height:22px}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--ground);position:fixed;inset:0 0 auto}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--pine);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.app{max-width:520px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));padding-block:20px calc(150px + env(safe-area-inset-bottom,0px));gap:var(--s6);flex-direction:column;margin:0 auto;display:flex}.top{justify-content:space-between;align-items:flex-end;gap:var(--s3);display:flex}.top .eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-size:12px;font-weight:600;line-height:16px}.top h1{font-family:var(--f-display);letter-spacing:-.02em;text-wrap:balance;margin:2px 0 0;font-size:34px;font-weight:700;line-height:38px}.daynav{gap:var(--s2);display:flex}.iconbtn{border-radius:var(--r-pill);background:var(--raised);width:44px;height:44px;box-shadow:var(--shadow);place-items:center;display:grid}.iconbtn:disabled{opacity:.35;cursor:default}.iconbtn svg{width:20px;height:20px}.chip-btn{height:44px;padding:0 var(--s4);border-radius:var(--r-pill);background:var(--raised);box-shadow:var(--shadow);font-size:13px;font-weight:600}.hero{background:var(--raised);border-radius:var(--r-lg);padding:var(--s6) var(--s4);gap:var(--s6);box-shadow:var(--shadow);grid-template-columns:auto 1fr;align-items:center;display:grid}.ring{width:148px;height:148px;position:relative}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring .track{fill:none;stroke:var(--sunken)}.ring .bar{fill:none;stroke-linecap:round;transition:stroke-dasharray .5s cubic-bezier(.2,.8,.2,1)}.ring .center{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.ring .big{font-family:var(--f-display);letter-spacing:-.03em;font-size:44px;font-weight:700;line-height:44px}.ring .big small{letter-spacing:0;font-size:20px;font-weight:600}.ring .sub{color:var(--ink-muted);margin-top:2px;font-size:12px;font-weight:500;line-height:16px}.hero-side{gap:var(--s3);flex-direction:column;min-width:0;display:flex}.hero-side .msg{font-family:var(--f-display);letter-spacing:-.01em;text-wrap:balance;font-size:20px;font-weight:600;line-height:25px}.stat-line{align-items:baseline;gap:var(--s1);color:var(--ink-muted);font-size:13px;line-height:18px;display:flex}.stat-line b{color:var(--ink);font-size:15px;font-weight:700}.pill{border-radius:var(--r-pill);background:var(--pine-soft);color:var(--ink);align-self:flex-start;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;line-height:16px;display:inline-flex}.pill .dot{background:var(--pine);border-radius:50%;width:8px;height:8px}.pill.warn{background:var(--kcal-soft)}.pill.warn .dot{background:var(--over)}.sec{gap:var(--s3);flex-direction:column;display:flex}.sec-h{justify-content:space-between;align-items:baseline;gap:var(--s3);display:flex}.sec-h h2{font-family:var(--f-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:700;line-height:28px}.sec-h .meta{color:var(--ink-muted);font-size:13px;font-weight:500}.link{color:var(--pine);min-height:32px;font-size:13px;font-weight:600}.habits{gap:var(--s2);flex-direction:column;display:flex}.habit{align-items:center;gap:var(--s3);background:var(--raised);border-radius:var(--r-md);padding:var(--s3) var(--s3) var(--s3) var(--s4);min-height:64px;box-shadow:var(--shadow);grid-template-columns:1fr auto;transition:background .2s;display:grid}.habit.done{background:var(--pine-soft);box-shadow:none}.habit-main{align-items:center;gap:var(--s3);text-align:left;min-width:0;min-height:44px;display:flex}.check{border:2px solid var(--line);border-radius:50%;flex:none;place-items:center;width:28px;height:28px;transition:all .2s;display:grid}.habit.done .check{background:var(--pine);border-color:var(--pine);color:var(--on-pine)}.check svg{opacity:0;width:16px;height:16px}.habit.done .check svg{opacity:1}.habit-name{overflow-wrap:anywhere;font-weight:600;line-height:20px}.habit-sub{color:var(--ink-muted);font-size:12px;font-weight:500;line-height:16px}.habit-ctrl{align-items:center;gap:var(--s2);display:flex}.dots{gap:5px;display:flex}.dots i{background:var(--sunken);border-radius:50%;width:10px;height:10px;display:block}.dots i.on{background:var(--pine)}.mini{background:var(--sunken);border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.habit.done .mini{background:var(--raised)}.mini svg{width:16px;height:16px}.rest{color:var(--ink-muted);padding:var(--s2) var(--s1);font-size:13px}.nutri{background:var(--raised);border-radius:var(--r-lg);padding:var(--s4);box-shadow:var(--shadow);gap:var(--s4);grid-template-columns:1fr 1fr;display:grid}.macro{gap:var(--s2);flex-direction:column;min-width:0;display:flex}.macro .lbl{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-size:12px;font-weight:600;line-height:16px}.macro .val{font-family:var(--f-display);letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:32px}.macro .val small{font-family:var(--f-sans);color:var(--ink-muted);letter-spacing:0;margin-left:3px;font-size:13px;font-weight:500}.macro.k .val{color:var(--kcal-ink)}.macro.p .val{color:var(--protein)}.macro.k.over .val{color:var(--over)}.track-h{border-radius:var(--r-pill);background:var(--sunken);height:10px;overflow:hidden}.track-h span{border-radius:var(--r-pill);height:100%;transition:width .5s cubic-bezier(.2,.8,.2,1);display:block}.macro.k .track-h span{background:var(--kcal)}.macro.k.over .track-h span{background:var(--over)}.macro.p .track-h span{background:var(--protein)}.macro .rem{color:var(--ink-muted);font-size:13px;line-height:18px}.macro .rem b{color:var(--ink);font-weight:600}.meals{background:var(--raised);border-radius:var(--r-lg);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.meal{gap:var(--s3);padding:var(--s3) var(--s2) var(--s3) var(--s4);border-top:1px solid var(--line);grid-template-columns:1fr auto auto;align-items:center;display:grid}.meal:first-child{border-top:0}.meal-name{overflow-wrap:anywhere;min-width:0;font-weight:600;line-height:20px}.meal-time{color:var(--ink-muted);font-size:12px;line-height:16px}.meal-nums{gap:var(--s2);font-size:13px;font-weight:600;display:flex}.tag{border-radius:var(--r-pill);white-space:nowrap;padding:3px 8px;line-height:16px}.tag.k{background:var(--kcal-soft);color:var(--kcal-ink)}.tag.p{background:var(--protein-soft);color:var(--protein)}.del{width:40px;height:40px;color:var(--ink-muted);border-radius:50%;place-items:center;display:grid}.del svg{width:18px;height:18px}.empty{background:var(--raised);border-radius:var(--r-lg);padding:var(--s6) var(--s4);text-align:center;color:var(--ink-muted);border:1.5px dashed var(--line);font-size:14px}.empty b{color:var(--ink);margin-bottom:4px;font-size:15px;display:block}.fab{right:max(16px, calc(env(safe-area-inset-right,0px) + 16px));bottom:calc(84px + env(safe-area-inset-bottom,0px));border-radius:var(--r-pill);background:var(--pine);height:56px;color:var(--on-pine);z-index:20;align-items:center;gap:8px;padding:0 22px 0 18px;font-weight:700;display:flex;position:fixed;box-shadow:0 6px 20px #143c2847}.fab svg{width:22px;height:22px}@media (min-width:560px){.fab{right:calc(50% - 244px)}}.nav{z-index:30;background:var(--raised);border-top:1px solid var(--line);padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));padding-top:6px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));position:fixed;bottom:0;left:0;right:0}.nav-in{gap:var(--s2);grid-template-columns:repeat(3,1fr);max-width:520px;margin:0 auto;display:grid}.nav button{border-radius:var(--r-md);color:var(--ink-muted);flex-direction:column;align-items:center;gap:2px;min-height:52px;padding:6px 0;font-size:12px;font-weight:600;display:flex}.nav button svg{width:24px;height:24px}.nav button[aria-current=page]{color:var(--pine)}.nav button[aria-current=page] .ic{background:var(--pine-soft)}.nav .ic{border-radius:var(--r-pill);place-items:center;width:56px;height:30px;transition:background .2s;display:grid}.monthnav{align-items:center;gap:var(--s2);display:flex}.tiles{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.tile{background:var(--raised);border-radius:var(--r-md);padding:var(--s3) var(--s4);box-shadow:var(--shadow);flex-direction:column;gap:2px;min-width:0;display:flex}.tile .lbl{color:var(--ink-muted);font-size:12px;font-weight:600;line-height:16px}.tile .v{font-family:var(--f-display);letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:32px}.tile .v small{font-family:var(--f-sans);color:var(--ink-muted);letter-spacing:0;margin-left:3px;font-size:13px;font-weight:500}.tile .v.k{color:var(--kcal-ink)}.tile .v.p{color:var(--protein)}.tile .v.g{color:var(--pine)}.card{background:var(--raised);border-radius:var(--r-lg);padding:var(--s4);box-shadow:var(--shadow);gap:var(--s3);flex-direction:column;display:flex}.card h3{margin:0;font-size:17px;font-weight:600;line-height:24px}.card .hint{color:var(--ink-muted);margin-top:-8px;font-size:13px;line-height:18px}.cal{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.cal .wd{color:var(--ink-muted);text-align:center;letter-spacing:.04em;padding-bottom:2px;font-size:11px;font-weight:600}.cal button{aspect-ratio:1;border-radius:var(--r-sm);background:var(--sunken);max-width:100%;color:var(--ink-muted);isolation:isolate;place-items:center;font-size:12px;font-weight:600;display:grid;position:relative;overflow:hidden}.cal button:before{content:"";background:var(--pine);opacity:0;z-index:-1;position:absolute;inset:0}.cal button.l1:before{opacity:.22}.cal button.l2:before{opacity:.5}.cal button.l3:before{opacity:1}.cal button.l1,.cal button.l2{color:var(--ink)}.cal button.l3{color:var(--on-pine)}.cal button.today{box-shadow:inset 0 0 0 2px var(--ink)}.cal button.future{border:1px dashed var(--line);cursor:default;background:0 0}.cal .pad{visibility:hidden}.legend{color:var(--ink-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.legend i{background:var(--sunken);border-radius:4px;width:14px;height:14px;display:inline-block;position:relative;overflow:hidden}.legend i:before{content:"";background:var(--pine);position:absolute;inset:0}.legend i.l0:before{opacity:0}.legend i.l1:before{opacity:.22}.legend i.l2:before{opacity:.5}.legend i.l3:before{opacity:1}.chart{width:100%;height:auto;display:block;overflow:visible}.chart text{fill:var(--ink-muted);font-family:var(--f-sans);font-size:10px;font-weight:500}.chart .grid{stroke:var(--line);stroke-width:1px}.chart .tgt{stroke:var(--ink);stroke-width:1.5px;stroke-dasharray:4 4}.chart .tgt-l{fill:var(--ink);font-weight:700}.chart .bk{fill:var(--kcal)}.chart .bo{fill:var(--over)}.chart .bp{fill:var(--protein)}.chart .none{fill:var(--sunken)}.hr-list{gap:var(--s3);flex-direction:column;display:flex}.hr{gap:var(--s3);grid-template-columns:minmax(0,1fr) 48px;align-items:center;display:grid}.hr .n{overflow-wrap:anywhere;font-size:14px;font-weight:600;line-height:18px}.hr .p{text-align:right;font-size:14px;font-weight:700}.hr .track-h{grid-column:1/-1;height:8px}.hr .track-h span{background:var(--pine)}.set-list{gap:var(--s2);flex-direction:column;display:flex}.set-habit{background:var(--raised);border-radius:var(--r-md);padding:var(--s3);gap:var(--s3);box-shadow:var(--shadow);flex-direction:column;display:flex}.row{align-items:center;gap:var(--s2);display:flex}.field{width:100%;min-width:0;height:44px;padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--ground);font-size:16px}.field:focus{outline:2px solid var(--pine);outline-offset:0;border-color:#0000}.stepper{flex:none;align-items:center;gap:6px;display:flex}.stepper .mini{background:var(--sunken)}.stepper output{text-align:center;min-width:46px;font-size:14px;font-weight:700}.days{flex-wrap:wrap;gap:5px;display:flex}.days button{border-radius:var(--r-pill);background:var(--sunken);width:38px;height:36px;color:var(--ink-muted);font-size:12px;font-weight:700}.days button[aria-pressed=true]{background:var(--pine);color:var(--on-pine)}.set-lbl{color:var(--ink-muted);font-size:12px;font-weight:600}.addbtn{border-radius:var(--r-md);border:1.5px dashed var(--line);height:52px;color:var(--pine);justify-content:center;align-items:center;gap:6px;font-weight:700;display:flex}.addbtn svg{width:18px;height:18px}.form-grid{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.form-grid label,.fl{color:var(--ink-muted);flex-direction:column;gap:6px;min-width:0;font-size:13px;font-weight:600;display:flex}.seg{background:var(--sunken);border-radius:var(--r-pill);grid-template-columns:1fr 1fr;padding:3px;display:grid}.seg button{border-radius:var(--r-pill);height:38px;color:var(--ink-muted);font-size:13px;font-weight:600}.seg button[aria-pressed=true]{background:var(--raised);color:var(--ink);box-shadow:var(--shadow)}.note{color:var(--ink-muted);font-size:13px;line-height:19px}.danger{color:var(--over)}.hbar{border-radius:var(--r-pill);background:var(--sunken);grid-column:1/-1;height:6px;margin-top:-2px;overflow:hidden}.hbar span{background:var(--pine);border-radius:var(--r-pill);height:100%;transition:width .4s;display:block}.habit.done .hbar{background:var(--raised)}.play{background:var(--pine);width:44px;height:44px;color:var(--on-pine);border-radius:50%;flex:none;place-items:center;display:grid}.play svg{width:18px;height:18px}.play.on{background:var(--ink);color:var(--ground)}.habit.running{box-shadow:inset 0 0 0 2px var(--pine)}.tm{color:var(--pine);font-weight:700}.tpls{gap:var(--s2);flex-wrap:wrap;display:flex}.tpls button{border-radius:var(--r-pill);background:var(--raised);box-shadow:var(--shadow);align-items:center;gap:6px;min-height:40px;padding:8px 12px;font-size:13px;font-weight:600;display:flex}.tpls button span{color:var(--ink-muted);font-weight:500}.tpls button svg{width:14px;height:14px;color:var(--pine)}.slot-h{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);justify-content:space-between;align-items:baseline;gap:8px;padding:10px 4px 2px;font-size:12px;font-weight:700;line-height:16px;display:flex}.slot-h:first-child{padding-top:0}.slot-h em{color:var(--pine);font-style:normal}.banner{text-align:left;background:var(--pine);width:100%;color:var(--on-pine);border-radius:var(--r-lg);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:600;line-height:20px;display:flex}.banner small{opacity:.85;font-size:13px;font-weight:500;display:block}.banner svg{flex:none;width:20px;height:20px}.focus{background:var(--raised);border-radius:var(--r-md);box-shadow:var(--shadow);flex-direction:column;gap:2px;padding:10px 14px;display:flex}.focus .lbl{letter-spacing:.06em;text-transform:uppercase;color:var(--pine);font-size:11px;font-weight:700}.focus .t{overflow-wrap:anywhere;font-weight:600}.restbtn{color:var(--ink-muted);text-underline-offset:3px;align-self:flex-start;min-height:32px;font-size:13px;font-weight:600;text-decoration:underline}.hero.rest .ring .bar{stroke:var(--line)}.cal button.restd{background:var(--raised);box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink-muted)}.legend i.rs{background:var(--raised);box-shadow:inset 0 0 0 1.5px var(--line)}.legend i.rs:before{opacity:0}.topseg{max-width:280px}.week7{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.week7 button{flex-direction:column;align-items:center;gap:2px;display:flex}.week7 .wd{color:var(--ink-muted);font-size:11px;font-weight:600}.week7 .c{aspect-ratio:1;border-radius:var(--r-sm);background:var(--sunken);width:100%;color:var(--ink-muted);isolation:isolate;place-items:center;font-size:12px;font-weight:700;display:grid;position:relative;overflow:hidden}.week7 .c:before{content:"";background:var(--pine);opacity:0;z-index:-1;position:absolute;inset:0}.week7 .l1 .c:before{opacity:.22}.week7 .l2 .c:before{opacity:.5}.week7 .l3 .c:before{opacity:1}.week7 .l1 .c,.week7 .l2 .c{color:var(--ink)}.week7 .l3 .c{color:var(--on-pine)}.week7 .restd .c{background:var(--raised);box-shadow:inset 0 0 0 1.5px var(--line)}.week7 .fut .c{border:1px dashed var(--line);background:0 0}.callout{border-radius:var(--r-md);flex-direction:column;gap:2px;padding:12px 14px;display:flex}.callout .lbl{letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.callout.good{background:var(--pine-soft)}.callout.good .lbl{color:var(--pine)}.callout.bad{background:var(--kcal-soft)}.callout.bad .lbl{color:var(--kcal-ink)}.callout .t{font-weight:600}.recs{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.rec{background:var(--ground);border-radius:var(--r-md);flex-direction:column;gap:2px;min-width:0;padding:10px 12px;display:flex}.rec .v{font-family:var(--f-display);font-size:24px;font-weight:700;line-height:28px}.rec .v small{font-family:var(--f-sans);color:var(--ink-muted);margin-left:3px;font-size:12px;font-weight:500}.rec .lbl{color:var(--ink-muted);font-size:12px;font-weight:600;line-height:16px}.steps{flex-direction:column;gap:4px;margin:0;padding-left:20px;font-size:14px;line-height:20px;display:flex}.seg4{grid-template-columns:repeat(4,1fr)}.quick button.new svg{width:16px;height:16px}.quick button.new{color:var(--pine);border-style:dashed;align-items:center;font-weight:700;display:flex}.pick{flex-wrap:wrap;gap:6px;display:flex}.pick button{border-radius:var(--r-pill);border:1px solid var(--line);background:var(--ground);min-height:40px;padding:8px 12px;font-size:13px;font-weight:600}.pick button[aria-pressed=true]{background:var(--pine);color:var(--on-pine);border-color:var(--pine)}.combo-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px 0;font-size:14px;display:flex}.combo-row:first-child{border-top:0}.ghost{border-radius:var(--r-pill);border:1px solid var(--line);width:100%;height:48px;font-weight:600}.water{background:var(--raised);border-radius:var(--r-lg);padding:var(--s4);box-shadow:var(--shadow);gap:var(--s3);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.water .val{font-family:var(--f-display);letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:32px}.water .val small{font-family:var(--f-sans);color:var(--ink-muted);letter-spacing:0;margin-left:3px;font-size:13px;font-weight:500}.glasses{margin-top:var(--s2);flex-wrap:wrap;gap:3px;display:flex}.glasses i{background:var(--sunken);border-radius:3px 3px 6px 6px;width:11px;height:20px;display:block}.glasses i.on{background:var(--water)}.wctrl{align-items:center;gap:var(--s2);display:flex}.wbtn{border-radius:var(--r-pill);background:var(--water-soft);height:48px;color:var(--ink);white-space:nowrap;align-items:center;gap:4px;padding:0 16px;font-size:14px;font-weight:700;display:flex}.wbtn svg{width:18px;height:18px}.jrow{justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.scale{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.scale button{border-radius:var(--r-md);background:var(--sunken);height:44px;color:var(--ink-muted);flex-direction:column;justify-content:center;align-items:center;font-weight:700;line-height:16px;display:flex}.scale button small{font-size:10px;font-weight:600;line-height:12px}.scale button[aria-pressed=true]{background:var(--pine);color:var(--on-pine)}textarea.field{resize:vertical;height:auto;min-height:88px;padding:10px 12px;line-height:22px}.notes{flex-direction:column;display:flex}.note-item{padding:var(--s3) 0;border-top:1px solid var(--line);text-align:left;flex-direction:column;gap:4px;width:100%;display:flex}.note-item:first-child{border-top:0;padding-top:0}.note-item .nd{gap:var(--s2);color:var(--ink-muted);align-items:center;font-size:12px;font-weight:600;display:flex}.note-item .nt{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:20px}.chart .lw{fill:none;stroke:var(--ink);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .lw.e{stroke:var(--pine)}.chart .pt{fill:var(--ink)}.chart .pt.e{fill:var(--pine)}.chart .ptl{fill:var(--ink);font-size:11px;font-weight:700}.chart .bw{fill:var(--water)}.chart .bs{fill:var(--ink-muted)}.wk-list{gap:var(--s3);flex-direction:column;display:flex}.wk{flex-direction:column;gap:6px;display:flex}.wk .wn{font-size:14px;font-weight:600}.wk-weeks{flex-wrap:wrap;gap:6px;display:flex}.wk-weeks span{border-radius:var(--r-pill);background:var(--sunken);color:var(--ink-muted);padding:4px 10px;font-size:12px;font-weight:600}.wk-weeks span.met{background:var(--pine);color:var(--on-pine)}.bignum{align-items:baseline;gap:var(--s2);flex-wrap:wrap;display:flex}.bignum b{font-family:var(--f-display);font-size:28px;font-weight:700;line-height:32px}.bignum span{color:var(--ink-muted);font-size:13px;font-weight:500}.scrim{background:var(--scrim);z-index:40;opacity:0;transition:opacity .2s;position:fixed;inset:0}.scrim.open{opacity:1}.sheet{z-index:41;visibility:hidden;pointer-events:none;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s .28s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.sheet.open{visibility:visible;pointer-events:auto;transition:transform .28s cubic-bezier(.2,.8,.2,1);transform:none}.sheet-in{background:var(--raised);border-radius:var(--r-lg) var(--r-lg) 0 0;max-width:520px;padding-top:10px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));gap:var(--s4);max-height:88vh;overscroll-behavior:contain;flex-direction:column;max-height:88dvh;margin:0 auto;display:flex;overflow:auto}.grab{border-radius:var(--r-pill);background:var(--line);width:40px;height:5px;margin:0 auto}.sheet h2{font-family:var(--f-display);margin:0;font-size:22px;font-weight:700;line-height:28px}.quick{gap:var(--s2);padding-bottom:4px;scrollbar-width:none;margin:0 -4px;padding-inline:4px;display:flex;overflow-x:auto}.quick button{text-align:left;border-radius:var(--r-md);background:var(--ground);border:1px solid var(--line);flex:none;max-width:200px;padding:8px 12px}.quick .qn{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;line-height:18px;overflow:hidden}.quick .qv{color:var(--ink-muted);font-size:12px;line-height:16px}.primary{border-radius:var(--r-pill);background:var(--pine);height:52px;color:var(--on-pine);width:100%;font-size:16px;font-weight:700}.primary:disabled{opacity:.45}.toast{left:50%;bottom:calc(150px + env(safe-area-inset-bottom,0px));opacity:0;z-index:50;background:var(--ink);color:var(--ground);border-radius:var(--r-pill);pointer-events:none;align-items:center;gap:12px;max-width:calc(100% - 32px);padding:10px 8px 10px 16px;font-size:14px;font-weight:500;transition:all .25s;display:flex;position:fixed;transform:translate(-50%,20px)}.toast.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.toast button{color:var(--ground);border-radius:var(--r-pill);background:#7f7f7f40;padding:6px 12px;font-weight:700}.toast:not(.has-act){padding-right:16px}.cols,.col,.tgrid{gap:var(--s6);flex-direction:column;min-width:0;display:flex}.nav .brand{display:none}.lock{z-index:100;background:var(--ground);padding:max(24px, env(safe-area-inset-top,0px)) max(16px, env(safe-area-inset-right,0px)) max(24px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow:auto}.lock-in{align-items:center;gap:var(--s4);text-align:center;flex-direction:column;width:100%;max-width:340px;margin-block:auto;display:flex}.lock .logo{font-family:var(--f-display);letter-spacing:-.03em;align-items:center;gap:10px;font-size:40px;font-weight:700;line-height:40px;display:flex}.lock .logo i{border:5px solid var(--pine);border-right-color:var(--sunken);border-radius:50%;width:28px;height:28px;display:block;transform:rotate(-45deg)}.lock h2{font-family:var(--f-display);margin:8px 0 0;font-size:22px;font-weight:700;line-height:28px}.lock .sub{color:var(--ink-muted);text-wrap:balance;margin:-8px 0 0;font-size:14px;line-height:20px}.pin{gap:12px;margin:8px 0;display:flex}.pin i{border:2px solid var(--line);border-radius:50%;width:16px;height:16px;transition:all .15s;display:block}.pin i.on{background:var(--pine);border-color:var(--pine)}.pin.shake{animation:.35s shake}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.lock .err{min-height:20px;color:var(--over);font-size:13px;font-weight:600}.lock .err.busy{color:var(--ink-muted)}.keys{grid-template-columns:repeat(3,72px);justify-content:center;gap:14px;display:grid}.keys button{background:var(--raised);width:72px;height:72px;box-shadow:var(--shadow);font-family:var(--f-display);font-variant-numeric:tabular-nums;border-radius:50%;font-size:28px;font-weight:600}.keys button:active{background:var(--pine-soft)}.keys button.fn{box-shadow:none;font-family:var(--f-sans);color:var(--ink-muted);background:0 0;font-size:13px;font-weight:600}.keys button:disabled{opacity:.4}.keys svg{width:24px;height:24px}.lock .hint2{color:var(--ink-muted);max-width:300px;font-size:12px;line-height:18px}.secrow{gap:var(--s2);flex-wrap:wrap;display:flex}.secrow button{border-radius:var(--r-pill);border:1px solid var(--line);height:44px;padding:0 16px;font-size:14px;font-weight:600}.secrow button.dg{color:var(--over)}@media (min-width:960px){.nav{border-top:0;border-right:1px solid var(--line);width:232px;padding:28px 16px;padding-left:max(16px, env(safe-area-inset-left,0px));top:0;bottom:0;right:auto}.nav-in{flex-direction:column;gap:6px;max-width:none;display:flex}.nav .brand{font-family:var(--f-display);letter-spacing:-.03em;align-items:center;gap:10px;padding:0 10px 24px;font-size:28px;font-weight:700;display:flex}.nav .brand i{border:4px solid var(--pine);border-right-color:var(--sunken);border-radius:50%;width:20px;height:20px;display:block;transform:rotate(-45deg)}.nav button{flex-direction:row;justify-content:flex-start;gap:12px;min-height:48px;padding:10px 12px;font-size:15px}.nav button[aria-current=page]{background:var(--pine-soft);color:var(--ink)}.nav button[aria-current=page] .ic{color:var(--pine);background:0 0}.nav .ic{width:24px;height:24px}.app{max-width:1180px;padding-left:40px;padding-right:max(40px, env(safe-area-inset-right,0px));margin-left:max(232px,50vw - 474px);margin-right:auto;padding-block:40px 64px}.cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:32px;display:grid}.tgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.tgrid>.empty,.tgrid>.wide{grid-column:1/-1}.app>.tiles{grid-template-columns:repeat(6,minmax(0,1fr))}.set-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.top h1{font-size:40px;line-height:44px}.fab{bottom:40px;right:40px}.toast{bottom:40px}.sheet{opacity:0;width:540px;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .22s,visibility 0s .22s;inset:50% auto auto 50%;transform:translate(-50%,-46%)}.sheet.open{opacity:1;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .22s;transform:translate(-50%,-50%)}.sheet-in{border-radius:var(--r-lg);max-height:86vh;max-height:86dvh;padding:24px}.grab{display:none}.topseg{max-width:320px}.habit-main:hover .check{border-color:var(--pine)}.lock-in{max-width:380px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}button,input,select,textarea{font:inherit}.mini,.del,.days button,.link,.restbtn,.tpls button,.pick button,.seg button{min-height:44px}.mini,.del,.days button{min-width:44px}.days{gap:2px}.seg{border-radius:16px}.seg button{padding:0 5px}.app-loading{text-align:center;min-height:80vh;color:var(--ink-muted);place-content:center;display:grid}.sync{color:var(--ink-muted);align-items:center;gap:8px;font-size:12px;display:flex}.sync button{min-height:44px;color:var(--pine);font-weight:600}.field-error{color:var(--over);font-size:13px}.form-actions{gap:12px;display:flex}.sheet-in form{flex-direction:column;gap:16px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}textarea{color:var(--ink);font-family:var(--f-sans)}.chart-card{overflow:hidden}.session{border-top:1px solid var(--line);justify-content:space-between;gap:8px;padding:8px 0;font-size:13px;display:flex}.calendar-button{min-height:36px}.chart-empty,.lock .offline{color:var(--ink-muted);font-size:13px}.lock .offline button{min-height:44px;color:var(--pine)}.monthnav h1{text-transform:capitalize}@media (max-width:380px){.hero{gap:12px}.ring{width:128px;height:128px}.hero-side .msg{font-size:18px}.meal,.meal-nums{gap:4px}.tag{padding:3px 5px}.days button{min-width:36px}.water{grid-template-columns:1fr}.wctrl{justify-content:flex-end}}.seg3{grid-template-columns:repeat(3,1fr)}.field[type=time]{max-width:160px}.row input[type=checkbox]{width:24px;height:24px;accent-color:var(--pine)}.row:has(input[type=checkbox]){min-height:44px}.lock h2{color:var(--ink)}
