:root{--app-bg:#F8F9F5;--app-surface:#fff;--app-line:#E1E6DC;--app-green:var(--dosy-green-900);--app-muted:var(--dosy-muted);color-scheme:light}html{scroll-behavior:smooth}body{margin:0;color:var(--dosy-ink);font-family:var(--dosy-font-ui);line-height:1.6;background:var(--app-bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input{touch-action:manipulation}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:inherit;text-underline-offset:4px}button{color:inherit}img{max-width:100%;object-fit:cover}svg{flex:none;vertical-align:middle}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2.3rem,4.1vw,3.8rem);line-height:1.13;letter-spacing:-.055em;font-weight:500;color:var(--app-green);margin-bottom:22px}h1 em,h2 em{font-family:var(--dosy-font-editorial);font-style:normal;font-weight:400;letter-spacing:-.05em}h2{font-size:1.3rem;letter-spacing:-.035em;line-height:1.3;font-weight:600;color:var(--app-green)}h3{font-weight:600;letter-spacing:-.025em}p{margin-bottom:18px}.muted{color:var(--app-muted);font-size:1rem;line-height:1.75}.fine{font-size:.75rem;color:var(--app-muted);line-height:1.6}.eyebrow{font-size:.6875rem;letter-spacing:.13em;font-weight:600;text-transform:uppercase;color:var(--app-muted)}.logo{width:125px;height:auto;display:block}.primary,.secondary,.light-button{min-height:52px;padding:14px 22px;border-radius:14px;display:inline-flex;gap:22px;align-items:center;justify-content:space-between;text-decoration:none;border:1px solid transparent;font-weight:600;font-size:.9375rem;transition:transform .16s,background .16s,box-shadow .16s}.primary{background:var(--app-green);color:var(--dosy-cream)}.primary:hover{background:var(--dosy-green-800);box-shadow:0 4px 14px #1c402414}.primary:active,.secondary:active,.light-button:active{transform:scale(.985)}.secondary{background:transparent;border-color:var(--app-line);color:var(--app-green)}.secondary:hover{background:var(--dosy-green-50)}.light-button{background:var(--dosy-cream);color:var(--app-green)}.text-button{background:none;border:0;padding:10px 0;min-height:44px;font-size:.8125rem;font-weight:600;display:inline-flex;align-items:center;gap:10px}.text-button:hover{text-decoration:underline;text-underline-offset:4px}.round-button{border:1px solid var(--app-line);border-radius:50%;width:44px;min-width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--app-surface)}:focus-visible{outline:3px solid #426b49;outline-offset:4px}label{display:grid;font-size:.8125rem;font-weight:600;gap:8px;margin-bottom:20px}input:not([type=checkbox]):not([type=radio]){width:100%;min-height:54px;background:#fff;border:1px solid #a7b5a1;border-radius:12px;padding:14px 16px;outline-offset:3px;font-size:1rem;color:var(--app-green)}input::placeholder{color:#6c7568}input[type=checkbox],input[type=radio]{accent-color:var(--app-green)}.check-label{display:flex;align-items:flex-start;gap:12px;font-size:.75rem;font-weight:400;line-height:1.7}.check-label input{width:20px;height:20px;flex:none;margin:3px 0}.form-error{font-size:.8125rem;color:var(--dosy-error)}.form-error:empty{display:none}.success-text{color:var(--app-green)}.legal-links{display:flex;flex-wrap:wrap;gap:20px}.legal-links a{padding:10px 0}.boot{min-height:100svh;display:grid;place-content:center;text-align:center;gap:24px}.boot img{width:130px;margin:auto}.boot p{font-size:.875rem;color:var(--app-muted)}.scene{animation:arrive .32s cubic-bezier(.2,.8,.2,1)}@keyframes arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}#toast{position:fixed;z-index:100;left:50%;bottom:28px;transform:translate(-50%,18px);max-width:min(90vw,540px);padding:14px 22px;background:var(--app-green);color:var(--dosy-cream);box-shadow:0 12px 40px #14271920;border-radius:16px;font-size:.8125rem;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}#toast.show{opacity:1;transform:translate(-50%,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* An editorial welcome, with the form doing one clear job. */
.auth-shell{min-height:100svh;display:grid;grid-template-columns:minmax(380px,1fr) minmax(420px,1fr);background:#fff;padding:20px;gap:20px}.auth-story{position:relative;overflow:hidden;border-radius:24px;background:#233d2a;min-height:750px}.auth-story>a{position:absolute;z-index:2;left:36px;top:32px;filter:brightness(0) invert(1)}.auth-photo{position:absolute;inset:0;width:100%;height:100%;object-position:45% 42%}.auth-story:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#11231820 25%,#11231808 40%,#112318e8 100%)}.auth-story-copy{position:absolute;left:44px;right:36px;bottom:38px;z-index:1;color:var(--dosy-cream)}.auth-story-copy .eyebrow{color:var(--dosy-cream)}.auth-story-copy h2{font-family:var(--dosy-font-editorial);font-size:clamp(2rem,3.3vw,3.3rem);font-weight:400;line-height:1.22;letter-spacing:-.04em;color:inherit;margin:18px 0}.auth-story-copy p{font-size:.875rem;max-width:390px;margin:0}.auth-main{padding:20px 8%;display:flex;flex-direction:column}.auth-main header{display:flex;align-items:center;justify-content:space-between}.auth-main header .logo{visibility:hidden}.auth-content{max-width:400px;width:100%;margin:auto;padding:50px 0}.auth-content h1{font-size:clamp(3rem,4.5vw,4.5rem);margin-top:18px}.auth-content .muted{margin-bottom:30px}.auth-content .primary,.auth-content .secondary{width:100%}.password-wrap{position:relative}.password-wrap input{padding-right:85px!important}.password-wrap button{position:absolute;right:12px;top:6px;border:0;background:none;min-height:44px;font-size:.75rem;font-weight:600;color:var(--app-green)}.auth-options{display:grid;gap:12px;margin-top:20px}.auth-options>.text-button{justify-content:center}.auth-inline{display:flex;justify-content:space-between;gap:20px}.auth-content>.fine{text-align:center;margin-top:20px;margin-bottom:0}.auth-main>.legal-links{justify-content:center}.otp-input{font-size:1.5rem!important;letter-spacing:.3em;text-align:center}.access-page{max-width:500px;margin:50px auto;padding:28px}.access-page .primary,.access-page .secondary{width:100%;margin:8px 0}.access-page .orb{margin:60px 0 20px}.orb{width:72px;height:72px;background:var(--dosy-green-100);border-radius:50%;display:grid;place-items:center}
/* First run: same quiet interaction, four short decisions. */
.onboarding-shell{max-width:1320px;margin:auto;padding:30px 48px}.onboarding-shell>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:38px}.onboarding-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,110px);align-items:center}.onboard-art{height:calc(100svh - 156px);min-height:560px;max-height:800px;border-radius:22px;overflow:hidden;position:relative;background:#d7dfce}.onboard-art>img{width:100%;height:100%}.onboard-art:after{content:'';position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#102a1adb)}.art-caption{position:absolute;z-index:1;bottom:28px;left:32px;color:var(--dosy-cream)}.art-caption .eyebrow{color:inherit}.art-caption p{font-family:var(--dosy-font-editorial);font-size:2.4rem;letter-spacing:-.045em;line-height:1.25;margin:16px 0 0}.onboard-content{max-width:500px;width:100%;padding:20px 0}.onboard-progress{display:flex;gap:8px;align-items:center;margin-bottom:36px}.onboard-progress>span{height:3px;background:#dfe5d8;flex:1;border-radius:3px}.onboard-progress>span.active{background:#426b49}.onboard-progress small{font-size:.75rem;margin-left:10px;color:var(--app-muted)}.onboard-content h1{font-size:clamp(2rem,3.4vw,3.1rem);margin-bottom:32px}.onboard-choice{position:relative;display:flex;align-items:center;gap:16px;background:var(--app-surface);border:1px solid var(--app-line);padding:18px;border-radius:16px;cursor:pointer;margin-bottom:12px;transition:border-color .18s,background .18s}.onboard-choice input{position:absolute;opacity:0;width:1px;height:1px}.onboard-choice:has(input:checked){background:var(--dosy-green-100);border-color:#426b49}.onboard-choice:has(input:focus-visible){outline:3px solid #426b49;outline-offset:3px}.choice-icon{width:42px;height:42px;border-radius:12px;background:#f5f7f0;display:grid;place-items:center;flex:none}.onboard-choice strong{font-size:.875rem;display:block;font-weight:600}.onboard-choice small{font-size:.75rem;display:block;color:var(--app-muted);font-weight:400;margin-top:4px;line-height:1.5}.choice-dot{margin-left:auto;width:17px;height:17px;border:1px solid #8e9f86;border-radius:50%;flex:none}.onboard-choice:has(input:checked) .choice-dot{background:var(--app-green);box-shadow:inset 0 0 0 4px var(--dosy-green-100)}.onboard-note{display:flex;gap:18px;padding:24px;background:var(--dosy-cream);border-radius:16px;margin-top:24px}.onboard-note p{margin:0;font-size:.875rem;color:var(--app-muted)}.onboard-actions{display:flex;gap:14px;align-items:center;margin:28px 0 16px}.onboard-actions .primary{flex:1}.onboard-content>.fine{text-align:center}.anchor-choices{display:flex;gap:8px;margin-bottom:24px}.anchor-choices .onboard-choice{flex:1;padding:16px 8px;flex-direction:column;gap:10px;text-align:center}.anchor-choices .choice-dot{margin:auto}
/* The plan is the thread; navigation stays quiet. */
.app-shell{min-height:100svh}.sidebar{width:224px;position:fixed;inset:0 auto 0 0;background:var(--app-surface);border-right:1px solid var(--app-line);display:flex;flex-direction:column;padding:38px 22px 20px;z-index:20}.sidebar>a{margin:0 16px 54px}.sidebar nav{display:grid;gap:10px}.nav-item{display:flex;gap:15px;align-items:center;min-height:52px;border:0;border-radius:14px;background:none;text-align:left;padding:14px 18px;font-size:.875rem;color:var(--app-muted);transition:background .18s}.nav-item:hover{background:var(--dosy-green-50)}.nav-item.active{background:var(--dosy-green-100);color:var(--app-green);font-weight:600}.nav-item i{width:5px;height:5px;border-radius:50%;background:var(--app-green);margin-left:auto}.sidebar-bottom{margin-top:auto;padding-top:30px}.journey-pill{display:flex;gap:8px;align-items:center;font-size:.6875rem;padding:12px 6px;border-bottom:1px solid var(--app-line);color:var(--app-muted)}.avatar-row{background:none;border:0;display:flex;gap:12px;align-items:center;padding:18px 4px;width:100%;text-align:left;font-size:.8125rem}.avatar-row small{display:block;font-size:.6875rem;color:var(--app-muted)}.avatar{width:38px;height:38px;border:0;background:#e8ecdf;color:var(--app-green);display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:600;flex:none}.sidebar .legal-links{gap:12px;font-size:.6875rem}.app-main{margin-left:224px;padding:0 48px;max-width:1700px}.app-top{display:flex;align-items:center;justify-content:space-between;min-height:90px;border-bottom:1px solid var(--app-line);margin-bottom:36px}.app-top .logo{display:none}.app-top>.avatar{display:none}.workspace{max-width:1120px;margin:auto}.page-heading{margin-bottom:32px}.page-heading h1{font-size:clamp(2.1rem,3.8vw,3.6rem);margin:14px 0 16px}.page-heading .muted{margin:0}.today-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:28px}.focus-feature{position:relative;min-height:330px;border-radius:22px;overflow:hidden;background:#1c4024}.focus-feature>img{position:absolute;inset:0;width:100%;height:100%;object-position:center 40%}.focus-feature:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#122c19ed,#122c1970 70%,#122c1910)}.focus-overlay{position:relative;z-index:1;color:var(--dosy-cream);max-width:350px;padding:30px}.focus-overlay .eyebrow{color:#f5f4e6}.focus-overlay h2{color:inherit;font-family:var(--dosy-font-editorial);font-weight:400;font-size:2rem;line-height:1.15;margin:18px 0 16px}.focus-overlay p{font-size:.875rem;line-height:1.6}.focus-overlay .light-button{font-size:.8125rem;min-height:46px;gap:20px}.day-actions{padding:24px 0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{margin:0}.section-heading>span{font-size:.75rem;color:var(--app-muted)}.habit{display:flex;align-items:center;gap:14px;text-align:left;width:100%;border:0;border-bottom:1px solid var(--app-line);background:none;padding:19px 0;font-size:.875rem;line-height:1.6}.habit-check{border:1px solid #8a9b83;border-radius:50%;width:25px;height:25px;flex:none;display:grid;place-items:center;transition:background .18s}.habit.complete .habit-check{background:var(--app-green);border-color:var(--app-green);color:white}.habit.complete>span:last-child{color:var(--app-muted)}.day-note{display:flex;gap:14px;align-items:flex-start;margin-top:24px;color:var(--app-muted)}.day-note p{font-size:.75rem;margin:0}.checkin{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:28px 0;border-bottom:1px solid var(--app-line);margin:12px 0 24px}.checkin h2{margin:7px 0 0;white-space:nowrap}.mood-options{display:flex;flex-wrap:wrap;gap:8px}.mood-options button{min-height:44px;border:1px solid var(--app-line);border-radius:24px;background:var(--app-surface);padding:10px 15px;font-size:.75rem}.mood-options .selected{background:var(--app-green);border-color:var(--app-green);color:var(--dosy-cream)}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.metric{background:var(--app-surface);border-radius:18px;padding:24px}.metric-label{display:flex;gap:10px;align-items:center;font-size:.8125rem;color:var(--app-muted)}.metric-value{font-size:2.5rem;letter-spacing:-.06em;line-height:1.4;margin-top:14px;color:var(--app-green)}.metric-value small{font-size:.8125rem;letter-spacing:0;color:var(--app-muted);margin-left:8px}.metric p{font-size:.75rem;color:var(--app-muted);margin-top:6px;min-height:40px}.metric .text-button{margin-right:14px}.app-disclaimer{text-align:center;font-size:.6875rem;color:var(--app-muted);margin:40px 0 26px}.mobile-nav{display:none}.preview-banner{position:relative;background:var(--app-green);color:var(--dosy-cream);padding:8px 20px;text-align:center;font-size:.75rem;z-index:30}.preview-banner a{margin-left:14px}.app-shell:has(.preview-banner) .sidebar{top:35px}
.food-layout{display:grid;grid-template-columns:1.3fr 1fr;gap:60px}.protein-panel{padding:28px;border-radius:20px;background:var(--dosy-green-100);margin-bottom:34px}.protein-panel>span{font-size:.875rem}.protein-panel>strong{font-size:3rem;line-height:1.5;letter-spacing:-.05em;display:block;color:var(--app-green);font-weight:500}.protein-panel strong small{font-size:1rem;letter-spacing:0;margin-left:8px}.protein-panel p{font-size:.75rem;margin:10px 0 0}.protein-panel progress{width:100%;height:6px;accent-color:var(--app-green)}.meal-row{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--app-line);padding:20px 0;font-size:.875rem}.meal-row>div{flex:1}.meal-row strong{font-weight:600}.meal-row small{display:block;font-size:.6875rem;color:var(--app-muted);margin-top:4px}.meal-row b{margin-left:auto;font-weight:600}.meal-icon{display:grid;place-items:center;background:var(--dosy-cream);width:46px;height:46px;border-radius:14px}.empty-state{text-align:center;padding:40px 22px;color:var(--app-muted);background:#f0f3ec;border-radius:18px}.empty-state h3{color:var(--app-green);margin-top:20px;font-size:1rem}.empty-state p{font-size:.875rem;max-width:360px;margin:0 auto 22px}.empty-state.compact{background:none}.editorial-aside img{width:100%;height:310px;border-radius:20px}.editorial-aside h2{font-size:1.8rem;font-weight:500;margin:22px 0 14px}.editorial-aside p{font-size:.875rem;color:var(--app-muted)}.progress-card{background:var(--app-surface);border-radius:22px;padding:30px}.progress-card .secondary{font-size:.8125rem;gap:10px}.weight-value{font-size:3.5rem;letter-spacing:-.05em;color:var(--app-green)}.weight-value small{font-size:1rem;letter-spacing:0}.weight-chart{width:100%;height:auto}.weight-chart polyline{stroke-dasharray:1000;animation:draw .9s ease-out}@keyframes draw{from{stroke-dashoffset:1000}to{stroke-dashoffset:0}}.progress-bottom{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:36px 0}.week-strip{display:flex;justify-content:space-between;gap:8px;margin:24px 0}.week-strip>div{display:grid;gap:12px;text-align:center;font-size:.75rem}.week-strip i{width:34px;height:34px;border-radius:50%;background:#e7ecdf;display:grid;place-items:center;font-style:normal}.week-strip i.filled{background:var(--app-green);color:white}.week-strip small{font-size:.6875rem;color:var(--app-muted)}.maintenance-note{background:var(--dosy-cream);border-radius:18px;padding:24px}.maintenance-note h2{margin:16px 0;font-size:1.5rem}.maintenance-note p{font-size:.8125rem;color:var(--app-muted);margin:0}.history{font-size:.875rem;padding:20px 0}.history summary{cursor:pointer;min-height:44px}.coach-page{max-width:780px;margin:auto}.coach-context{display:flex;gap:12px;align-items:center;border-block:1px solid var(--app-line);padding:16px 0;font-size:.8125rem}.coach-context>span{margin-left:auto;font-size:.6875rem;color:var(--app-muted)}.coach-prompts{display:grid;gap:12px;margin:40px 0}.prompt{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;text-align:left;border:1px solid var(--app-line);border-radius:16px;background:var(--app-surface);font-size:.875rem;min-height:56px}.prompt:hover{background:var(--dosy-green-100)}.chat-log{min-height:180px}.chat-message{padding:22px 0;font-size:.9375rem;line-height:1.8}.chat-message.user{margin:24px 0 0 16%;background:var(--dosy-green-100);padding:16px 22px;border-radius:18px 18px 4px 18px}.chat-message p{margin:6px 0 0}.coach-input{position:sticky;bottom:18px;display:flex;align-items:center;gap:8px;background:var(--app-surface);padding:8px;border:1px solid #a7b5a1;border-radius:18px;margin-top:28px}.coach-input input{border:0!important;background:transparent!important}.coach-input .round-button{background:var(--app-green);color:white;margin-right:5px}.coach-page>.fine{margin-top:12px}.you-grid{display:grid;grid-template-columns:280px 1fr;gap:50px}.profile-card{background:var(--dosy-green-100);padding:30px;border-radius:20px;text-align:center;align-self:start}.avatar.large{width:72px;height:72px;font-size:1.8rem;background:var(--dosy-cream);margin-bottom:22px}.profile-card h2{margin-bottom:12px}.profile-card .secondary{font-size:.75rem;background:var(--app-surface)}.settings-list h2{margin-bottom:12px}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:24px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--app-line);background:transparent;text-decoration:none;padding:22px 0;font-size:.875rem}.settings-row small{display:block;font-size:.75rem;color:var(--app-muted);margin-top:4px}.settings-row:hover{color:#426b49}.settings-list>.text-button{margin-top:20px}
dialog{width:min(92vw,480px);max-height:90svh;border:0;border-radius:24px;padding:28px;background:var(--app-surface);color:var(--dosy-ink);box-shadow:0 20px 80px #13261930;overflow:auto}dialog::backdrop{background:#13261970;backdrop-filter:blur(3px)}dialog[open]{animation:arrive .2s ease-out}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.modal-header h2{margin:0;font-size:1.5rem}.modal-header .round-button{flex:none}dialog .primary{width:100%;margin-top:8px}.saving .habit,.saving .mood-options button,.saving .metric button{opacity:.6;pointer-events:none}
@media(min-width:1600px){.app-main{margin-right:auto;padding-inline:70px}.today-grid{gap:44px}.focus-feature{min-height:350px}}@media(max-width:1100px){.app-main{padding:0 30px}.sidebar{width:190px;padding-inline:14px}.app-main{margin-left:190px}.today-grid{grid-template-columns:1fr}.day-actions{padding:0}.checkin{align-items:flex-start;flex-direction:column}.metrics-grid{gap:12px}.metric{padding:20px}.metric-value{font-size:2rem}.food-layout{gap:26px}.you-grid{grid-template-columns:220px 1fr;gap:28px}.onboarding-shell{padding:24px 30px}.onboarding-grid{gap:40px}}
@media(max-width:760px){body{font-size:1rem}.auth-shell{display:block;padding:0;min-height:100svh}.auth-story{display:none}.auth-main{padding:24px;min-height:100svh}.auth-main header .logo{visibility:visible;width:112px}.auth-content{padding:40px 0;margin:auto;max-width:430px}.auth-content h1{font-size:3.4rem}.auth-content>.eyebrow{margin-bottom:12px}.auth-content .muted{font-size:.9375rem;margin-bottom:28px}.auth-main>.legal-links{padding-bottom:env(safe-area-inset-bottom,0px)}.onboarding-shell{padding:24px;min-height:100svh}.onboarding-shell>header{margin-bottom:32px}.onboarding-shell>header .fine{font-size:.625rem;letter-spacing:.05em}.onboarding-grid{display:block}.onboard-art{display:none}.onboard-content{max-width:500px;margin:auto;padding:0}.onboard-content h1{font-size:2.5rem;margin-bottom:28px}.onboard-progress{margin-bottom:32px}.onboard-choice{padding:16px;min-height:76px}.onboard-actions{position:sticky;bottom:0;background:var(--app-bg);padding:14px 0 calc(14px + env(safe-area-inset-bottom,0px));margin-bottom:0;z-index:2}.onboard-content>.fine{margin-top:0}.onboard-note{padding:22px}.sidebar{display:none}.app-main{margin:0;padding:0 22px 100px}.app-top{min-height:82px;margin-bottom:26px;border:0;gap:16px}.app-top>a{display:block}.app-top .logo{display:block;width:104px}.app-top>.avatar{display:inline-flex;width:44px;height:44px}.app-top>.eyebrow{font-size:.625rem;margin-left:auto;max-width:135px;text-align:right;letter-spacing:.06em}.page-heading{margin-bottom:26px}.page-heading h1{font-size:2.65rem}.page-heading .muted{font-size:.9375rem}.today-grid{gap:22px}.focus-feature{min-height:285px}.focus-overlay{padding:26px;max-width:310px}.focus-overlay h2{font-size:1.85rem}.focus-overlay p{max-width:240px}.day-actions{padding:0}.section-heading{margin-bottom:8px}.section-heading h2{font-size:1.125rem}.day-note{margin-top:18px}.checkin{padding:24px 0;margin-top:6px;gap:16px}.mood-options{gap:8px}.mood-options button{font-size:.8125rem;padding:10px 14px}.metrics-grid{grid-template-columns:1fr 1fr;gap:12px}.metric{padding:20px 16px}.metric.rhythm{grid-column:1/-1}.metric-value{font-size:2.25rem}.metric-value small{font-size:.75rem;display:block;margin:0}.metric p{min-height:0}.metric .text-button{font-size:.75rem;margin-right:8px}.mobile-nav{display:flex;align-items:center;justify-content:space-around;position:fixed;z-index:25;bottom:calc(10px + env(safe-area-inset-bottom,0px));left:12px;right:12px;border:1px solid #d4ddca;background:#fffffff2;backdrop-filter:blur(20px);box-shadow:0 5px 25px #1c402419;border-radius:26px;padding:8px 5px}.mobile-nav button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;min-width:54px;min-height:50px;background:none;border:0;border-radius:18px;color:var(--app-muted);flex:1;padding:6px 2px;font-size:.6875rem;line-height:1.2}.mobile-nav button.active{background:var(--dosy-green-100);color:var(--app-green);font-weight:600}.mobile-nav button.active svg{stroke-width:2.1}.app-disclaimer{margin:30px 0 16px;font-size:.6875rem}#toast{bottom:calc(95px + env(safe-area-inset-bottom,0px));width:max-content;max-width:90vw}.food-layout{display:block}.editorial-aside{margin-top:30px}.editorial-aside img{height:220px}.editorial-aside h2{font-size:1.6rem}.protein-panel{padding:24px;margin-bottom:26px}.meal-row{gap:12px}.meal-row>.round-button{width:44px}.progress-card{padding:22px 18px}.progress-card .section-heading{align-items:flex-start;flex-wrap:wrap}.progress-card .secondary{min-height:44px;padding:10px 14px}.weight-value{font-size:3rem;margin-top:16px}.progress-bottom{grid-template-columns:1fr;gap:22px;margin:26px 0}.week-strip i{width:32px;height:32px}.coach-context{flex-wrap:wrap;gap:8px;font-size:.75rem}.coach-context>span{width:100%;margin:0 0 0 30px}.coach-input{bottom:calc(90px + env(safe-area-inset-bottom,0px))}.coach-input input{min-width:0}.chat-message{font-size:.9375rem}.you-grid{grid-template-columns:1fr;gap:28px}.profile-card{padding:24px}.profile-card .avatar.large{width:58px;height:58px;margin-bottom:16px}.settings-list{padding:0 2px}.preview-banner{font-size:.6875rem;padding:8px 16px}.preview-banner a{white-space:nowrap}dialog{position:fixed;inset:auto 0 0;width:100%;max-width:none;max-height:90dvh;border-radius:24px 24px 0 0;margin:0;padding:26px 24px calc(26px + env(safe-area-inset-bottom,0px))}.anchor-choices{gap:6px}.anchor-choices .choice-icon{display:none}.anchor-choices .onboard-choice{min-height:80px;padding:14px 7px}.anchor-choices .onboard-choice strong{font-size:.8125rem}.check-label{font-size:.8125rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media(prefers-reduced-transparency:reduce){.mobile-nav{background:#fff;backdrop-filter:none}dialog::backdrop{backdrop-filter:none}}@media(prefers-contrast:more){:root{--app-line:#6e8164;--app-muted:#354c30}.mobile-nav{background:#fff}.primary{border-color:#122c19}}@media(max-width:360px){.app-main{padding-inline:16px}.mobile-nav{left:6px;right:6px}.mobile-nav button{min-width:48px;font-size:.6875rem}.onboarding-shell{padding-inline:18px}.onboard-content h1{font-size:2.15rem}.metrics-grid{grid-template-columns:1fr}.metric-value small{display:inline;margin-left:7px}}
.skip-link{position:fixed;top:-100px;left:16px;z-index:120;padding:12px 20px;background:var(--app-green);color:var(--dosy-cream);border-radius:12px}.skip-link:focus{top:12px}h1:focus{outline:none}
/* Dosy interaction layer: quiet chrome, precise controls, content-led motion. */
:root{--app-bg:#fafbf9;--app-line:#e7e9e4;--app-ease:cubic-bezier(.22,1,.36,1);--app-shadow:0 1px 2px #17251b06,0 4px 16px #17251b03}
.primary,.secondary,.light-button{border-radius:11px;min-height:48px;padding:12px 18px;gap:16px;font-size:.875rem;transition:background 150ms,box-shadow 150ms,transform 120ms}
.secondary{background:#fff;box-shadow:0 1px 2px #17251b08}.primary:hover{box-shadow:0 2px 5px #17251b14}
input:not([type=checkbox]):not([type=radio]){border-color:#d9ded6;border-radius:10px;box-shadow:0 1px 2px #17251b05;transition:border-color 150ms,box-shadow 150ms}
input:not([type=checkbox]):not([type=radio]):focus{border-color:#66846b;box-shadow:0 0 0 3px #1c402412}
.sidebar{background:#f2f4ef;border-color:#e7ebe2;padding-top:30px}.sidebar>a{margin-bottom:40px}.sidebar nav{gap:5px}.nav-item{min-height:46px;padding:11px 14px;border-radius:10px;gap:12px}.nav-item.active{background:#fff;box-shadow:var(--app-shadow);color:var(--app-green)}.nav-item i{display:none}.nav-item svg{width:19px;height:19px;stroke-width:1.7}.journey-pill{border:0}.avatar-row{border-radius:10px}.avatar-row:hover{background:#e8ece3}
.app-top{min-height:76px;margin-bottom:30px;border-bottom-color:#eef0eb}.app-top>.eyebrow{letter-spacing:.06em;font-size:.625rem}.page-heading h1{font-size:clamp(2rem,3.1vw,2.8rem);letter-spacing:-.045em;margin:10px 0 12px}.page-heading .muted{font-size:.9375rem}.page-heading h1 br{display:none}.page-heading h1 em{margin-left:.15em}.page-heading{margin-bottom:28px}
.focus-feature{border-radius:18px;min-height:290px}.focus-overlay{padding:28px}.focus-overlay h2{font-size:1.8rem}.day-actions{padding:16px 0}.metric,.progress-card{border:1px solid var(--app-line);box-shadow:var(--app-shadow);border-radius:16px}.metric-value{font-size:2.2rem;font-variant-numeric:tabular-nums}.metric p{line-height:1.65}.metric-label{font-size:.75rem}.mood-options button{border-radius:9px;transition:background 150ms,color 150ms,transform 120ms}.mood-options button:active,.round-button:active,.prompt:active{transform:scale(.98)}.habit-check{border-radius:8px;width:24px;height:24px}.habit:hover{background:#1c402403}.protein-panel,.profile-card{background:#eef2e9;border:1px solid #e4e9dd;border-radius:16px}.empty-state{background:#f3f5f0;border-radius:14px}
.onboard-choice{border-radius:12px;padding:16px;box-shadow:0 1px 2px #17251b04;transition:background 160ms,border-color 160ms,box-shadow 160ms}.onboard-choice:has(input:checked){background:#f0f5eb;border-color:#73886a;box-shadow:0 0 0 1px #73886a}.choice-icon{background:#f0f3ec;border-radius:10px}.onboard-progress>span{transition:background 200ms}.onboard-content h1{font-size:clamp(2rem,3vw,2.65rem)}.auth-content h1{font-size:clamp(2.5rem,3.5vw,3.25rem)}.auth-content>.eyebrow{letter-spacing:.09em}.auth-content{max-width:380px}.auth-story{min-height:650px}.auth-main .primary{justify-content:center}.auth-main .primary svg{width:18px}.auth-options{gap:10px}.auth-inline .text-button{font-weight:500}
.app-shell[data-page=coach] .workspace{max-width:800px}.coach-page{display:flex;flex-direction:column;min-height:calc(100svh - 190px);padding:12px 0 0}.coach-page .page-heading{text-align:center;max-width:610px;align-self:center;margin:36px 0 24px}.coach-page .page-heading h1{font-size:clamp(1.8rem,3vw,2.4rem);font-weight:500;letter-spacing:-.045em}.coach-page .page-heading .muted{font-size:.8125rem;line-height:1.7;max-width:530px;margin:auto}.coach-context{align-self:center;border:1px solid var(--app-line);border-radius:20px;background:#fff;padding:7px 13px;font-size:.75rem;gap:8px}.coach-context>span{padding-left:10px;border-left:1px solid var(--app-line)}.coach-prompts{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:30px 0}.prompt{border-radius:12px;align-items:flex-start;flex-direction:column;justify-content:space-between;min-height:112px;padding:16px;line-height:1.5;font-size:.8125rem;transition:background 150ms,border-color 150ms,transform 120ms}.prompt svg{width:17px;height:17px;align-self:flex-end;color:#687561}.prompt:hover{background:#f1f4ed;border-color:#b9c5b1}.chat-log{flex:1;min-height:100px}.chat-message.user{margin-left:auto;max-width:80%;width:fit-content;background:#edf1e8;border-radius:20px;padding:12px 18px}.chat-message.assistant{padding:22px 4px;max-width:95%}.chat-message.assistant .eyebrow{font-size:.625rem;letter-spacing:.08em}.chat-message:last-child{animation:message-in 220ms var(--app-ease)}.coach-input{border-color:#dce2d6;border-radius:24px;padding:8px 10px;box-shadow:0 2px 12px #17251b08;margin-top:24px;bottom:20px}.coach-input input{box-shadow:none!important;min-height:48px!important;font-size:.9375rem}.coach-input .round-button{width:42px;min-width:42px;height:42px;border:0;margin:0}.coach-input #coach-submit svg{transform:rotate(-90deg);width:20px}.coach-page>.fine{text-align:center;font-size:.6875rem}.app-shell[data-page=coach] .app-disclaimer{margin-top:18px}
.scene{animation:arrive 240ms var(--app-ease)}@keyframes arrive{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes message-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}dialog[open]{animation:sheet-in 240ms var(--app-ease)}dialog::backdrop{background:#13261940;backdrop-filter:blur(4px)}@keyframes sheet-in{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
@media(max-width:760px){.auth-content h1{font-size:2.8rem}.auth-content{padding:32px 0}.auth-main{padding:22px}.app-top{min-height:72px;margin-bottom:18px}.app-main{padding-inline:20px}.page-heading h1{font-size:2rem}.page-heading .muted{font-size:.875rem}.focus-feature{min-height:260px}.focus-overlay{padding:24px}.focus-overlay h2{font-size:1.75rem}.metric-value{font-size:2rem}.mobile-nav{border-color:#e0e5d8;background:#ffffffed;box-shadow:0 4px 24px #17251b10;border-radius:24px;padding:6px 4px;backdrop-filter:blur(24px) saturate(140%)}.mobile-nav button{border-radius:17px;transition:background 150ms,color 150ms}.mobile-nav button.active{background:#eaf0e3}.onboard-content h1{font-size:2.2rem}.coach-page{min-height:calc(100svh - 230px);padding:0}.coach-page .page-heading{margin:18px 0 20px}.coach-page .page-heading h1{font-size:1.9rem}.coach-context{border-radius:12px;font-size:.6875rem;justify-content:center}.coach-context>span{width:auto;margin:0;font-size:.625rem}.coach-prompts{grid-template-columns:1fr;gap:8px;margin:24px 0}.prompt{min-height:52px;flex-direction:row;align-items:center;padding:13px 15px}.prompt svg{align-self:center}.coach-input{bottom:calc(92px + env(safe-area-inset-bottom,0px));border-radius:24px}.coach-input input{font-size:1rem}.chat-message.user{max-width:88%}.chat-message{font-size:.9375rem}.coach-page>.fine{line-height:1.5}.app-shell[data-page=coach] .app-disclaimer{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(prefers-reduced-transparency:reduce){.mobile-nav{background:#fff;backdrop-filter:none}dialog::backdrop{backdrop-filter:none}}@media(prefers-contrast:more){:root{--app-line:#6e8164}.nav-item.active{outline:1px solid #6e8164}.coach-context{border-color:#6e8164}}
/* Sidebar-08 inspired inset workspace, implemented with Dosy's existing web stack. */
.app-shell{--sidebar-width:240px;background:#f1f3ee;padding:8px 8px 8px 0;min-height:100svh}.sidebar{width:var(--sidebar-width);background:transparent;border:0;padding:24px 16px 16px;transition:width 220ms var(--app-ease)}.sidebar-brand{min-height:42px;display:flex;align-items:center;gap:10px!important;margin:0 12px 28px!important}.sidebar-brand .brand-symbol{display:none;object-fit:contain}.sidebar-label{font-size:.625rem;font-weight:600;letter-spacing:.08em;color:var(--app-muted);padding:0 14px;margin-bottom:10px}.sidebar .nav-item{white-space:nowrap;overflow:hidden;min-height:44px}.sidebar .nav-item.active{background:#e3e9dd;box-shadow:none}.sidebar-bottom .avatar-row{border:1px solid #e1e6db;background:#ffffff8c;padding:10px;border-radius:12px}.sidebar-bottom .journey-pill{font-size:.625rem;padding:12px 10px}.sidebar-bottom .legal-links{padding:4px 10px;gap:10px}.app-main{margin-left:var(--sidebar-width);background:#fff;border:1px solid #e6e9e1;border-radius:16px;min-height:calc(100svh - 16px);padding-inline:32px;transition:margin-left 220ms var(--app-ease);max-width:none;box-shadow:0 1px 3px #14281905}.app-top{min-height:64px;gap:16px;margin-bottom:32px}.sidebar-toggle{width:36px;height:36px;min-width:36px;display:grid;place-items:center;background:none;border:0;border-radius:8px}.sidebar-toggle:hover{background:#eef2e9}.app-breadcrumb{display:flex;align-items:center;gap:12px;font-size:.8125rem;padding-left:16px;border-left:1px solid var(--app-line)}.app-breadcrumb>span{color:var(--app-muted)}.app-breadcrumb svg{transform:rotate(180deg);color:#75806f}.app-breadcrumb strong{font-weight:500}.app-top>.eyebrow{margin-left:auto}.app-shell[data-collapsed=true]{--sidebar-width:76px}.app-shell[data-collapsed=true] .sidebar{padding-inline:12px}.app-shell[data-collapsed=true] .sidebar-brand{margin-inline:8px!important}.app-shell[data-collapsed=true] .sidebar-brand .logo,.app-shell[data-collapsed=true] .sidebar-label,.app-shell[data-collapsed=true] .nav-item>span,.app-shell[data-collapsed=true] .journey-pill,.app-shell[data-collapsed=true] .avatar-row>span:last-child,.app-shell[data-collapsed=true] .sidebar .legal-links{display:none}.app-shell[data-collapsed=true] .brand-symbol{display:block}.app-shell[data-collapsed=true] .nav-item{justify-content:center;padding:12px}.app-shell[data-collapsed=true] .avatar-row{padding:6px;justify-content:center;border:0;background:none}.app-shell:has(.preview-banner){padding-top:43px}.app-shell .preview-banner{position:absolute;inset:0 0 auto}.app-shell:has(.preview-banner) .sidebar{top:35px}.app-shell:has(.preview-banner) .app-main{min-height:calc(100svh - 51px)}
.loading-overlay{position:fixed;inset:0;z-index:80;background:var(--app-bg);overflow:auto}.account-loading{max-width:1040px;margin:auto;padding:48px 32px}.loading-brand{display:flex;align-items:center;gap:16px;color:var(--app-muted);font-size:.875rem;margin-bottom:48px}.loading-brand img{object-fit:contain}.loading-layout{display:grid;gap:18px}.skeleton{background:#eaf0e4;border-radius:12px;animation:skeleton-breathe 1.6s ease-in-out infinite}.sk-heading{width:42%;height:38px}.sk-line{width:62%;height:16px;margin-bottom:18px}.loading-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.loading-cards .skeleton{height:150px}.sk-panel{height:320px}@keyframes skeleton-breathe{50%{opacity:.48}}.boot img{width:140px;object-fit:contain}.boot{gap:18px}.boot p{font-size:.8125rem}
@media(max-width:760px){.app-shell,.app-shell[data-collapsed=true]{padding:0;background:var(--app-bg)}.app-shell:has(.preview-banner){padding-top:35px}.app-main{margin:0!important;min-height:100svh;border:0;border-radius:0;box-shadow:none;background:var(--app-bg);padding:0 20px 100px}.sidebar-toggle,.app-breadcrumb{display:none}.app-top{min-height:72px;margin-bottom:18px}.account-loading{padding:32px 22px}.loading-brand{margin-bottom:36px}.loading-cards{grid-template-columns:1fr 1fr;gap:12px}.loading-cards .skeleton{height:120px}.loading-cards .skeleton:last-child{display:none}.sk-heading{width:68%;height:30px}.sk-line{width:88%}.sk-panel{height:280px}}
@media(prefers-reduced-motion:reduce){.sidebar,.app-main{transition:none}.skeleton{animation:none}}

/* One visible brand: photo on desktop, form header on mobile. */
.auth-main header .logo{visibility:hidden}
@media(max-width:760px){.auth-main header .logo{visibility:visible}}

/* One vector lockup at a constant scale; collapse reveals only its symbol. */
.sidebar-brand{width:125px;overflow:hidden;flex-shrink:0;height:42px;transition:width 220ms var(--app-ease)}.sidebar-brand .brand-wordmark{display:block;width:125px;min-width:125px;height:36px;max-width:none;object-fit:contain;object-position:left center;flex:none}.app-shell[data-collapsed=true] .sidebar-brand{width:46px;margin-inline:3px!important}.sidebar-brand:focus-visible{outline-offset:2px}@media(prefers-reduced-motion:reduce){.sidebar-brand{transition:none}}

/* A slightly quieter brand, identical scale in both sidebar states. */
.sidebar-brand{width:110px}.sidebar-brand .brand-wordmark{width:110px;min-width:110px;height:32px}.app-shell[data-collapsed=true] .sidebar-brand{width:41px;margin-inline:5px!important}
.personal-plan .plan-intro{padding:24px;background:#eef2e7;border-radius:16px;margin-bottom:24px}.plan-intro h2{font-size:1.8rem;margin-top:14px}.plan-intro p{margin-bottom:12px}.plan-anchor{font-size:.8125rem;color:var(--app-muted)}.plan-pillars{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:24px}.plan-pillars article{border:1px solid var(--app-line);border-radius:12px;padding:20px}.plan-pillars h3{font-size:1rem;margin:12px 0}.plan-pillars p,.plan-weeks p,.weekly-review p{font-size:.875rem;color:var(--app-muted)}.plan-care-note{font-size:.8125rem;background:var(--dosy-cream);padding:16px;border-radius:12px}.plan-weeks{padding:0;list-style:none}.plan-weeks li{display:flex;gap:20px;padding:16px 0;border-bottom:1px solid var(--app-line)}.plan-weeks li>span{font-size:.8125rem;color:var(--app-muted);padding-top:2px}.plan-weeks h4{margin:0 0 8px;font-size:.9375rem}.plan-weeks p{margin:0}.weekly-review{padding:22px;background:#f4f6f0;border-radius:14px;margin:24px 0}.weekly-review h3{margin-top:12px}.plan-dialog{width:min(92vw,760px)}.tracker-stats,.nutrition-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}.tracker-stats article,.nutrition-strip>div{padding:18px;border:1px solid var(--app-line);border-radius:12px}.tracker-stats span,.nutrition-strip span{display:block;font-size:.75rem;color:var(--app-muted)}.tracker-stats strong,.nutrition-strip strong{display:block;font-size:1.6rem;font-weight:500;margin-top:8px}.nutrition-strip small{font-size:.75rem}.daily-log{margin-top:30px}.daily-log .tracker-stats{grid-template-columns:repeat(3,1fr)}.meal-group{padding:18px 0;border-bottom:1px solid var(--app-line)}.meal-group h3{font-size:.875rem}.meal-group .fine{margin:0}.meal-group .meal-row{border:0}.record-actions{margin:24px 0}.activity-bars{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;height:180px;padding:20px;border:1px solid var(--app-line);border-radius:14px}.activity-bars>div{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px;font-size:.6875rem}.activity-bars i{display:block;width:100%;max-width:36px;height:var(--bar);background:#b2c99f;border-radius:5px;min-height:1px}.activity-bars small{font-size:.625rem}.tracker-summary{margin-top:28px}dialog select,dialog textarea{width:100%;border:1px solid #d9ded6;border-radius:10px;background:white;padding:12px;color:var(--app-green);font:inherit}dialog select{min-height:48px}.ai-estimate-photo{width:100%;max-height:220px;object-fit:contain;border-radius:12px;background:#f1f4ed}.photo-upload{display:flex;align-items:center;justify-content:center;gap:12px;min-height:110px;border:1px dashed #8fa283;border-radius:14px;padding:20px;cursor:pointer}.photo-upload input{max-width:100%}.ai-progress{display:flex;align-items:center;gap:12px;font-size:.875rem;margin:20px 0}.ai-progress img{width:36px;height:28px}.ai-notice{font-size:.75rem;color:var(--app-muted);padding:14px;background:#f3f5ee;border-radius:10px}.ai-chat-error{color:var(--dosy-error);font-size:.8125rem}
@media(max-width:760px){.plan-pillars,.tracker-stats,.nutrition-strip{grid-template-columns:1fr 1fr}.plan-dialog{width:100%}.daily-log .tracker-stats{grid-template-columns:1fr 1fr 1fr;gap:6px}.daily-log .tracker-stats article{padding:12px 8px}.daily-log .tracker-stats strong{font-size:1.2rem}.nutrition-strip>div{padding:14px}.plan-intro h2{font-size:1.5rem}}
.food-date{max-width:220px}.record-actions{display:flex;flex-wrap:wrap;gap:10px}.measurements{margin-top:32px}.measurements .meal-row p{margin:6px 0 0}.meal-row .text-button{font-size:.75rem}.plan-dialog .modal-header{position:sticky;top:-28px;background:#fff;z-index:2;padding-block:12px}

[hidden]{display:none!important}
/* Dosy journey: a quiet, persistent daily timeline. */
.journey-card{background:#f4f6ef;border:1px solid #e4e9de;border-radius:22px;padding:26px;margin-bottom:32px}.journey-card h2{font-size:23px;letter-spacing:-.035em;margin:8px 0 0}.journey-card p{line-height:1.6;color:#52614b}.journey-track{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:24px 0}.journey-track span{border-top:4px solid #dde3d6;padding-top:10px;font-size:12px;color:#52614b}.journey-track .active{border-color:#1c4024}.checkpoint-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;text-align:center}.checkpoint-week>div{display:grid;justify-items:center;gap:8px;font-size:12px}.checkpoint-week i{font-style:normal;background:#fff;border:1px solid #dfe5d8;border-radius:50%;width:38px;height:38px;display:grid;place-items:center;font-size:19px}.checkpoint-week .saved i{background:#1c4024;color:#fff;border-color:#1c4024;animation:checkpoint-in .25s ease-out}.checkpoint-week small{font-size:10px;color:#52614b}.checkpoint-action{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:24px;padding-top:20px;border-top:1px solid #dfe5d8}.checkpoint-action p{margin:0;font-size:14px}.checkpoint-action small{display:block;font-size:12px;margin-top:6px}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.goal-details{border-top:1px solid #e4e9de;margin:18px 0;padding-top:14px}.goal-details summary{cursor:pointer;padding:8px 0 16px;font-weight:600}#protein-reference{line-height:1.6;margin:12px 0}#protein-reference a{text-decoration:underline}#journey-setup-form .primary{width:100%;position:sticky;bottom:0}#journey-setup-form input,#journey-setup-form select{min-width:0;width:100%;box-sizing:border-box}@keyframes checkpoint-in{from{transform:scale(.85)}to{transform:scale(1)}}@media(max-width:600px){.journey-card{padding:20px 16px;border-radius:18px}.journey-card h2{font-size:21px}.journey-track span{font-size:10px}.checkpoint-week{gap:3px}.checkpoint-week small{font-size:9px}.checkpoint-action{align-items:stretch;flex-direction:column;gap:14px}.checkpoint-action button{width:100%}.setup-grid{gap:0 10px}}@media(prefers-reduced-motion:reduce){.checkpoint-week .saved i{animation:none}}
.checkpoint-history{margin:24px 0;border-top:1px solid #e4e9de;padding-top:16px}.checkpoint-history summary{cursor:pointer;padding:12px 0}.checkpoint-history article{padding:12px 0;border-bottom:1px solid #e4e9de}.checkpoint-history p{margin:4px 0;font-size:14px}
.onboarding-shell:has(#journey-setup-host) .onboarding-grid{align-items:start}.onboarding-shell:has(#journey-setup-host) .onboard-art{position:sticky;top:24px}#journey-setup-host select{font:inherit;color:inherit;background:#fff;border:1px solid #dfe5d8;border-radius:12px;padding:14px 12px;min-height:52px}#journey-setup-host .goal-details{margin-bottom:24px}@media(max-width:760px){.onboarding-shell:has(#journey-setup-host) .onboard-art{position:static}}
.coach-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:32px;align-items:start}.coach-layout .coach-page{min-width:0}.coach-history{position:sticky;top:24px;padding-right:20px;border-right:1px solid #e4e9de;max-height:calc(100svh - 140px);overflow-y:auto}.coach-history h2{font-size:15px;margin:0}.coach-history .section-heading{gap:4px}.coach-history .text-button{font-size:12px}.thread-list{display:grid;gap:4px;margin:20px 0}.thread-item{border:0;background:transparent;text-align:left;padding:12px;border-radius:12px;color:inherit;cursor:pointer;display:grid;gap:6px;min-height:48px;width:100%;min-width:0}.thread-item:hover,.thread-item.selected{background:#edf2e6}.thread-item strong{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.thread-item small{font-size:11px;color:#63725e}.coach-toolbar{display:flex;justify-content:flex-end;margin-bottom:20px}.coach-toolbar .secondary{min-height:44px;gap:12px}.chat-message p{white-space:pre-wrap}.coach-page h1{overflow-wrap:anywhere}.modal-actions{display:flex;gap:12px;margin-top:24px}@media(max-width:1050px){.coach-layout{grid-template-columns:1fr}.coach-history{position:static;border:0;border-bottom:1px solid #e4e9de;padding:0 0 12px;max-height:220px}.thread-list{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:8px 0}.coach-toolbar{margin-top:8px}}@media(prefers-reduced-motion:no-preference){.thread-item{transition:background .15s ease}.chat-message{animation:checkpoint-in .18s ease-out}}

.coach-compose{position:sticky;bottom:16px;background:var(--app-surface);padding-top:14px;z-index:2}.coach-compose .check-label{margin-bottom:10px}.coach-compose .coach-input{position:static;margin-top:0}.coach-compose>.fine{text-align:center;font-size:.6875rem;margin:10px 0 0}@media(max-width:760px){.coach-compose{bottom:calc(88px + env(safe-area-inset-bottom,0px))}}
.coach-page:has(.coach-prompts) .coach-compose{position:static}.coach-toolbar{margin-bottom:0}.coach-page .page-heading{margin-top:24px}

@media(max-width:1050px){.coach-history .history-content{display:none}.coach-history.expanded .history-content{display:block}.coach-history{max-height:240px;padding-bottom:0}.coach-toolbar{display:none}.coach-layout{gap:12px}.coach-history .section-heading{margin:0}}

.completed-context{font-size:.8125rem;color:var(--app-muted);margin:8px 0 0}.checkpoint-date{font-size:.875rem;font-weight:600}.completed-history{border-top:1px solid var(--app-line);margin-top:18px;padding-top:8px;font-size:.8125rem}.completed-history summary{cursor:pointer;padding:12px 0;min-height:44px}.completed-history>div{display:flex;flex-wrap:wrap;gap:8px;max-height:240px;overflow:auto;padding:8px 0}.completed-history span{display:inline-flex;align-items:center;gap:8px;background:var(--dosy-green-100);border-radius:10px;padding:8px 12px}

.avatar-row.active{background:var(--dosy-green-100);border-color:#b9c5b1}

.journey-meter{margin:26px 0 28px;padding:22px 24px 16px;border-radius:18px;background:#e8eedf}.journey-meter-caption{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.journey-meter-caption>span{font-size:.8125rem;color:#38533a}.journey-meter-caption strong{font-size:2.4rem;letter-spacing:-.06em;line-height:1;font-weight:500;font-variant-numeric:tabular-nums;color:#1c4024}.journey-meter-caption small{font-size:1rem;letter-spacing:0;margin-left:3px}.journey-rail{position:relative;height:14px;border-radius:20px;background:#cedbc1;box-shadow:inset 0 1px 3px #1c402415;margin-right:6px}.journey-fill{height:100%;width:var(--journey-progress);position:relative;border-radius:inherit;background:linear-gradient(90deg,#1c4024,#59834e);animation:journey-advance 1s cubic-bezier(.22,1,.36,1) both}.journey-tip{position:absolute;right:-8px;top:-2px;width:18px;height:18px;border:3px solid #fff9ed;border-radius:50%;background:#1c4024;box-shadow:0 2px 8px #1c402433;z-index:2}.journey-tip:after{content:"";position:absolute;inset:-6px;border:1px solid #59834e;border-radius:50%;animation:journey-arrival 1.1s .65s ease-out both}.journey-milestone{position:absolute;top:50%;transform:translate(-50%,-50%);width:6px;height:6px;background:#f8f9f5;border-radius:50%}.journey-milestone.reached{background:#cde9b6}.journey-milestone-labels{display:grid;grid-template-columns:repeat(4,1fr);margin-top:12px;font-size:.6875rem;color:#63725e;text-align:right}.journey-milestone-labels .reached{color:#1c4024;font-weight:700}.journey-meter .journey-next{font-size:.75rem;margin:16px 0 0;color:#38533a}@keyframes journey-advance{from{width:var(--journey-from)}to{width:var(--journey-progress)}}@keyframes journey-arrival{from{transform:scale(.8);opacity:.7}to{transform:scale(2.4);opacity:0}}@media(max-width:600px){.journey-meter{padding:18px 16px 14px;margin:20px 0}.journey-meter-caption>span{max-width:170px}.journey-meter-caption strong{font-size:2rem}}@media(prefers-reduced-motion:reduce){.journey-fill,.journey-tip:after{animation:none}.journey-tip:after{display:none}}
/* Focused controls and weekly records */
select[data-enhanced][hidden]{display:none}.select-control{position:relative;min-width:0}.select-trigger{width:100%;min-height:52px;text-align:left;padding:14px 42px 14px 16px;border:1px solid #dce3d7;background:#fff;border-radius:14px;color:#1c4024;font-weight:500;position:relative}.select-trigger:after{content:"";position:absolute;right:19px;top:20px;width:7px;height:7px;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(45deg)}.select-options{position:relative;margin-top:6px;padding:6px;background:#fff;border:1px solid #dce3d7;border-radius:16px;box-shadow:0 12px 32px #1c402412;max-height:240px;overflow:auto;z-index:5}.select-options[hidden]{display:none}.select-options button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:12px;border-radius:10px;font-size:.875rem;color:#1c4024;min-height:44px}.select-options button:hover,.select-options button[aria-selected=true]{background:#edf2e7}.food-toolbar,.food-week-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.food-week-nav{font-size:.8125rem;color:#63725e}.segmented{display:flex;gap:4px;padding:4px;background:#eaf0e4;border-radius:14px}.segmented button{border:0;background:transparent;padding:10px 22px;border-radius:10px;min-height:44px}.segmented button[aria-pressed=true]{background:#fff;box-shadow:0 2px 8px #1c40240d}.week-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:14px;margin:30px 0}.week-chart>div{text-align:center;font-size:.75rem}.week-chart strong{font-weight:500}.week-bar{height:130px;display:flex;align-items:end;justify-content:center;margin:12px 0;background:#f1f4ed;border-radius:9px;overflow:hidden}.week-bar i{display:block;width:100%;background:#527347;border-radius:9px;transform-origin:bottom;animation:week-grow .5s ease-out}.week-chart button{border:0;background:none;min-height:44px;font-size:.75rem;padding:4px;color:#38533a}.week-chart small{display:block;color:#63725e}.weekly-food{padding:26px;background:#fff;border:1px solid #e4e9de;border-radius:22px}.weekly-food .section-heading{flex-wrap:wrap;font-size:.75rem}.weekly-meals{max-height:460px;overflow:auto}.calendar-controls{display:flex;justify-content:space-between;margin-bottom:16px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.calendar-grid>span{font-size:.75rem;color:#63725e;padding:8px 0}.calendar-grid button{min-height:44px;border:0;border-radius:12px;background:#f3f5ef;position:relative}.calendar-grid button.selected{background:#1c4024;color:#fff}.calendar-grid button i{position:absolute;bottom:5px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:currentColor}.calendar-grid button:disabled{opacity:.3;cursor:default}.feeling-choices{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 34px}.feeling-choices button{display:flex;gap:12px;align-items:center;padding:16px 18px;border:1px solid #dce3d7;border-radius:16px;background:#fff;min-height:54px}.feeling-choices button[aria-pressed=true]{border-color:#527347;background:#edf2e7}.feeling-dot{width:12px;height:12px;border-radius:50%;background:currentColor;color:#527347;flex:none}.feeling-well{color:#527347}.feeling-hungry{color:#997329}.feeling-nauseous{color:#8e688c}.feeling-tired{color:#617c9a}.feeling-constipated{color:#a16947}.feeling-chart{padding:26px;border:1px solid #e4e9de;border-radius:22px;margin-bottom:34px;background:#fff}.feeling-matrix{display:grid;grid-template-columns:minmax(90px,1.6fr) repeat(7,minmax(20px,1fr));gap:8px;align-items:center;margin:24px 0}.feeling-matrix>span{text-align:center;font-size:.75rem}.feeling-matrix small{display:block;color:#63725e}.feeling-matrix>strong{font-size:.75rem;font-weight:500}.feeling-cell{background:#f3f5ef;border-radius:8px;padding:8px 0;color:#b2bdae}.feeling-cell.marked{background:#edf2e7;font-size:1.2rem}.feeling-cell.marked.feeling-well{color:#527347}.feeling-cell.marked.feeling-hungry{color:#997329}.feeling-cell.marked.feeling-nauseous{color:#8e688c}.feeling-cell.marked.feeling-tired{color:#617c9a}.feeling-cell.marked.feeling-constipated{color:#a16947}@keyframes week-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
/* Coach: one composer, quiet history, room for the conversation */
.app-shell[data-page=coach] .workspace{max-width:1200px}.coach-layout{gap:28px;grid-template-columns:190px minmax(0,1fr)}.coach-history{border-right:0;background:#f5f7f1;border-radius:18px;padding:10px 14px}.coach-history .thread-list{margin:8px 0}.coach-page{width:100%;max-width:740px}.coach-page .page-heading{margin:28px 0 20px}.coach-page .page-heading .muted{max-width:430px}.coach-context{margin-bottom:8px}.coach-toolbar .secondary{border:0;background:#f3f5ef;border-radius:24px}.coach-prompts{grid-template-columns:1fr;gap:8px;margin:24px 0}.coach-prompts .prompt{flex-direction:row;min-height:52px;align-items:center;border:0;background:#f5f7f1}.coach-prompts .prompt svg{align-self:center}.coach-compose{padding:8px 0 0;background:transparent}.coach-compose .coach-input{border:1px solid #dbe3d4;border-radius:28px;background:#fffffff5;backdrop-filter:blur(20px);box-shadow:0 8px 32px #1c402410;align-items:flex-end;padding:10px}.coach-input textarea{resize:none;min-width:0;flex:1;width:100%;height:48px;min-height:48px;max-height:140px;line-height:1.5;padding:12px 10px;border:0!important;outline:none;background:transparent;font:inherit;font-size:1rem;color:#1c4024;margin:0;box-sizing:border-box}.coach-input textarea:focus-visible{outline:0}.coach-input:focus-within{border-color:#6e8b62;box-shadow:0 0 0 3px #52734715,0 8px 32px #1c402410}.coach-input .round-button{margin-bottom:3px}.coach-page .chat-message.user{background:#edf2e6}.coach-page .chat-message.assistant{padding:24px 2px}.app-shell[data-page=coach] .app-disclaimer{display:none}
@media(max-width:760px){.weekly-food,.feeling-chart{padding:20px 14px}.week-chart{gap:6px}.week-bar{height:100px}.feeling-matrix{gap:4px}.feeling-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.feeling-choices button{padding:12px;font-size:.8125rem}.coach-layout{display:block}.coach-history{max-height:210px;padding:4px 12px;border-radius:18px;margin-bottom:18px}.coach-page{padding-bottom:110px;min-height:calc(100dvh - 250px)}.coach-page .page-heading{margin:22px 0 18px}.coach-page .page-heading h1{font-size:1.8rem}.coach-page .page-heading .muted{font-size:.8125rem}.coach-compose,.coach-page:has(.coach-prompts) .coach-compose{position:fixed;left:12px;right:12px;bottom:calc(88px + env(safe-area-inset-bottom,0px));z-index:30;padding:0}.coach-compose .coach-input{border-radius:30px}.app-shell:has(#coach-question:focus) .mobile-nav{transform:translateY(120px);opacity:0;visibility:hidden;pointer-events:none}.app-shell:has(#coach-question:focus) .coach-compose{bottom:calc(12px + var(--keyboard-gap,0px))}.food-toolbar .secondary{padding:10px 14px}.segmented button{padding:10px 18px}}
@media(prefers-reduced-motion:reduce){.week-bar i{animation:none}}
.coach-page.has-messages .page-heading{text-align:left;align-self:stretch;margin:10px 0 8px}.coach-page.has-messages .page-heading h1{font-size:1.2rem;letter-spacing:-.025em;margin:0;line-height:1.4}.coach-page.has-messages .page-heading .muted,.coach-page.has-messages .coach-context{display:none}.feeling-note{font-size:.8125rem;white-space:pre-wrap;margin:10px 0 0;color:#63725e}
.coach-input textarea{height:52px;min-height:52px;overflow-y:hidden}
.coach-layout{display:block}.coach-page{max-width:760px;margin:auto}.coach-toolbar{display:flex!important;justify-content:space-between;margin:0 0 18px}.coach-toolbar .round-button{background:transparent;border:0}.coach-input{display:block!important}.composer-actions{display:flex;align-items:center;gap:6px;margin-top:4px}.composer-actions #coach-submit{margin-left:auto}.composer-actions .round-button:not(#coach-submit){background:transparent;color:#52614b;border:0}.coach-compose .coach-input{border-radius:26px;padding:10px 12px}.photo-camera{width:100%;min-height:150px;border:1px dashed #b7c8aa;border-radius:20px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;background:#f3f6ee;color:#1c4024;margin:12px 0 20px}.photo-camera:hover{background:#eaf0e2}.quick-records{display:grid;grid-template-columns:1fr 1fr;gap:12px}.coach-compose .coach-input textarea{display:block}.app-shell[data-page=coach] .workspace{max-width:1050px}@media(max-width:760px){.coach-page{padding-bottom:160px}.coach-toolbar{margin-bottom:12px}.coach-compose .coach-input{border-radius:28px}}
.entry-extras{border-top:1px solid #e1e6dc;margin:10px 0 20px;padding-top:8px}.entry-extras summary{cursor:pointer;padding:12px 0;font-size:.8125rem;color:#52614b;min-height:44px}.entry-extras[open] summary{margin-bottom:12px}
.mobile-nav .dock-add{flex:0 0 56px;background:#1c4024;color:#fff;border-radius:50%;height:56px;min-height:56px;margin:-17px 5px 0;box-shadow:0 4px 12px #1c402429;border:4px solid #f8f9f5}.mobile-nav .dock-add span{display:none}.mobile-nav .dock-add svg{width:25px;height:25px}.quick-add-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.quick-add-item{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:108px;padding:16px 8px;border:0;border-radius:18px;background:#eff3e9;color:#1c4024;font-size:.8125rem}.quick-add-item:hover{background:#e1ead6}.quick-history-links{display:flex;justify-content:space-between;gap:14px;margin-top:20px}.quick-receipt{display:flex;align-items:center;justify-content:space-between;padding:4px 14px;background:#eaf1e2;border-radius:14px;margin-bottom:8px;font-size:.8125rem}.voice-stage{text-align:center;padding:24px 0}.voice-stage audio{width:100%;margin-top:16px}.voice-orb{display:inline-grid;place-items:center;border-radius:50%;width:76px;height:76px;background:#e7eedf;color:#1c4024;margin-bottom:16px}.voice-orb.recording{animation:voice-pulse 1s ease-in-out infinite}.voice-stage p{font-variant-numeric:tabular-nums}.app-shell[data-page=food] .page-heading,.app-shell[data-page=feeling] .page-heading,.app-shell[data-page=progress] .page-heading{margin-bottom:22px}.app-shell[data-page=food] .page-heading .eyebrow,.app-shell[data-page=feeling] .page-heading .eyebrow,.app-shell[data-page=progress] .page-heading .eyebrow{display:none}.app-shell[data-page=food] h1,.app-shell[data-page=feeling] h1,.app-shell[data-page=progress] h1{font-size:2rem;margin-bottom:8px}.meal-group{border-left:2px solid #d9e3d0;padding-left:20px;margin:24px 0;position:relative}.meal-group h3:before{content:"";position:absolute;left:-6px;width:10px;height:10px;border-radius:50%;background:#8ba878;margin-top:6px}.meal-group h3{font-size:.875rem;color:#52614b}.meal-group .meal-row{background:#f4f6ef;border:0;border-radius:14px;padding:14px;margin-top:8px}.feeling-choices button{border:0;border-radius:18px;box-shadow:inset 0 0 0 1px #e2e8dc}.feeling-choices button[aria-pressed=true]{box-shadow:inset 0 0 0 2px #527347}.app-shell[data-page=progress] .progress-card{border:1px solid #e4e9de}.app-shell[data-page=food] .protein-panel{margin-bottom:16px}.nutrition-strip{gap:8px}.nutrition-strip>div{background:#f2f5ed;border-radius:14px;padding:14px}.voice-stage [hidden]{display:none}@keyframes voice-pulse{50%{box-shadow:0 0 0 12px #52734715}}@media(prefers-reduced-motion:reduce){.voice-orb.recording{animation:none}}@media(max-width:760px){.quick-add-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.mobile-nav{overflow:visible}.app-shell[data-page=food] .page-heading h1,.app-shell[data-page=feeling] .page-heading h1,.app-shell[data-page=progress] .page-heading h1{font-size:1.8rem}.meal-group{padding-left:14px}.nutrition-strip>div{padding:12px 8px}.quick-add-item{min-height:96px;font-size:.75rem}}

/* Quiet surfaces, floating capture actions, and coordinated input motion. */
.coach-input .round-button:not(#coach-submit) svg{transform:none}
.quick-bubbles{background:transparent;box-shadow:none;overflow:visible;padding:20px;width:min(94vw,430px)}
.quick-bubbles::backdrop{background:#17281b55;backdrop-filter:blur(8px)}
.quick-bubbles .modal-header{color:white;margin-bottom:18px}.quick-bubbles .modal-header h2{font-size:1.25rem}.quick-bubbles .modal-header button{background:#fff;color:#1c4024}
.quick-bubbles .quick-add-grid{gap:14px}.quick-bubbles .quick-add-item{border-radius:32px;background:#f7f9f2;box-shadow:0 8px 24px #13261920;animation:bubble-rise 460ms cubic-bezier(.2,.8,.2,1) both}
.quick-bubbles .quick-add-item:nth-child(2){animation-delay:35ms}.quick-bubbles .quick-add-item:nth-child(3){animation-delay:70ms}.quick-bubbles .quick-add-item:nth-child(4){animation-delay:105ms}.quick-bubbles .quick-add-item:nth-child(5){animation-delay:140ms}.quick-bubbles .quick-add-item:nth-child(6){animation-delay:175ms}
.quick-bubbles .quick-history-links{background:#fff;border-radius:24px;padding:10px 16px;animation:bubble-rise 420ms 180ms both}.quick-bubbles .quick-add-item:active{scale:.94}
.voice-wave{display:flex;justify-content:center;align-items:center;gap:5px;height:56px;margin:4px auto 20px}.voice-wave i{width:5px;height:8px;border-radius:8px;background:#6d8d59;transition:height 180ms,opacity 180ms;opacity:.4}.voice-stage:has(.recording) .voice-wave i{animation:voice-wave 850ms ease-in-out infinite;animation-delay:calc(var(--i)*-95ms);opacity:1}.voice-stage.transcribing .voice-wave i{animation:voice-wave 1200ms ease-in-out infinite;animation-delay:calc(var(--i)*-80ms)}.voice-orb{position:relative;transition:background 250ms,transform 250ms}.voice-orb.recording{background:#1c4024;color:#fff;animation:voice-halo 1800ms ease-in-out infinite}.voice-stage.transcribing .voice-orb{animation:voice-halo 1400ms ease-in-out infinite}
.app-extra{margin:28px 0;border-top:1px solid #e1e7dc;padding-top:18px}.app-extra>summary{cursor:pointer;min-height:44px;font-weight:500;font-size:.875rem;color:#53664e}.app-extra[open]>summary{margin-bottom:20px}
.app-shell[data-page=today] .journey-card{padding:22px;margin-bottom:28px}.app-shell[data-page=today] .journey-card .completed-context,.app-shell[data-page=today] .journey-meter-caption span,.app-shell[data-page=today] .journey-milestone-labels,.app-shell[data-page=today] .journey-next,.app-shell[data-page=today] .checkpoint-action>p{display:none}.app-shell[data-page=today] .journey-meter{padding:14px 16px;margin:16px 0}.app-shell[data-page=today] .journey-meter-caption{margin-bottom:8px}.app-shell[data-page=today] .checkpoint-week{margin:18px 0}.app-shell[data-page=today] .checkpoint-week small{display:none}.app-shell[data-page=today] .checkpoint-action{padding-top:14px}.app-shell[data-page=today] .checkpoint-action button{width:100%}.app-shell[data-page=today] .day-note{display:none}.app-shell[data-page=today] .page-heading{margin-bottom:24px}.app-shell[data-page=today] .page-heading h1{font-size:2rem}.coach-context{margin-bottom:20px}.coach-page .page-heading p{max-width:420px;line-height:1.55}
@keyframes bubble-rise{from{opacity:0;transform:translateY(65px) scale(.78)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes voice-wave{0%,100%{height:9px}45%{height:38px}70%{height:18px}}
@keyframes voice-halo{0%,100%{box-shadow:0 0 0 0 #6d8d5910;transform:scale(1)}50%{box-shadow:0 0 0 16px #6d8d5910;transform:scale(1.035)}}
@media(max-width:760px){.mobile-nav{transition:transform 360ms cubic-bezier(.22,1,.36,1),opacity 240ms,visibility 360ms;will-change:transform}.coach-compose,.coach-page:has(.coach-prompts) .coach-compose{transition:bottom 360ms cubic-bezier(.22,1,.36,1)}.quick-bubbles{inset:auto 0 calc(20px + env(safe-area-inset-bottom,0px));margin:0 auto;border-radius:0;padding:16px;max-height:85dvh}.quick-bubbles .quick-add-item{min-height:98px;border-radius:28px}.app-shell[data-page=today] .journey-card{padding:18px}.app-shell[data-page=today] .journey-card h2{font-size:1.3rem}.app-shell[data-page=today] .checkpoint-week i{width:30px;height:30px}.app-shell[data-page=today] .page-heading h1{font-size:1.75rem}.metrics-grid{gap:12px}.metric{padding:20px}.coach-page .page-heading p{font-size:.8125rem}}
@media(prefers-reduced-motion:reduce){.mobile-nav,.coach-compose,.voice-orb,.voice-wave i{transition:none!important}.quick-bubbles .quick-add-item,.quick-bubbles .quick-history-links,.voice-orb.recording,.voice-stage.transcribing .voice-orb,.voice-stage .voice-wave i{animation:none!important}}
.quick-bubbles .modal-header h2{color:#fff;text-shadow:0 1px 6px #13261940}
/* Capture stays in context: inline voice and a dock-anchored popover. */
.quick-popover{position:fixed;inset:auto 12px calc(94px + env(safe-area-inset-bottom,0px));margin:0 auto;width:min(calc(100vw - 24px),390px);max-height:calc(100dvh - 125px);overflow:auto;border:1px solid #dce5d5;border-radius:28px;padding:18px;background:#fcfdf9;box-shadow:0 12px 40px #19392326;transform-origin:50% 100%}
.quick-popover::backdrop{background:transparent;backdrop-filter:none}.quick-popover:popover-open{animation:capture-open 260ms cubic-bezier(.2,.9,.3,1) both}.quick-popover .modal-header{margin-bottom:12px}.quick-popover h2{font-size:1rem}.quick-popover .quick-add-grid{gap:8px}.quick-popover .quick-add-item{min-height:82px;border-radius:22px;gap:8px;animation:capture-item 320ms both}.quick-popover .quick-add-item:nth-child(2n){animation-delay:35ms}.quick-popover .quick-add-item:nth-child(3n){animation-delay:70ms}.quick-popover .quick-history-links{margin-top:12px;font-size:.75rem}.dock-add svg{transition:transform 220ms}.dock-add[aria-expanded=true] svg{transform:rotate(45deg)}
.coach-input.voice-active>label,.coach-input.voice-active>textarea,.coach-input.voice-active>.composer-actions{display:none!important}.inline-voice{animation:capture-open 200ms ease-out}.voice-inline-row{display:flex;align-items:center;gap:8px;min-height:54px}.live-wave{flex:1;display:flex;align-items:center;justify-content:center;gap:3px;height:40px;overflow:hidden}.live-wave i{flex:1;max-width:4px;min-width:2px;height:6px;border-radius:6px;background:#789b64;transition:height 85ms linear}.voice-clock{font-size:.75rem;font-variant-numeric:tabular-nums;color:#59704f}.voice-main{background:#1c4024!important;color:#fff!important}.voice-stop{width:13px;height:13px;border-radius:3px;background:currentColor}.voice-hint{font-size:.6875rem;color:#65735d;margin:8px 8px 4px;line-height:1.5}.inline-voice audio{width:100%;height:34px;margin:8px 0}.voice-error{font-size:.75rem;color:#943d32}.voice-error:empty{display:none}.inline-voice[data-state=transcribing] .live-wave i{animation:voice-wave 1s ease-in-out infinite}.inline-voice[data-state=transcribing] .live-wave i:nth-child(2n){animation-delay:-.4s}.inline-voice[data-state=recording] .voice-clock{color:#1c4024}.app-shell:has(.inline-voice) .mobile-nav{transform:translateY(120px);opacity:0;visibility:hidden;pointer-events:none}
@media(max-width:760px){.app-shell:has(.inline-voice) .coach-compose{bottom:calc(12px + env(safe-area-inset-bottom,0px))}}
@media(hover:hover){.prompt:hover,.quick-add-item:hover{transform:translateY(-2px);background:#eaf1e2}.habit:hover{background:#eff4e8}}.prompt,.quick-add-item,.habit,.round-button,.secondary,.primary{transition:transform 180ms ease,background 180ms,box-shadow 180ms}.prompt:active,.quick-add-item:active,.round-button:active,.primary:active,.secondary:active{transform:scale(.96)}.habit.complete .habit-check{animation:check-bloom 280ms ease-out}.chat-message{animation:capture-item 220ms ease-out}
@keyframes capture-open{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes capture-item{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes check-bloom{50%{transform:scale(1.18)}}
@media(prefers-reduced-motion:reduce){.quick-popover:popover-open,.quick-popover .quick-add-item,.inline-voice,.inline-voice .live-wave i,.habit.complete .habit-check,.chat-message{animation:none!important}.live-wave i,.dock-add svg,.prompt,.quick-add-item,.habit,.round-button,.secondary,.primary{transition:none!important}}
.amount-presets{display:flex;gap:10px;margin:20px 0}.amount-presets button{flex:1;display:grid;justify-items:center;gap:10px;border:1px solid #e0e8d7;background:#f2f6eb;border-radius:20px;padding:20px 10px;color:#24472a}.amount-presets button[aria-pressed=true]{border-color:#517543;background:#e4eed9}.amount-presets strong{font-size:.875rem}.feeling-face{flex:none}.mood-options button{display:flex;align-items:center;gap:8px}.photo-source{display:grid;grid-template-columns:1fr 1fr;gap:12px}.photo-source .photo-camera{min-height:116px;font-size:.8125rem;border-style:solid}
.capture-card{position:fixed;inset:auto 12px calc(94px + env(safe-area-inset-bottom,0px));margin:0 auto;width:min(390px,calc(100vw - 24px));max-height:calc(100dvh - 125px);overflow:auto;border:1px solid #dce5d5;border-radius:30px;padding:16px 20px 20px;background:#fcfdf9;color:#1c4024;box-shadow:0 12px 40px #19392326}.capture-card::backdrop{background:transparent;backdrop-filter:none}.capture-card:popover-open{animation:capture-open 240ms cubic-bezier(.2,.9,.3,1)}.capture-card header{display:flex;align-items:center;justify-content:space-between}.capture-card header h2{font-size:1rem;margin:0}.capture-card .round-button{background:transparent;border:0;color:#527347}.capture-value{display:flex;align-items:center;justify-content:center;gap:14px;margin:20px 0 18px}.capture-value>button{background:#eef3e7;width:44px;height:44px;font-size:1.5rem}.capture-value label{display:flex;flex-direction:column;align-items:center;margin:0;gap:0;min-width:0;width:180px}.capture-value input{width:100%;padding:0!important;border:0!important;box-shadow:none!important;background:transparent!important;text-align:center;font-size:3rem!important;font-weight:500;letter-spacing:-.06em;color:#1c4024;appearance:textfield;-moz-appearance:textfield;line-height:1.2}.capture-value input::-webkit-inner-spin-button,.capture-value input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.capture-value label>span:last-child{font-size:.8125rem;color:#76826e;margin-top:2px}.capture-presets{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.capture-presets button{border:1px solid transparent;background:#f0f4e9;border-radius:14px;color:#53674c;padding:11px 16px;min-height:44px;font-size:.8125rem}.capture-presets button[aria-pressed=true]{background:#e0ecd2;border-color:#8eae78;color:#1c4024}.capture-context{font-size:.75rem;text-align:center;margin:16px 0;color:#708065}.capture-save{width:100%;margin-top:12px;justify-content:center;border-radius:18px!important;min-height:48px}.capture-tabs{display:flex;gap:4px;background:#edf2e7;border-radius:14px;padding:4px;margin:14px 0 0}.capture-tabs button{flex:1;border:0;background:transparent;border-radius:11px;padding:10px;color:#617156}.capture-tabs button[aria-pressed=true]{background:white;box-shadow:0 2px 5px #19392310;color:#1c4024}.capture-card .form-error:empty{display:none}.workout-types button{padding:10px 12px}.capture-card button:active{transform:scale(.96)}@media(min-width:761px){.capture-card{bottom:32px;left:auto;right:32px}}@media(prefers-reduced-motion:reduce){.capture-card:popover-open{animation:none}.capture-card button:active{transform:none}}
/* All quick records share the same anchored, non-blocking surface. */
dialog.compact-capture{position:fixed;inset:auto 12px calc(94px + env(safe-area-inset-bottom,0px));margin:0 auto;width:min(390px,calc(100vw - 24px));max-width:390px;max-height:min(590px,calc(100dvh - 130px));border:1px solid #dce5d5;border-radius:30px;padding:18px 20px 20px;box-shadow:0 12px 40px #19392326;background:#fcfdf9;z-index:45;overflow:auto;scrollbar-width:thin;animation:capture-open 240ms cubic-bezier(.2,.9,.3,1)}dialog.compact-capture .modal-header{margin-bottom:12px}dialog.compact-capture h2{font-size:1.05rem;margin:0}dialog.compact-capture label{font-size:.8125rem;margin-bottom:12px}dialog.compact-capture input,dialog.compact-capture select{padding:10px 12px;border-radius:13px}dialog.compact-capture .primary{min-height:46px;border-radius:16px;margin-top:12px}.compact-capture .feeling-choices{gap:8px;margin:10px 0 0;display:grid;grid-template-columns:1fr 1fr}.compact-capture .feeling-choices button{padding:12px;font-size:.75rem;gap:8px}.compact-capture .photo-source .photo-camera{min-height:92px;margin:4px 0 12px}.compact-capture .ai-estimate-photo{max-height:150px;object-fit:contain}.compact-capture .fine{font-size:.6875rem;line-height:1.5}.compact-capture .ai-notice{font-size:.75rem;padding:10px}.compact-capture .entry-extras{margin:8px 0}.compact-capture .entry-extras summary{font-size:.8125rem;min-height:38px;cursor:pointer}@media(min-width:761px){dialog.compact-capture{inset:auto 32px 32px auto}}@media(prefers-reduced-motion:reduce){dialog.compact-capture{animation:none}}
/* Keep dock geometry identical across tabs, press and focus states. */
@media(max-width:760px){
 .mobile-nav{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 56px minmax(0,1fr) minmax(0,1fr);column-gap:4px;align-items:center;justify-items:stretch;box-sizing:border-box;height:66px;min-height:66px;max-height:66px;padding:6px;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));border:1px solid #e0e5d8;box-shadow:0 3px 12px #17251b0d;overflow:visible}
 .mobile-nav button,.mobile-nav button.active{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:52px;min-height:52px;max-height:52px;margin:0;padding:6px 0;border:0;gap:4px;font-weight:500;line-height:13px;letter-spacing:0;flex:none;box-shadow:none;transform:none;transition:background-color 150ms,color 150ms}
 .mobile-nav button span{display:block;white-space:nowrap;line-height:13px;height:13px;font-size:11px}
 .mobile-nav button svg{width:21px;height:21px;flex:none}
 .mobile-nav button:active,.mobile-nav button:focus{transform:none;box-shadow:none}
 .mobile-nav button:focus:not(:focus-visible){outline:none}
 .mobile-nav button:focus-visible{outline:2px solid #73935f;outline-offset:-3px}
 .mobile-nav .dock-add,.mobile-nav .dock-add:active,.mobile-nav .dock-add:focus{box-sizing:border-box;justify-self:center;align-self:center;flex:none;width:56px;min-width:56px;max-width:56px;height:56px;min-height:56px;max-height:56px;padding:0;margin:0;transform:translateY(-8px);border:4px solid #f8f9f5;background:#1c4024;color:#fff;border-radius:50%;box-shadow:0 2px 5px #1c402414}
 .mobile-nav .dock-add span{display:none}.mobile-nav .dock-add svg{width:25px;height:25px}
}
html{scrollbar-gutter:stable}
.meal-camera-hero{width:100%;display:flex;flex-direction:column;align-items:center;gap:12px;border:1px solid #e0e8d7;border-radius:24px;background:#edf3e5;padding:26px 16px 24px;color:#1c4024;cursor:pointer}.meal-camera-icon{display:grid;place-items:center;width:64px;height:64px;background:#fff;border-radius:22px;box-shadow:0 4px 12px #24472a0a}.meal-camera-hero strong{font-size:1.05rem;font-weight:500}.meal-camera-hero>span:last-child{font-size:.75rem;color:#6a7a60}.meal-source-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.meal-source-options button{display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid #e0e6db;background:white;color:#365331;border-radius:17px;min-height:56px;padding:10px;font-size:.8125rem}.meal-source-options button:hover,.meal-camera-hero:hover{background:#e6efd9}.meal-image-wrap{position:relative;border-radius:22px;overflow:hidden;margin-bottom:16px;background:#eef2e8}.meal-image-wrap img{display:block;width:100%;height:190px;object-fit:contain}.meal-image-wrap button{position:absolute;right:10px;bottom:10px;background:#fffffff0;border:1px solid #e0e6db;border-radius:12px;padding:10px 12px;font-size:.75rem;color:#1c4024}.meal-capture [hidden]{display:none!important}.meal-capture .form-error:empty{display:none}.meal-capture .ai-progress{margin:12px 0 0}.meal-camera-hero,.meal-source-options button{transition:transform 180ms,background 180ms}.meal-camera-hero:active,.meal-source-options button:active{transform:scale(.98)}@media(prefers-reduced-motion:reduce){.meal-camera-hero,.meal-source-options button{transition:none}}

/* One compact recorder inside the existing composer. */
.inline-voice{padding:2px 0}.voice-inline-row{gap:8px;min-height:64px}.voice-signal{flex:1;min-width:0;display:grid;gap:2px}.voice-signal .live-wave{height:30px;width:100%;gap:2px}.voice-signal .voice-hint{margin:0;font-size:10px;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-inline-row .round-button{width:40px;height:40px;min-width:40px;flex:none}.voice-inline-row .voice-main svg{width:20px;height:20px;transform:none}.voice-play{background:#eef3e8}.voice-pause{height:14px;width:12px;border-left:4px solid currentColor;border-right:4px solid currentColor}.voice-clock{min-width:30px;text-align:center}.voice-error{margin:6px 8px 2px;line-height:1.5}.inline-voice[data-state=recording] .voice-hint::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#be6954;margin-right:5px;vertical-align:1px}.inline-voice audio{display:none}
/* Treatment-aware Dosy: grouped surfaces, readable data, restrained Apple-inspired motion. */
.app-shell{--care-surface:#fff;--care-canvas:#f5f6f3;--care-text:#1c4024;--care-secondary:#53634f;--care-rule:#e3e8df;--care-tint:#eaf0e3;background:var(--care-canvas)}
.app-shell .app-main{background:var(--care-canvas)}.app-shell .workspace{max-width:1020px}.app-shell .page-heading h1{font-family:var(--dosy-font-sans,Manrope,sans-serif);font-weight:600;letter-spacing:-.045em;font-size:clamp(1.9rem,3vw,2.7rem);line-height:1.16}.app-shell .today-heading{margin-bottom:26px}.app-shell .page-heading p.muted{font-size:1rem}.app-shell .app-top{border-bottom:1px solid var(--care-rule)}
.treatment-home,.treatment-progress,.today-priorities{background:var(--care-surface);border:1px solid var(--care-rule);border-radius:24px;padding:26px;margin-bottom:22px;box-shadow:0 2px 4px #18341f03}.treatment-heading{display:flex;align-items:center;gap:14px}.treatment-heading>div{flex:1;min-width:0}.treatment-heading h2{font-size:1.35rem;line-height:1.3;margin:4px 0 0;letter-spacing:-.035em;overflow-wrap:anywhere}.treatment-symbol{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:var(--care-tint);color:var(--care-text);flex:none}.treatment-heading .eyebrow{font-size:.65rem;letter-spacing:.09em}.treatment-summary{display:grid;grid-template-columns:1fr 1fr;margin:24px 0;gap:24px}.treatment-summary>div{display:grid;gap:5px;min-width:0}.treatment-summary>div+div{padding-left:24px;border-left:1px solid var(--care-rule)}.treatment-summary span,.treatment-summary small{font-size:.8rem;color:var(--care-secondary);line-height:1.5}.treatment-summary strong{font-size:1.65rem;font-weight:600;letter-spacing:-.04em}.treatment-summary small{overflow-wrap:anywhere}.treatment-summary>p{grid-column:1/-1;margin:0;color:var(--care-secondary);font-size:1rem;line-height:1.65}.treatment-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.treatment-actions .secondary{flex:1;white-space:nowrap;justify-content:center;background:#f6f8f3;box-shadow:none;border:0}.treatment-actions .text-button{margin-left:auto}.treatment-actions .secondary svg{width:19px;height:19px}.entry-badge{background:#1c4024;color:white;border-radius:20px;min-width:20px;font-size:.7rem;display:inline-grid;place-items:center}
.daily-vitals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:22px}.vital{border:1px solid var(--care-rule);background:var(--care-surface);border-radius:22px;text-align:left;padding:20px;color:var(--care-text);transition:background 150ms,transform 150ms;min-width:0}.vital:hover{background:#eef3e9}.vital:active{transform:scale(.98)}.vital>span{display:flex;align-items:center;gap:8px;font-size:.8125rem;font-weight:500}.vital>strong{display:block;font-size:2rem;letter-spacing:-.045em;font-weight:600;margin:14px 0}.vital strong small{font-size:.85rem;letter-spacing:0;font-weight:400}.vital>small{display:block;font-size:.75rem;color:var(--care-secondary);margin-top:9px}.vital-rail{height:5px;border-radius:8px;background:#eaf0e4;overflow:hidden}.vital-rail i{height:100%;display:block;border-radius:8px;background:#577b42;transition:width 400ms cubic-bezier(.2,.8,.2,1)}.today-priorities .habit{border:0;border-top:1px solid var(--care-rule);border-radius:0;padding:18px 0;background:none;min-height:64px;font-size:.95rem}.today-priorities .habit.complete{color:#4d6544}.priority-footer{display:flex;justify-content:space-between;gap:12px;margin-top:10px}.today-priorities h2{font-size:1.125rem}.app-shell[data-page=today] .journey-card{background:#fff;border:1px solid var(--care-rule);border-radius:24px;box-shadow:none}.app-shell[data-page=today] .journey-meter{display:none}.app-shell[data-page=today] .journey-card h2{font-size:1.25rem}.app-shell[data-page=today] .checkpoint-week{margin-top:18px}.app-shell[data-page=today] .checkpoint-week small{font-size:.625rem}.app-shell .text-button{min-height:44px}
.treatment-filter{display:flex;flex-wrap:wrap;gap:6px;margin:22px 0;background:#f3f5ef;border-radius:14px;padding:5px}.treatment-filter button{border:0;min-height:44px;flex:1;padding:8px 12px;font-size:.8rem;color:#53634f;background:none;border-radius:10px}.treatment-filter button[aria-pressed=true]{background:#fff;color:#1c4024;box-shadow:0 1px 4px #1c402414;font-weight:600}.chart-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.chart-caption strong{font-size:1.5rem;font-weight:600}.chart-caption small,.chart-caption>span{font-size:.75rem;color:#53634f;font-weight:400}.treatment-chart{display:flex;gap:10px;height:155px;margin:16px 0 8px}.chart-scale{display:flex;flex-direction:column;justify-content:space-between;padding-bottom:36px;font-size:.7rem;color:#53634f;min-width:28px}.symptom-columns{display:flex;flex:1;gap:7px;background:repeating-linear-gradient(to top,transparent 0,transparent 37px,#e7ebe2 38px,transparent 39px);min-width:0}.symptom-column{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0}.symptom-column-track{height:114px;display:flex;align-items:flex-end;justify-content:center;width:100%;position:relative}.symptom-column-track i{display:block;width:100%;max-width:22px;background:#698a54;border-radius:5px 5px 2px 2px;animation:care-bar 400ms cubic-bezier(.2,.8,.2,1) both;transform-origin:bottom}.missing-dot{color:#7b8776;font-size:20px}.med-marker{height:19px;color:#a16631;line-height:19px;font-size:10px}.symptom-column small{font-size:.625rem;color:#53634f}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.75rem;color:#53634f;margin:14px 0 20px}.weight-overlay{border-top:1px solid #e3e8df;padding-top:18px}.weight-overlay>div{display:flex;justify-content:space-between;gap:12px;font-size:.8125rem}.weight-overlay svg{width:100%;height:100px;overflow:visible}.weight-overlay circle{fill:#1c4024}.weight-overlay path{stroke:#a16631;stroke-width:1;stroke-dasharray:3 4}.treatment-data summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:.8125rem}.treatment-table{overflow:auto}.treatment-table table{border-collapse:collapse;width:100%;font-size:.75rem}.treatment-table td,.treatment-table th{text-align:left;padding:10px;border-bottom:1px solid #e3e8df}.treatment-progress .fine{font-size:.75rem;line-height:1.6}.treatment-progress .section-heading h2{margin:5px 0;font-size:1.4rem;letter-spacing:-.035em}
.treatment-sheet{width:min(94vw,540px);padding:28px;background:#fafbf8;color:#1c4024;overflow:auto}.treatment-sheet::backdrop{background:#10201545;backdrop-filter:none}.treatment-sheet .modal-header{margin-bottom:20px}.treatment-sheet h2{font-size:1.4rem;letter-spacing:-.04em}.treatment-sheet label,.treatment-onboarding label{font-size:.875rem;display:grid;gap:8px;margin:16px 0}.treatment-sheet input,.treatment-sheet select,.treatment-sheet textarea{width:100%;box-sizing:border-box;min-width:0;min-height:48px;background:white;font-size:1rem;border:1px solid #dce3d7;border-radius:12px;padding:12px;color:#1c4024}.treatment-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.treatment-sheet .fine{font-size:.75rem;line-height:1.6;color:#53634f}.treatment-sheet .muted{font-size:.9375rem;line-height:1.6}.sheet-grabber{display:none}.sheet-footer{position:sticky;bottom:-28px;background:#fafbf8;padding:12px 0 8px;border-top:1px solid #e3e8df;margin-top:20px;z-index:1}.sheet-footer .primary{margin:0;min-height:50px;border-radius:14px}.sheet-footer .remove-entry{display:block;margin:8px auto 0;color:#923f37}.symptom-inputs fieldset{border:0;margin:0 0 22px;padding:0;min-width:0}.symptom-inputs legend{font-size:.9375rem;font-weight:600;margin-bottom:10px}.severity-options{display:flex;gap:5px;align-items:center}.severity-options label{flex:1;margin:0;position:relative;cursor:pointer;min-width:0}.severity-options input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}.severity-options span{display:grid;place-items:center;font-size:.75rem;border:1px solid #dce3d7;background:#fff;border-radius:10px;min-height:44px;padding:4px;box-sizing:border-box;transition:background 120ms}.severity-options input:checked+span{background:#1c4024;color:#fff;border-color:#1c4024}.severity-options input:focus-visible+span{outline:3px solid #698a54;outline-offset:3px}.clear-level{border:0;background:transparent;color:#53634f;width:28px;min-height:44px;font-size:20px;flex:none}.entry-details summary,.treatment-onboarding summary{min-height:44px;cursor:pointer;padding:12px 0;font-size:.9rem}.treatment-onboarding{border-top:1px solid #e3e8df;margin-top:20px}.treatment-event{display:flex;align-items:center;gap:12px;text-align:left;border:0;border-bottom:1px solid #e3e8df;background:transparent;width:100%;padding:18px 0;color:#1c4024;min-height:72px}.treatment-event>span:nth-child(2){flex:1;min-width:0}.treatment-event strong{display:block;font-size:.9rem;font-weight:600;overflow-wrap:anywhere}.treatment-event small{display:block;font-size:.75rem;color:#53634f;line-height:1.6;margin-top:4px;overflow-wrap:anywhere}.event-dot{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#eaf0e3;flex:none}.event-dot.symptoms{background:#f1e9dc;font-size:24px;color:#92602f}.treatment-empty{text-align:center;padding:32px 12px}.treatment-empty p{color:#53634f;line-height:1.6}.treatment-empty svg{width:36px;height:36px}.treatment-sheet .round-button{min-width:44px;min-height:44px}.treatment-sheet button:focus-visible,.vital:focus-visible{outline:3px solid #698a54;outline-offset:3px}
@keyframes care-bar{from{transform:scaleY(.05);opacity:.4}to{transform:scaleY(1);opacity:1}}
@media(max-width:760px){.app-shell .app-main{padding-inline:18px}.app-shell .app-top{margin-bottom:24px;border:0}.treatment-home,.treatment-progress,.today-priorities{padding:20px;border-radius:22px;margin-bottom:18px}.treatment-heading{gap:10px}.treatment-heading h2{font-size:1.1rem}.treatment-heading .text-button{font-size:.75rem}.treatment-symbol{width:42px;height:42px;border-radius:14px}.treatment-summary{gap:14px;margin:22px 0}.treatment-summary>div+div{padding-left:14px}.treatment-summary strong{font-size:1.4rem}.treatment-summary small{font-size:.75rem}.treatment-actions .secondary{font-size:.8125rem;gap:8px;padding:12px 10px;min-height:48px}.treatment-actions>.text-button{flex-basis:100%;justify-content:center;margin:0;min-height:30px;font-size:.75rem}.daily-vitals{gap:8px}.vital{padding:15px 12px;border-radius:18px}.vital>span{font-size:.6875rem;gap:5px}.vital>span svg{width:15px;height:15px}.vital>strong{font-size:1.65rem}.vital>small{font-size:.65rem;line-height:1.5}.vital strong small{font-size:.75rem}.chart-caption{align-items:flex-start;flex-direction:column;gap:4px}.treatment-filter{gap:3px}.treatment-filter button{font-size:.6875rem;padding-inline:6px;flex-basis:28%}.treatment-chart{gap:6px}.symptom-columns{gap:4px}.treatment-sheet{inset:auto 0 0;margin:0;width:100%;max-height:92dvh;border-radius:28px 28px 0 0;padding:12px 22px calc(22px + env(safe-area-inset-bottom,0px));animation:care-sheet 280ms cubic-bezier(.2,.8,.2,1)}.sheet-grabber{display:block;width:34px;height:4px;border-radius:4px;background:#cbd3c5;margin:0 auto 22px}.sheet-footer{bottom:calc(-22px - env(safe-area-inset-bottom,0px));padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}.priority-footer .text-button{font-size:.75rem}.treatment-fields{gap:12px}.treatment-progress .section-heading{align-items:flex-start}.treatment-progress .section-heading h2{font-size:1.25rem}.treatment-progress .eyebrow{font-size:.625rem}.app-shell .app-extra{background:transparent}}
@keyframes care-sheet{from{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){.symptom-column-track i,.treatment-sheet{animation:none}.vital,.vital-rail i,.severity-options span{transition:none}}
@media(prefers-contrast:more){.treatment-home,.treatment-progress,.vital,.today-priorities{border-color:#738569}.treatment-summary small,.treatment-sheet .fine,.chart-legend{color:#354b30}}
/* Focused daily composition: one treatment anchor, one quiet essentials list. */
.app-shell[data-page=today] .workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}.app-shell[data-page=today] .today-heading,.home-overview,.app-shell[data-page=today] .app-extra{grid-column:1/-1}.app-shell[data-page=today] .today-heading{margin-bottom:0;position:relative}.today-heading .eyebrow{color:#53634f;font-size:.75rem;letter-spacing:.02em;text-transform:none;margin-bottom:9px}.app-shell .today-heading h1{font-size:3.5rem;line-height:1.03;letter-spacing:-.06em;margin-bottom:10px}.heading-dot{color:#789759}.app-shell .today-heading .muted{font-size:1rem;color:#53634f;margin:0}.home-overview{display:grid;grid-template-columns:1.1fr 1fr;gap:24px}.home-overview .treatment-home{margin:0;background:#1c4024;color:#fffdf5;border:0;box-shadow:0 8px 24px #16381d0c;padding:28px;border-radius:26px;display:flex;flex-direction:column}.home-overview .treatment-symbol{background:#ffffff13;color:#d9e8c7;border:1px solid #ffffff16}.home-overview .treatment-heading .eyebrow{color:#c2d5b5;font-size:.6875rem;letter-spacing:.1em}.home-overview .treatment-heading h2{color:#fffdf5;font-size:1.5rem;font-weight:600;margin-top:6px}.home-overview .treatment-heading>.text-button{color:#e1ebd7;font-size:.8125rem}.home-overview .treatment-summary{margin:28px 0;flex:1;align-items:start}.home-overview .treatment-summary span{color:#cad9c2;font-size:.8125rem}.home-overview .treatment-summary small{color:#c3d3b9;font-size:.75rem;line-height:1.55}.home-overview .treatment-summary strong{color:#fffdf5;font-size:1.9rem;font-weight:500;letter-spacing:-.04em;line-height:1.15;margin:4px 0}.home-overview .treatment-summary>div+div{border-color:#ffffff26}.home-overview .treatment-summary>p{color:#e0e9d9}.home-overview .treatment-actions{gap:8px}.home-overview .treatment-actions .secondary{background:#e2edce;color:#16351c;border:0;border-radius:13px;font-weight:600;min-height:48px}.home-overview .treatment-actions .secondary:nth-child(2){background:#ffffff13;color:#fffdf5;border:1px solid #ffffff25}.home-overview .treatment-actions>.text-button{color:#d2dfc9;font-size:.75rem;flex-basis:100%;justify-content:center;min-height:32px;margin:4px 0 -8px}.home-overview .entry-badge{background:#dce9cd;color:#1c4024}
.daily-vitals{display:flex;flex-direction:column;gap:0;background:#fff;border:1px solid #e4e8df;border-radius:26px;margin:0;padding:24px}.vitals-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.vitals-heading h2{font-size:1rem;letter-spacing:-.025em;font-weight:600;margin:0}.vitals-heading>span{font-size:.625rem;letter-spacing:.08em;color:#63725b}.daily-vitals .vital{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 16px;padding:15px 0;border:0;border-radius:0;background:none;min-height:85px;align-content:center}.daily-vitals .vital+.vital{border-top:1px solid #e9ece5}.daily-vitals .vital:hover{background:#f7f9f3}.daily-vitals .vital>span{grid-column:1;grid-row:1;font-size:.85rem;gap:9px}.daily-vitals .vital>span svg{color:#6a8259}.daily-vitals .vital>strong{grid-column:2;grid-row:1/3;margin:0;align-self:center;font-size:1.8rem;letter-spacing:-.045em;font-weight:500}.daily-vitals .vital>small{grid-column:1;grid-row:2;margin:0;font-size:.6875rem;color:#53634f;padding-left:27px}.daily-vitals .vital-rail{grid-column:1/-1;grid-row:3;height:3px;margin-top:3px;max-width:none}.daily-vitals .vital-rail i{background:#7b985d}
.app-shell[data-page=today] .today-priorities,.app-shell[data-page=today] .journey-card{margin:0;height:100%;box-sizing:border-box;border-radius:24px;padding:24px}.app-shell[data-page=today] .today-priorities .section-heading h2{font-size:1.15rem}.app-shell[data-page=today] .journey-card .eyebrow{font-size:.625rem}.app-shell[data-page=today] .checkpoint-action{flex-direction:column;align-items:stretch;gap:8px}.app-shell[data-page=today] .checkpoint-action>.primary,.app-shell[data-page=today] .checkpoint-action>.secondary{background:#edf2e6;color:#1c4024;border:0;box-shadow:none;width:100%}.app-shell[data-page=today] .priority-footer{gap:8px;flex-wrap:wrap}.app-shell[data-page=today] .today-priorities .habit{font-size:.875rem;line-height:1.65}.app-shell[data-page=today] .habit-check{border-radius:50%;width:23px;height:23px;flex:none}.app-shell[data-page=today] .app-extra{margin:0}.app-shell[data-page=today] .app-extra summary{font-size:.875rem}.app-shell[data-page=today] .today-priorities .text-button{font-size:.75rem}.app-shell[data-page=today] .journey-card .text-button{font-size:.75rem}
@media(max-width:1000px){.home-overview{grid-template-columns:1fr}.daily-vitals{padding:20px 24px}.daily-vitals .vital{min-height:76px}.app-shell[data-page=today] .workspace{grid-template-columns:1fr;gap:20px}.app-shell[data-page=today] .today-heading,.home-overview,.app-shell[data-page=today] .app-extra{grid-column:1}.app-shell[data-page=today] .today-priorities,.app-shell[data-page=today] .journey-card{height:auto}}
@media(max-width:760px){.app-shell[data-page=today] .app-main{padding-inline:20px}.app-shell[data-page=today] .app-top{min-height:74px;margin-bottom:12px}.app-shell .today-heading h1{font-size:2.8rem}.app-shell .today-heading .muted{font-size:.9375rem}.app-shell[data-page=today] .workspace{gap:20px}.home-overview{gap:18px}.home-overview .treatment-home{padding:22px;border-radius:24px}.home-overview .treatment-heading h2{font-size:1.4rem}.home-overview .treatment-heading .eyebrow{font-size:.625rem}.home-overview .treatment-summary{margin:24px 0}.home-overview .treatment-summary strong{font-size:1.65rem}.home-overview .treatment-summary span{font-size:.75rem}.home-overview .treatment-summary small{font-size:.6875rem}.home-overview .treatment-actions .secondary{font-size:.8125rem;min-height:46px}.daily-vitals{padding:20px 22px;border-radius:24px}.vitals-heading{margin-bottom:7px}.vitals-heading h2{font-size:.9375rem}.daily-vitals .vital{min-height:74px;padding:12px 0}.daily-vitals .vital>strong{font-size:1.7rem}.daily-vitals .vital>small{font-size:.6875rem}.app-shell[data-page=today] .today-priorities,.app-shell[data-page=today] .journey-card{padding:22px}.home-overview .treatment-summary strong{overflow-wrap:anywhere}}
@media(prefers-contrast:more){.home-overview .treatment-summary small,.home-overview .treatment-summary span,.home-overview .treatment-heading .eyebrow{color:#fff}.home-overview .treatment-actions .secondary:nth-child(2){border-color:white}}
/* Floating capture island: one stable surface above the dock. */
.quick-popover,.capture-card{inset:auto 18px calc(92px + env(safe-area-inset-bottom,0px));width:min(370px,calc(100vw - 36px));max-height:calc(100dvh - 130px);box-sizing:border-box;border:1px solid #e7eddf;border-radius:30px;background:#fafbf8;color:#1c4024;box-shadow:0 14px 38px #12251b24,0 2px 5px #12251b18;padding:18px;transform-origin:50% 100%;scrollbar-width:thin;overscroll-behavior:contain}.quick-popover:popover-open,.capture-card:popover-open{animation:island-expand 280ms cubic-bezier(.2,.8,.2,1) both}.quick-popover .modal-header{margin:0 0 10px;padding:0 2px}.quick-popover h2,.capture-card header h2{color:#1c4024;font-size:.9375rem;font-weight:500;letter-spacing:-.02em}.quick-popover .round-button,.capture-card .round-button{color:#3f5938;background:#edf1e7;border:0;width:36px;height:36px;min-width:36px;min-height:36px}.quick-popover .quick-add-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.quick-popover .quick-add-item{flex-direction:row;justify-content:flex-start;text-align:left;gap:10px;min-height:58px;padding:10px;border-radius:16px;background:#f0f3eb;color:#1c4024;font-size:.8125rem;animation:none;transform:none;transition:background 140ms,transform 140ms}.quick-popover .quick-add-item svg{width:20px;height:20px;padding:7px;box-sizing:content-box;border-radius:11px;background:#e4ebda;color:#527347;flex:none}.quick-popover .quick-add-item:hover,.quick-popover .quick-add-item:focus-visible{background:#e7eddf;transform:none}.quick-popover .quick-add-item:active{transform:scale(.98)}.quick-popover .quick-history-links{margin-top:12px;padding-top:10px;border-top:1px solid #e1e7d9;gap:6px}.quick-popover .quick-history-links .text-button{color:#596d4f;font-size:.6875rem;min-height:36px;padding:4px}.capture-card header{gap:8px}.capture-card .capture-value{margin:22px 0 18px}.capture-card .capture-value input{color:#1c4024}.capture-card .capture-value>button{width:44px;height:44px;background:#e4ebda;color:#1c4024}.capture-card .capture-value label>span:last-child,.capture-card .capture-context{color:#627459}.capture-card .capture-presets button{background:#edf2e6;color:#3f5938;border:1px solid #edf1e7;border-radius:12px}.capture-card .capture-presets button[aria-pressed=true]{background:#dce8cf;color:#1c4024;border-color:#dce8cf}.capture-card .capture-save{background:#dce8cf;color:#1c4024;border:0;border-radius:15px!important;box-shadow:none;min-height:48px}.capture-card .capture-tabs{background:#edf1e7;border-radius:12px;padding:4px}.capture-card .capture-tabs button{color:#576d4e;min-height:44px}.capture-card .capture-tabs button[aria-pressed=true]{background:#fff;color:#1c4024;box-shadow:none}.capture-card .form-error{color:#943d32}.capture-card button:focus-visible,.quick-popover button:focus-visible{outline:2px solid #73935f;outline-offset:2px}
/* Chart metrics remain fully visible with comfortable touch targets. */
.treatment-progress .treatment-filter{display:flex;flex-wrap:wrap;overflow:visible;gap:8px;border-radius:0;padding:0;margin:24px 0;background:transparent}.treatment-progress .treatment-filter button{flex:1 1 auto;white-space:normal;font-size:.8125rem;line-height:1.3;padding:12px 14px;min-height:46px;border:1px solid #e1e7d9;border-radius:13px;color:#53634f;background:#f5f7f1;transition:background 160ms,color 160ms;box-shadow:none}.treatment-progress .treatment-filter button[aria-pressed=true]{background:#1c4024;color:#fff;border-color:#1c4024;box-shadow:none}.treatment-progress .treatment-filter button:focus-visible{outline:2px solid #577b42;outline-offset:2px}@media(max-width:760px){.treatment-progress .treatment-filter{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.treatment-progress .treatment-filter button{grid-column:span 2;min-width:0;padding:12px 6px}.treatment-progress .treatment-filter button:nth-child(-n+2){grid-column:span 3}}.treatment-progress .chart-caption{min-height:48px}.treatment-progress .treatment-chart{contain:layout}
@keyframes island-expand{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(min-width:761px){.quick-popover,.capture-card{inset:auto 28px 28px auto;margin:0}}
@media(prefers-reduced-motion:reduce){.quick-popover:popover-open,.capture-card:popover-open{animation:none}.quick-popover .quick-add-item,.treatment-progress .treatment-filter button{transition:none}}
/* Focused treatment entry panels. */
.treatment-sheet.treatment-capture{width:min(480px,calc(100vw - 28px));max-height:calc(100dvh - 48px);padding:24px;border:1px solid #e6eae1;border-radius:30px;background:#fafbf8;box-shadow:0 24px 80px #142c2626;animation:treatment-enter 260ms cubic-bezier(.2,.8,.2,1);overscroll-behavior:contain;scrollbar-width:thin}
.treatment-capture::backdrop{background:#10201530;backdrop-filter:none}
.treatment-capture .modal-header{gap:12px;margin:0 0 14px;align-items:center}.treatment-capture .modal-header h2{font-size:1.4rem;letter-spacing:-.04em;font-weight:600;line-height:1.2;margin:0}.treatment-capture .round-button{width:44px;height:44px;min-width:44px;border:0;background:#edf0e9;color:#53634f}.treatment-capture form>.muted{font-size:.875rem;line-height:1.5;margin:0 0 20px;color:#63725c}.treatment-capture label{font-size:.8125rem;font-weight:500;margin:12px 0;gap:7px}.treatment-capture input,.treatment-capture select,.treatment-capture textarea{border-color:#e5e9df;border-radius:13px;box-shadow:none}.treatment-capture input:focus,.treatment-capture textarea:focus{outline:2px solid #789759;outline-offset:2px}.treatment-capture .treatment-fields{gap:12px}.treatment-capture .fine{font-size:.6875rem;line-height:1.5;margin:8px 0}.treatment-capture .capture-details{margin-top:16px;border-top:1px solid #e7eae2}.treatment-capture .capture-details>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:48px;font-size:.8125rem;padding:12px 0}.treatment-capture .capture-details>summary span:last-child{font-size:.75rem;color:#63725c}.treatment-capture .capture-details[open]>summary{color:#1c4024}.treatment-capture .sheet-footer{bottom:-24px;background:#fafbf8;padding:12px 0 4px;margin-top:8px;border:0;z-index:2}.treatment-capture .sheet-footer .primary{min-height:50px;border-radius:16px;font-size:.9375rem;box-shadow:none}.treatment-capture .form-error:empty{display:none}.treatment-capture .symptom-inputs{display:grid;gap:7px}.treatment-capture .symptom-row{border:1px solid #e6eae1;background:white;border-radius:16px;overflow:hidden}.treatment-capture .symptom-row>summary{display:flex;align-items:center;gap:10px;min-height:58px;padding:8px 12px;list-style:none;cursor:pointer;font-size:.875rem;font-weight:500}.treatment-capture summary::-webkit-details-marker{display:none}.treatment-capture .symptom-number{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:10px;background:#f0f3e9;color:#677e54}.treatment-capture .symptom-status{margin-left:auto;font-size:.75rem;font-weight:400;color:#75816f}.treatment-capture .has-value .symptom-status{color:#31582c;font-weight:600}.treatment-capture .has-value{border-color:#c4d4b6}.treatment-capture .symptom-row summary>svg{color:#7c8974;transition:transform 180ms}.treatment-capture .symptom-row[open] summary>svg{transform:rotate(90deg)}.treatment-capture .symptom-inputs fieldset{margin:0;padding:0 12px 6px;animation:treatment-options 160ms ease-out}.treatment-capture .severity-options{gap:5px}.treatment-capture .severity-options label{margin:0}.treatment-capture .severity-options span{font-size:.6875rem;min-height:44px;border-radius:10px;border:0;background:#f1f4ed}.treatment-capture .severity-options input:checked+span{background:#1c4024;color:white}.treatment-capture .severity-options input:focus-visible+span{outline:2px solid #789759;outline-offset:2px}.treatment-capture .clear-level{width:auto;min-height:36px;font-size:.6875rem;color:#62715a;display:block;margin-left:auto;background:none;padding:6px 0}.treatment-capture summary:focus-visible{outline:2px solid #789759;outline-offset:-3px;border-radius:14px}
@keyframes treatment-enter{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes treatment-options{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){.treatment-sheet.treatment-capture{inset:auto 0 calc(12px + env(safe-area-inset-bottom,0px));margin:0 auto;max-height:calc(100dvh - 36px - env(safe-area-inset-bottom,0px));padding:12px 18px 18px;border-radius:28px}.treatment-capture .sheet-grabber{margin-bottom:14px}.treatment-capture .sheet-footer{bottom:-18px;padding:10px 0 0}.treatment-capture .modal-header h2{font-size:1.3rem}.treatment-capture form>.muted{margin-bottom:14px}}
@media(prefers-reduced-motion:reduce){.treatment-sheet.treatment-capture,.treatment-capture .symptom-inputs fieldset{animation:none}.treatment-capture .symptom-row summary>svg{transition:none}}

/* Keep navigation anchored to the visible viewport, including the keyboard. */
@media(max-width:760px){
 .app-shell .mobile-nav,.app-shell:has(#coach-question:focus) .mobile-nav,.app-shell:has(.inline-voice) .mobile-nav{position:fixed;top:auto;bottom:calc(10px + env(safe-area-inset-bottom,0px) + var(--keyboard-gap,0px));transform:none;opacity:1;visibility:visible;pointer-events:auto;transition:none;will-change:auto}
 .app-shell .coach-compose,.app-shell .coach-page:has(.coach-prompts) .coach-compose,.app-shell:has(#coach-question:focus) .coach-compose,.app-shell:has(.inline-voice) .coach-compose{bottom:calc(88px + env(safe-area-inset-bottom,0px) + var(--keyboard-gap,0px));transition:none}
 .app-main{padding-bottom:calc(110px + env(safe-area-inset-bottom,0px))}
 .quick-popover,.capture-card{bottom:calc(92px + env(safe-area-inset-bottom,0px) + var(--keyboard-gap,0px))}
}

.capture-header-spacer{width:36px;flex:0 0 36px}
/* Give the chat composer the bottom edge while typing. */
@media(max-width:760px){
 .app-shell .mobile-nav{transition:transform 260ms cubic-bezier(.22,1,.36,1),opacity 180ms,visibility 260ms}
 .app-shell:has(#coach-question:focus) .mobile-nav{transform:translateY(90px);opacity:0;visibility:hidden;pointer-events:none}
 .app-shell .coach-compose,.app-shell .coach-page:has(.coach-prompts) .coach-compose{transition:bottom 260ms cubic-bezier(.22,1,.36,1)}
 .app-shell:has(#coach-question:focus) .coach-compose{bottom:calc(12px + env(safe-area-inset-bottom,0px) + var(--keyboard-gap,0px))}
}
@media(prefers-reduced-motion:reduce){.app-shell .mobile-nav,.app-shell .coach-compose{transition:none!important}}

/* A quiet depth cue keeps the app header connected to the Dosy surface. */
.app-shell .app-top{
  position:relative;
  isolation:isolate;
  background:linear-gradient(180deg,rgba(231,238,223,.76) 0%,rgba(248,249,245,.92) 58%,rgba(248,249,245,0) 100%);
  border-bottom-color:rgba(207,217,203,.72);
}
.app-shell .app-top::after{
  content:"";
  position:absolute;
  inset:0 0 auto;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(82,115,71,.2),transparent);
  pointer-events:none;
}
@media(max-width:760px){.app-shell .app-top{margin-inline:-20px;padding-inline:20px;background:linear-gradient(180deg,rgba(231,238,223,.9),rgba(248,249,245,.72) 72%,rgba(248,249,245,0))}}
.avatar>img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.profile-photo-button{position:relative;overflow:visible;cursor:pointer}.profile-card .profile-photo-button{width:86px;height:86px;margin-bottom:8px}.photo-edit-badge{position:absolute;right:-4px;bottom:-2px;display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:#1c4024;color:white;border:3px solid white}.profile-photo-link{display:block;margin:0 auto 16px;font-size:.75rem}.personal-sheet .photo-preview{width:160px;height:160px;border-radius:50%;overflow:hidden;margin:24px auto;display:grid;place-items:center;background:#e8efde;color:#527347}.photo-preview img{width:100%;height:100%;object-fit:cover}.personal-sheet .photo-choose,.personal-save{width:100%;justify-content:center;gap:12px}.personal-sheet [data-zoom]{margin:20px 0}.personal-sheet input[type=range]{padding:0;accent-color:#1c4024}.personal-sheet [hidden]{display:none!important}.personal-sheet .fine{margin:16px 0;line-height:1.6}.personal-sheet textarea{resize:vertical}.feedback-thanks{text-align:center;padding:28px 0 8px}.feedback-thanks>svg{color:#527347;margin-bottom:20px}.feedback-thanks p{font-size:.875rem;color:#627459}
/* Account overview with clear, grouped settings. */
.profile-heading h1{font-size:2.5rem;letter-spacing:-.045em;margin-bottom:10px}.profile-layout{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);gap:36px;align-items:start}.profile-overview{display:grid;gap:20px;position:sticky;top:24px}.profile-identity{display:flex;align-items:center;gap:18px;padding:24px;background:white;border:1px solid #e5e9df;border-radius:24px}.profile-identity .profile-photo-button{width:72px;height:72px;margin:0;flex:none}.profile-identity h2{font-size:1.25rem;margin:0 0 4px;overflow-wrap:anywhere}.profile-identity p{font-size:.75rem;color:#67745f;margin:0;overflow-wrap:anywhere}.profile-identity>div{min-width:0}.profile-identity .text-button{padding:4px 0;min-height:36px;font-size:.75rem}.profile-subscription{padding:24px;border-radius:24px;background:#eaf0e2;border:1px solid #dfe7d6}.profile-subscription-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;color:#567049}.profile-status{display:inline-flex;padding:5px 9px;border-radius:8px;background:#dce7d0;color:#36542c;font-size:.6875rem;line-height:1.5;font-weight:600}.profile-subscription h2{font-size:1.4rem;margin-bottom:8px}.profile-subscription p{font-size:.8125rem;color:#53674b;margin-bottom:20px}.profile-subscription .secondary{width:100%;border-color:#c4d2b8;background:#f8faf4;font-size:.8125rem;min-height:46px}.profile-sections{display:grid;gap:26px}.profile-group-title{font-size:.75rem;letter-spacing:.04em;font-weight:600;color:#63715a;margin:0 0 10px 14px}.profile-group{background:white;border:1px solid #e3e8dc;border-radius:20px;overflow:hidden}.profile-group .settings-row{display:flex;align-items:center;gap:12px;margin:0;padding:17px 18px;min-height:60px;width:100%;text-align:left;line-height:1.4;text-decoration:none;border:0;border-radius:0;background:none;font-size:.875rem;box-sizing:border-box}.profile-group .settings-row+.settings-row{border-top:1px solid #edf0e7}.profile-group .settings-row:hover{background:#f7f9f3}.profile-row-icon{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:9px;background:#eff3e9;color:#69825a}.profile-row-copy{flex:1;min-width:0}.profile-row-copy small{display:block;color:#78836f;font-size:.6875rem;margin-top:4px;line-height:1.5}.profile-group .settings-row>svg:last-child{margin-left:auto;width:16px;color:#8a9582}.profile-signout{background:white;border:1px solid #e3e8dc;color:#884d43;min-height:50px;border-radius:16px;font-size:.875rem}.billing-summary{padding:22px;background:#edf3e5;border-radius:18px;margin:8px 0 22px}.billing-summary h3{font-size:1.5rem;margin:16px 0 8px}.billing-summary p{font-size:.875rem;margin:0}.billing-summary p strong{display:block;margin-top:4px}.cancel-subscription{color:#994c3f!important}.personal-sheet .profile-group{margin-bottom:16px}.personal-sheet [aria-busy=true]{opacity:.6}
@media(max-width:760px){.profile-layout{display:block}.profile-overview{position:static;gap:16px;margin-bottom:26px}.profile-identity{padding:20px}.profile-subscription{padding:20px}.profile-heading h1{font-size:2rem}.profile-heading .muted{font-size:.875rem}.profile-group .settings-row{padding:16px 14px}.profile-sections{gap:24px}}

/* A pending Coach reply occupies the same place as the eventual answer. */
.coach-page .coach-pending{min-height:108px;animation:message-in 220ms var(--app-ease)}
.coach-thinking{display:flex;align-items:center;gap:10px;min-height:38px;color:var(--app-muted);font-size:.875rem}
.coach-thinking-dot{width:10px;height:10px;border-radius:50%;background:var(--app-green);animation:coach-think 1.35s ease-in-out infinite}
.chat-message p{white-space:pre-wrap;overflow-wrap:anywhere}
.chat-message{scroll-margin-top:100px;scroll-margin-bottom:220px}
@keyframes coach-think{0%,100%{transform:scale(.8);opacity:.45}50%{transform:scale(1.1);opacity:1}}
@media(prefers-reduced-motion:reduce){.coach-thinking-dot,.coach-page .coach-pending{animation:none}}

/* Keep iPhone focus at reading scale; leave pinch zoom available. */
@media(max-width:760px){
 html{scrollbar-gutter:auto;-webkit-text-size-adjust:100%;text-size-adjust:100%}
 .app-shell .coach-compose #coach-question{font-size:max(16px,1rem);line-height:1.5;touch-action:manipulation}
 /* visualViewport already follows the keyboard animation; do not animate it twice. */
 .app-shell:has(#coach-question:focus) .coach-compose{transition:none}
 .app-shell[data-page=coach] .coach-layout,.app-shell[data-page=coach] .coach-page{min-width:0;max-width:100%}
}
dialog.coach-history-tab{width:min(680px,calc(100vw - 32px));max-height:min(760px,calc(100dvh - 48px));padding:28px;border:1px solid var(--app-line);border-radius:28px;background:var(--app-bg);color:var(--app-green);box-shadow:0 24px 80px #1c402426}dialog.coach-history-tab::backdrop{background:#1c40242b;backdrop-filter:blur(4px)}.coach-history-tab-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--app-line)}.coach-history-tab-head h2{margin:4px 0 0;font-size:1.5rem}.coach-history-tab>.muted{margin:20px 0;font-size:.875rem}.coach-history-tab .thread-list{max-height:calc(100dvh - 250px);overflow:auto;display:grid;gap:8px}.coach-history-tab .thread-item{background:var(--app-surface);border:1px solid var(--app-line);border-radius:16px;padding:16px;min-height:68px}.coach-history-tab .thread-item.selected{border-color:#96ad8a;background:var(--dosy-green-100)}@media(max-width:760px){dialog.coach-history-tab{inset:0;margin:0;width:100%;max-width:none;height:100dvh;max-height:none;border:0;border-radius:0;padding:20px 20px calc(28px + env(safe-area-inset-bottom,0px));}.coach-history-tab .thread-list{max-height:none}.coach-history-tab-head{padding-top:env(safe-area-inset-top,0px)}}
/* Coach history is a real surface, never a bottom sheet. */
.coach-history-screen{position:fixed;inset:0;z-index:1000;display:flex;justify-content:center;overflow:auto;background:var(--app-bg);color:var(--app-green);animation:coach-history-in 220ms var(--app-ease);}
.coach-history-screen-inner{width:min(760px,100%);min-height:100%;padding:32px 32px calc(48px + env(safe-area-inset-bottom,0px));box-sizing:border-box;}
.coach-history-screen .coach-history-tab-head{position:sticky;top:0;background:var(--app-bg);padding:12px 0 20px;z-index:1;}
.coach-history-screen .coach-history-tab-head h1{margin:4px 0 0;font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.04em;}
.coach-history-screen .thread-list{display:grid;gap:10px;margin:24px 0;}
.coach-history-screen .thread-item{background:var(--app-surface);border:1px solid var(--app-line);border-radius:18px;padding:18px;min-height:72px;}
.coach-history-screen .thread-item.selected{border-color:#96ad8a;background:var(--dosy-green-100);}
.coach-history-screen .secondary{width:100%;margin-top:8px;}
@keyframes coach-history-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:760px){.coach-history-screen-inner{padding:calc(12px + env(safe-area-inset-top,0px)) 20px calc(28px + env(safe-area-inset-bottom,0px));}.coach-history-screen .coach-history-tab-head{padding-top:8px;}.coach-history-screen .thread-item{padding:16px;border-radius:16px;}}
@media(prefers-reduced-motion:reduce){.coach-history-screen{animation:none}}
/* Header glass treatment: the gradient needs a translucent layer behind it to read as blur. */
.app-shell .app-top{
  position:sticky;
  top:0;
  z-index:12;
  background:linear-gradient(180deg,rgba(231,238,223,.82) 0%,rgba(248,249,245,.68) 70%,rgba(248,249,245,.38) 100%);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
  backdrop-filter:blur(18px) saturate(125%);
}
@media(max-width:760px){.app-shell .app-top{top:0;background:linear-gradient(180deg,rgba(231,238,223,.9),rgba(248,249,245,.74) 72%,rgba(248,249,245,.46));-webkit-backdrop-filter:blur(20px) saturate(130%);backdrop-filter:blur(20px) saturate(130%);}}
/* Smoky header: the blur lives on a layer that runs past the header and fades out through a mask, so there is no hard bottom edge. */
.app-shell .app-top{background:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:0;}
.app-shell .app-top::before{content:"";position:absolute;inset:0 0 -34px;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(248,249,245,.9) 0%,rgba(248,249,245,.62) 55%,rgba(248,249,245,0) 100%);
  -webkit-backdrop-filter:blur(22px) saturate(130%);backdrop-filter:blur(22px) saturate(130%);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 50%,transparent 100%),linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(180deg,#000 0%,#000 50%,transparent 100%),linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);mask-composite:intersect;}
@media(max-width:760px){.app-shell .app-top{background:none;-webkit-backdrop-filter:none;backdrop-filter:none;}.app-shell .app-top::before{inset:0 0 -30px;}}
/* Keep scrolled content (bars, labels) from reading through the header: near-solid under the header, smoke only in a short tail below it. */
@media(max-width:760px){.app-shell .app-top::before{inset:0 0 -26px;background:linear-gradient(180deg,rgba(248,249,245,.97) 0%,rgba(248,249,245,.94) calc(100% - 26px),rgba(248,249,245,0) 100%);-webkit-mask-image:linear-gradient(180deg,#000 0%,#000 calc(100% - 26px),transparent 100%);mask-image:linear-gradient(180deg,#000 0%,#000 calc(100% - 26px),transparent 100%)}}
@media(prefers-reduced-transparency:reduce){.app-shell .app-top{background:var(--app-bg);-webkit-backdrop-filter:none;backdrop-filter:none;}.app-shell .app-top::before{display:none}}
/* Avatar: buttons carry UA padding, which squeezed photos into an oval. */
.avatar{padding:0;overflow:hidden}.avatar.profile-photo-button{overflow:visible}.photo-edit-badge{z-index:1}
/* Glass material. One set of tokens so a native shell (Capacitor) can restyle or swap it for the system material later. */
:root{--glass-tint:rgba(250,251,247,.56);--glass-blur:30px;--glass-saturate:190%;--glass-shadow:0 12px 32px -8px rgba(23,37,27,.18),0 2px 8px rgba(23,37,27,.06);--glass-rim:linear-gradient(160deg,rgba(255,255,255,.95),rgba(255,255,255,.2) 38%,rgba(28,64,36,.1) 70%,rgba(255,255,255,.6))}
@media(max-width:760px){
 .app-shell .mobile-nav{height:64px;min-height:64px;max-height:64px;padding:6px;left:14px;right:14px;border:0;outline:0;border-radius:999px;background:var(--glass-tint);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.7)}
 .app-shell .mobile-nav::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:var(--glass-rim);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
 .app-shell .mobile-nav button,.app-shell .mobile-nav button.active{height:52px;min-height:52px;max-height:52px;border-radius:999px;color:#5f6d59;transition:background-color 200ms,color 200ms}
 .app-shell .mobile-nav button.active{background:rgba(28,64,36,.09);box-shadow:none;color:var(--app-green)}
 .app-shell .mobile-nav button.active span{font-weight:600}
 .app-shell .mobile-nav .dock-add,.app-shell .mobile-nav .dock-add:active,.app-shell .mobile-nav .dock-add:focus{width:52px;min-width:52px;max-width:52px;height:52px;min-height:52px;max-height:52px;transform:none;border:0;border-radius:50%;color:#fff;background:radial-gradient(120% 100% at 50% 0%,#33663d 0%,#1c4024 60%);box-shadow:0 6px 14px -4px rgba(28,64,36,.45),inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(0,0,0,.15)}
 .app-shell .mobile-nav .dock-add:active{transform:scale(.94)}
 .app-shell .mobile-nav .dock-add svg{width:24px;height:24px}
 .app-shell .mobile-nav{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 52px minmax(0,1fr) minmax(0,1fr);column-gap:6px}
 .app-shell .mobile-nav button span{font-size:clamp(10px,2.9vw,11.5px)}
}
@media(prefers-reduced-transparency:reduce){.app-shell .mobile-nav{background:#fbfcf8;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* Chart vitality: Apple Health-style system colours, one hue per metric, capsule tracks with gradient fills. */
:root{--viz-green:#34c759;--viz-green-deep:#248a3d;--viz-blue:#0a84ff;--viz-cyan:#5ac8fa;--viz-orange:#ff9f0a;--viz-coral:#ff6b3d;--viz-purple:#bf5af2;--viz-indigo:#5e5ce6;--viz-track:#e9eee4}
.app-shell .vital-rail{height:8px;margin-top:6px;border-radius:999px;background:var(--viz-track);overflow:hidden}
.app-shell .vital-rail i{border-radius:inherit;min-width:0;background:linear-gradient(90deg,var(--viz-from),var(--viz-to));box-shadow:0 0 10px -2px var(--viz-to)}
.app-shell .vital{--viz-from:var(--viz-green);--viz-to:var(--viz-green-deep)}
.app-shell .vital:nth-of-type(2){--viz-from:var(--viz-cyan);--viz-to:var(--viz-blue)}
.app-shell .vital:nth-of-type(3){--viz-from:var(--viz-orange);--viz-to:var(--viz-coral)}
.app-shell .vital>span svg{color:var(--viz-to)}
.app-shell .protein-panel progress{-webkit-appearance:none;appearance:none;height:10px;border:0;border-radius:999px;background:var(--viz-track);overflow:hidden}
.app-shell .protein-panel progress::-webkit-progress-bar{background:var(--viz-track);border-radius:999px}
.app-shell .protein-panel progress::-webkit-progress-value{background:linear-gradient(90deg,var(--viz-green),var(--viz-green-deep));border-radius:999px}
.app-shell .protein-panel progress::-moz-progress-bar{background:linear-gradient(90deg,var(--viz-green),var(--viz-green-deep));border-radius:999px}
.app-shell .journey-fill{background:linear-gradient(90deg,#1c6b34,var(--viz-green));box-shadow:0 0 14px -3px var(--viz-green)}
/* Symptom timeline: ghost capsule per day, gradient capsule for the recorded level, today emphasised. */
.app-shell .symptom-columns{background:none}
.app-shell .symptom-column-track::before{content:"";position:absolute;inset:0 auto 0 50%;width:min(100%,18px);transform:translateX(-50%);border-radius:999px;background:linear-gradient(180deg,#f3f5f0,#eaeee5)}
.app-shell .symptom-column-track i{position:relative;max-width:18px;min-height:18px;border-radius:999px;background:linear-gradient(180deg,var(--viz-purple),var(--viz-indigo));box-shadow:0 4px 10px -4px var(--viz-indigo)}
.app-shell .symptom-column-track i[style*="--level:0"]{background:linear-gradient(180deg,#8fe3a6,var(--viz-green))}
.app-shell .missing-dot{display:none}
.app-shell .symptom-column.is-today small{color:#fff;background:var(--app-green);border-radius:999px;padding:1px 5px;font-weight:600}
.app-shell .med-marker{color:var(--viz-orange)}
/* Weight: gradient line over a fading area. */
.app-shell .weight-overlay .weight-area{fill:url(#weight-fill);stroke:none}
.app-shell .weight-overlay .weight-line{fill:none;stroke:url(#weight-stroke);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:none}
.app-shell .weight-overlay circle{fill:#fff;stroke:var(--viz-green-deep);stroke-width:2}
.app-shell .weight-overlay circle.weight-latest{fill:var(--viz-green-deep);stroke:#fff;stroke-width:2.5;filter:drop-shadow(0 0 5px rgba(52,199,89,.55))}
.app-shell .weight-overlay path:not([class]){stroke:var(--viz-orange);stroke-opacity:.45}
/* Week and feelings: filled days glow in their own colour. */
.app-shell .week-strip i{background:var(--viz-track);color:#9aa894}
.app-shell .week-strip i.filled{background:linear-gradient(160deg,var(--viz-green),var(--viz-green-deep));color:#fff;box-shadow:0 4px 12px -4px var(--viz-green)}
.app-shell .feeling-cell{border-radius:10px}
.app-shell .feeling-cell.marked{color:transparent;font-size:0;background:linear-gradient(160deg,var(--mood-a),var(--mood-b));box-shadow:0 3px 10px -4px var(--mood-b)}
.app-shell .feeling-cell.feeling-well{--mood-a:#8fe3a6;--mood-b:var(--viz-green)}
.app-shell .feeling-cell.feeling-hungry{--mood-a:#ffd60a;--mood-b:var(--viz-orange)}
.app-shell .feeling-cell.feeling-nauseous{--mood-a:#da8fff;--mood-b:var(--viz-purple)}
.app-shell .feeling-cell.feeling-tired{--mood-a:#64d2ff;--mood-b:var(--viz-blue)}
.app-shell .feeling-cell.feeling-constipated{--mood-a:#ffb38a;--mood-b:var(--viz-coral)}
.app-shell .chart-legend span{display:inline-flex;align-items:center;gap:6px}.app-shell .chart-legend .legend-med{font-style:normal;color:var(--viz-orange)}.app-shell .chart-legend .legend-ghost{display:inline-block;width:8px;height:14px;border-radius:999px;background:#e6ebe1}
/* Capture sheet shares the dock's glass material so the two read as one surface. */
.quick-popover,.capture-card{background:rgba(250,251,247,.62);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));border:1px solid rgba(255,255,255,.7);box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.8)}
.quick-popover .quick-add-item{background:rgba(255,255,255,.55);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6)}
.quick-popover .quick-add-item:hover{background:rgba(255,255,255,.8)}
@media(prefers-reduced-transparency:reduce){.quick-popover,.capture-card{background:#fcfdf9;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* Seven-day checklist on Today. */
.week-checklist{margin:18px 0 6px;padding-top:16px;border-top:1px solid #e9ece5}
.week-checklist-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.8125rem;font-weight:600;color:var(--app-green)}
.week-checklist-head small{font-weight:400;font-size:.6875rem;color:var(--app-muted);text-align:right}
.app-shell .week-checklist .week-strip{margin:14px 0 0;gap:4px}
.app-shell .week-checklist .week-strip>div{gap:8px;flex:1}
.app-shell .week-checklist .week-strip i{margin:0 auto;width:34px;height:34px}
.app-shell .week-strip i.partial{background:conic-gradient(var(--viz-green) calc(var(--done)*360deg),var(--viz-track) 0);color:var(--viz-green-deep);position:relative}
.app-shell .week-strip i.partial::before{content:"";position:absolute;inset:4px;border-radius:50%;background:#fff}
.app-shell .week-strip i.partial svg{position:relative}
.app-shell .week-strip .is-today span{color:#fff;background:var(--app-green);border-radius:999px;padding:1px 7px;justify-self:center;font-weight:600}
.progress-bottom{grid-template-columns:1fr}
/* A transform on the entering page becomes the containing block for fixed children, so the Coach composer
   would render mid-page and then drop into place. Pages with fixed children enter with a fade only. */
@keyframes arrive-fade{from{opacity:0}to{opacity:1}}
.workspace.scene:has(.coach-compose,.inline-voice){animation-name:arrive-fade}
/* The header bleeds to the screen edges by cancelling the page gutter; it must cancel exactly that gutter, or the page gains a sideways scroll. */
@media(max-width:760px){
 .app-shell .app-top{margin-inline:-18px;padding-inline:18px}
 .app-shell[data-page=today] .app-top{margin-inline:-20px;padding-inline:20px}
 .app-shell{overflow-x:clip}
}
/* Progress, Apple Health summary style: one card per metric, coloured label, big value, quiet detail. */
.app-shell[data-page=progress] .workspace{display:flex;flex-direction:column;gap:16px}
.app-shell[data-page=progress] .page-heading{margin-bottom:6px}
.metric-label{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;font-weight:600;letter-spacing:-.005em;color:var(--viz-green-deep)}
.metric-label svg{flex:none}
.app-shell .weight-card{padding:18px 18px 8px;border:1px solid #e6ebe0;border-radius:24px;background:#fff}
.weight-card .metric-head{display:flex;align-items:center;justify-content:space-between}
.weight-card .metric-add{display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:50%;background:#eaf6ec;color:var(--viz-green-deep);cursor:pointer}
.weight-card .metric-add:active{transform:scale(.94)}
.weight-hero{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin:10px 0 4px}
.app-shell .weight-card .weight-value{margin:0;font-size:3rem;font-weight:600;letter-spacing:-.045em;line-height:1;font-variant-numeric:tabular-nums}
.app-shell .weight-card .weight-value small{margin-left:4px;font-size:1rem;font-weight:500;color:var(--app-muted)}
.delta-chip{display:inline-flex;align-items:baseline;gap:5px;padding:5px 10px;border-radius:999px;background:#eef1ea;color:#3f4a3b;font-size:.8125rem;font-weight:600;font-variant-numeric:tabular-nums}
.delta-chip.down{background:#e6f6ea;color:var(--viz-green-deep)}
.delta-chip.up{background:#fff1e0;color:#b25e00}
.delta-chip small{font-weight:400;opacity:.75}
.weight-card .weight-chart{display:block;width:100%;height:auto;margin:8px 0 0}
.weight-card .weight-hint{margin:8px 0 12px;font-size:.875rem}
.weight-card .empty-state{padding:12px 0 16px}
.weight-card .empty-state .secondary{margin-top:12px}
/* iOS-style disclosure row instead of the browser's triangle. */
.app-shell details.disclosure,.app-shell details.treatment-data{border-top:1px solid #edf0e9;margin:8px -18px 0;padding:0 18px}
.app-shell details.disclosure>summary,.app-shell details.treatment-data>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:48px;cursor:pointer;font-size:.9375rem;font-weight:500;color:var(--app-green)}
.app-shell details.disclosure>summary::-webkit-details-marker,.app-shell details.treatment-data>summary::-webkit-details-marker{display:none}
.app-shell details.disclosure>summary>span{margin-left:auto;color:var(--app-muted);font-weight:400;font-variant-numeric:tabular-nums}
.app-shell details.disclosure>summary::after,.app-shell details.treatment-data>summary::after{content:"";width:8px;height:8px;border-right:2px solid #a3ae9c;border-bottom:2px solid #a3ae9c;transform:rotate(-45deg);margin-left:auto;margin-right:4px;transition:transform 200ms}
.app-shell details.disclosure>summary>span+*,.app-shell details.disclosure>summary>span~::after{margin-left:8px}
.app-shell details.disclosure>summary:has(span)::after{margin-left:10px}
.app-shell details[open].disclosure>summary::after,.app-shell details[open].treatment-data>summary::after{transform:rotate(45deg)}
.grouped-list{padding-bottom:10px}
.grouped-list>div{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid #f0f2ed;font-size:.9375rem}
.grouped-list b{font-weight:600;font-variant-numeric:tabular-nums}
/* Week tiles. */
.app-shell .tracker-summary{margin:8px 0 0}
.app-shell .tracker-summary .section-heading{margin-bottom:12px}
.app-shell .tracker-summary .section-heading span{font-size:.75rem;color:var(--app-muted)}
.app-shell .tracker-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.app-shell .tracker-stats .metric-tile{display:grid;gap:6px;padding:14px 16px 16px;border:1px solid #e6ebe0;border-radius:20px;background:#fff;text-align:left}
.metric-tile strong{font-size:1.75rem;font-weight:600;letter-spacing:-.035em;line-height:1.05;color:#16261a;font-variant-numeric:tabular-nums}
.metric-tile strong small{margin-left:3px;font-size:.8125rem;font-weight:500;letter-spacing:0;color:var(--app-muted)}
.metric-tile em{font-style:normal;font-size:.6875rem;color:var(--app-muted)}
.metric-protein .metric-label,.metric-label.metric-protein{color:var(--viz-green-deep)}
.metric-steps .metric-label,.metric-label.metric-steps{color:#e0610e}
.metric-sleep .metric-label{color:var(--viz-indigo)}
.metric-workout .metric-label{color:#e0245e}
.activity-chart{margin-top:10px;padding:14px 16px 12px;border:1px solid #e6ebe0;border-radius:20px;background:#fff}
.app-shell .activity-bars{height:150px;padding:10px 0 0;border:0;border-radius:0;gap:8px}
.app-shell .activity-bars>div{position:relative;gap:6px}
.app-shell .activity-bars>div>span{font-size:.625rem;color:var(--app-muted);min-height:12px;font-variant-numeric:tabular-nums}
.app-shell .activity-bars i{position:relative;max-width:22px;width:100%;height:var(--bar);min-height:0;border-radius:999px;background:linear-gradient(180deg,var(--viz-orange),var(--viz-coral));box-shadow:0 4px 10px -5px var(--viz-coral)}
.app-shell .activity-bars>div::before{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:22px;top:18px;width:min(100%,22px);border-radius:999px;background:#f2f4ef;z-index:0}
.app-shell .activity-bars i,.app-shell .activity-bars small,.app-shell .activity-bars span{z-index:1}
.app-shell .activity-bars small{font-size:.6875rem;color:var(--app-muted);height:16px;line-height:16px}
.app-shell .activity-bars .is-today small{color:#fff;background:var(--app-green);border-radius:999px;padding:0 6px;font-weight:600}
.app-shell .tracker-summary .fine{margin:10px 2px 0}
/* Measurements + action row. */
.app-shell .measurements{margin:8px 0 0;padding:18px;border:1px solid #e6ebe0;border-radius:24px;background:#fff}
.app-shell .measurements h2{font-size:1.125rem;margin:0 0 6px}
.app-shell .measurements .fine{margin:0}
.list-action{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 16px;border:1px solid #e6ebe0;border-radius:18px;background:#fff;color:var(--app-green);font:inherit;font-size:.9375rem;font-weight:500;text-align:left;cursor:pointer}
.list-action>span:nth-child(2){flex:1}
.list-action-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#eaf6ec;color:var(--viz-green-deep)}
.list-action>svg:last-child{color:#a3ae9c}
.list-action:active{transform:scale(.99);background:#f7f9f4}
.app-shell[data-page=progress] .maintenance-note{margin:8px 0 0;border-radius:24px}
.app-shell[data-page=progress] .treatment-progress{margin:0}
/* Identity pass: soft pastel washes behind the canvas, category-tinted cards, brand illustrations. */
:root{--canvas-rgb:245,246,243}
@media(max-width:760px){.app-shell .app-top::before{background:linear-gradient(180deg,rgba(var(--canvas-rgb),.9) 0%,rgba(var(--canvas-rgb),.84) calc(100% - 26px),rgba(var(--canvas-rgb),0) 100%)}}
/* Category tints, like the product story cards: weight peach, treatment blue, food green. */
.app-shell .weight-card{background:linear-gradient(165deg,#fff1e4 0%,#fff 58%)}
.app-shell .weight-card .metric-label{color:#c2610c}
.app-shell .weight-card .metric-add{background:#ffe8d3;color:#c2610c}
.app-shell .treatment-progress{background:linear-gradient(165deg,#e8f0fb 0%,#fff 42%)}
.app-shell .protein-panel{background:linear-gradient(165deg,#e3f3e4 0%,#f6faf3 70%)}
.app-shell .tracker-stats .metric-protein{background:linear-gradient(160deg,#e9f7ec,#fff 70%)}
.app-shell .tracker-stats .metric-steps{background:linear-gradient(160deg,#fff0e2,#fff 70%)}
.app-shell .tracker-stats .metric-sleep{background:linear-gradient(160deg,#ecebfd,#fff 70%)}
.app-shell .tracker-stats .metric-workout{background:linear-gradient(160deg,#fde9ef,#fff 70%)}
.app-shell .daily-vitals,.app-shell .today-priorities,.app-shell .journey-card,.app-shell .measurements,.app-shell .activity-chart,.app-shell .list-action{box-shadow:0 1px 2px rgba(23,37,27,.04),0 8px 24px -12px rgba(23,37,27,.12)}
/* Brand illustrations sit on their own cream tile, the way the identity presents them. */
.illus{display:block;overflow:hidden;border-radius:22px;background:#faf6ec;flex:none}
.illus img{display:block;width:100%;height:auto;aspect-ratio:1}
.illus-empty{text-align:center}
.illus-empty .illus{width:148px;margin:4px auto 12px}
.illus-card{display:flex;align-items:center;gap:16px;margin:4px 0 8px;padding:14px;border:1px solid #e3ecdc;border-radius:24px;background:linear-gradient(165deg,#e8f5e6,#fff 70%)}
.illus-card .illus{width:108px}
.illus-card h3{margin:0 0 4px;font-size:1rem}
.illus-card p{margin:0 0 10px;font-size:.8125rem;color:var(--app-muted);line-height:1.45}
.illus-card .secondary{min-height:38px;padding:0 14px;font-size:.8125rem;gap:6px}
.illus-inline{display:flex;align-items:center;gap:14px}
.illus-inline .illus{width:76px;border-radius:16px}
/* Journey, top of Today: activity-ring header, a calm week row, one clear action. */
.journey-today{margin:4px 0 20px;padding:18px 18px 16px;border:1px solid #e6ebe0;border-radius:26px;background:#fff;box-shadow:0 1px 2px rgba(23,37,27,.04),0 10px 30px -14px rgba(23,37,27,.16)}
.jt-head{display:flex;align-items:center;gap:14px}
.jt-ring{position:relative;flex:none;width:60px;height:60px}
.jt-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.jt-ring circle{fill:none;stroke-width:7;stroke-linecap:round}
.jt-ring-track{stroke:#e9eee4}
.jt-ring-fill{stroke:url(#jt-grad);transition:stroke-dashoffset 900ms cubic-bezier(.22,1,.36,1);filter:drop-shadow(0 0 3px rgba(52,199,89,.35))}
.jt-ring>span{position:absolute;inset:0;display:flex;align-items:baseline;justify-content:center;padding-top:20px;color:var(--app-green);font-variant-numeric:tabular-nums}
.jt-ring b{font-size:1.05rem;font-weight:700;letter-spacing:-.03em}
.jt-ring small{font-size:.625rem;color:var(--app-muted)}
.jt-title{flex:1;min-width:0}
.jt-title .eyebrow{display:block;font-size:.625rem;letter-spacing:.08em;color:var(--app-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jt-title h2{margin:3px 0 0;font-size:1.25rem;font-weight:600;letter-spacing:-.025em;color:var(--app-green)}
.jt-plan{display:inline-flex;align-items:center;gap:2px;flex:none;min-height:32px;padding:0 8px 0 12px;border:0;border-radius:999px;background:#f1f4ed;color:var(--app-green);font:inherit;font-size:.8125rem;font-weight:600;cursor:pointer}
.jt-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:18px 0 16px;padding:0;list-style:none}
.jt-day{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0 7px;border-radius:18px}
.jt-day.is-today{background:#eef6ec}
.jt-dow{font-size:.6875rem;font-weight:600;color:var(--app-muted)}
.jt-num{font-size:.75rem;font-weight:500;color:#5b6857;font-variant-numeric:tabular-nums}
.jt-day.is-today .jt-dow,.jt-day.is-today .jt-num{color:var(--app-green);font-weight:700}
.jt-dot{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#f0f3ec;color:#fff}
.jt-day.done .jt-dot{background:linear-gradient(150deg,#34c759,#1c6b34);box-shadow:0 4px 10px -4px rgba(52,199,89,.7)}
.jt-day.today .jt-dot{background:#fff;box-shadow:inset 0 0 0 2.5px #34c759;position:relative}
.jt-day.today .jt-dot::after{content:"";width:8px;height:8px;border-radius:50%;background:#34c759;animation:jt-pulse 1.8s ease-in-out infinite}
@keyframes jt-pulse{50%{transform:scale(.6);opacity:.55}}
.jt-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;border:0;border-radius:999px;background:linear-gradient(180deg,#2a5c35,#1c4024);color:#fff;font:inherit;font-size:.9375rem;font-weight:600;letter-spacing:-.01em;cursor:pointer;box-shadow:0 8px 18px -8px rgba(28,64,36,.55),inset 0 1px 0 rgba(255,255,255,.18)}
.jt-cta:active{transform:scale(.985)}
.jt-cta.is-done{background:#e9f6ec;color:#1c6b34;box-shadow:none}
.jt-foot{margin:10px 0 0;text-align:center;font-size:.6875rem;color:var(--app-muted)}
@media(min-width:761px){.journey-today{padding:22px 24px 20px}.jt-week{max-width:560px}}
@media(prefers-reduced-motion:reduce){.jt-day.today .jt-dot::after,.jt-ring-fill{animation:none;transition:none}}
.journey-today{min-width:0;grid-column:1/-1}.app-shell[data-page=today] .workspace{grid-template-columns:minmax(0,1fr)}@media(min-width:1001px){.app-shell[data-page=today] .workspace{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(min-width:761px){.journey-today{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:32px;align-items:center}.jt-head{grid-column:1/-1}.jt-week{max-width:none;margin:18px 0 0}.jt-cta{width:auto;min-width:260px;padding:0 28px;margin-top:18px}.jt-foot{grid-column:2;margin-top:8px}}
/* One corner language for every text button: the design-system control radius (12px), not pills. Icon-only circles and the dock keep their shape. */
:is(.primary,.secondary,.light-button,.jt-cta,.jt-plan,.list-action,.prompt,.onboard-choice,.quick-add-item,.treatment-filter button,.feeling-choices button,.mood-options button,.amount-presets button,.capture-presets button,.capture-tabs button,.meal-source-options button,.select-options button,.illus-card .secondary,.coach-toolbar .secondary,.home-overview .treatment-actions .secondary,.sheet-footer .primary,dialog .primary,dialog .secondary){border-radius:var(--dosy-radius-control,12px)!important}
.segmented{border-radius:14px}.segmented button{border-radius:10px!important}
.delta-chip{border-radius:8px}
/* Onboarding speaks the quiz's language: same canvas, centred column, thin progress, option cards and CTA. */
.onboarding-shell{position:relative;isolation:isolate;max-width:448px;margin:0 auto;padding:calc(env(safe-area-inset-top,0px) + 18px) 20px 0;color:#1B2E21}
.onboarding-shell::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(70% 45% at 50% -8%,#DCE8D2 0%,rgba(220,232,210,0) 70%),radial-gradient(45% 35% at 0% 42%,rgba(231,238,223,.9) 0%,rgba(231,238,223,0) 72%),radial-gradient(55% 40% at 100% 100%,rgba(242,224,186,.75) 0%,rgba(242,224,186,0) 70%),linear-gradient(180deg,#F4F4EB 0%,#F8F4E9 55%,#FAF6EC 100%)}
.onboarding-shell>header{justify-content:center;position:relative;margin:0 0 14px}
.onboarding-shell>header .logo{height:26px;width:auto}
.onboarding-shell>header>.fine{display:none}
.onboarding-shell>header>.text-button{position:absolute;right:0;font-size:.8125rem}
.onboarding-shell .onboarding-grid{display:block}
.onboarding-shell .onboard-art{display:none}
.onboarding-shell .onboard-content{max-width:none;padding:0 0 12px}
.onboarding-shell .onboard-progress{justify-content:center;gap:0;width:180px;height:8px;margin:0 auto 34px;border-radius:99px;background:rgba(28,64,36,.12);overflow:hidden}
.onboarding-shell .onboard-progress>span{height:100%;border-radius:0;background:transparent}
.onboarding-shell .onboard-progress>span.active{background:#1C4024}
.onboarding-shell .onboard-progress>small{display:none}
.onboarding-shell .onboard-content h1{margin:0 0 22px;font:500 clamp(28px,8.4vw,34px)/1.12 var(--dosy-font-ui);letter-spacing:-.045em;color:#1B2E21}
.onboarding-shell .onboard-content h1 em{font:inherit;font-style:normal;color:inherit}
.onboard-carry{display:inline-flex;align-items:center;gap:6px;margin:-8px 0 18px;padding:6px 10px;border-radius:8px;background:#E8F4DA;border:1px solid #C7E6A2;color:#2F5736;font-size:.8125rem;font-weight:600}
.onboarding-shell label{font-weight:600;color:#1B2E21}
.onboarding-shell input:not([type=radio]):not([type=checkbox]),.onboarding-shell select,.onboarding-shell textarea,.onboarding-shell .select-trigger{border-radius:12px;border:1px solid rgba(255,255,255,.95);background:linear-gradient(180deg,rgba(255,253,247,.9),rgba(255,251,242,.7));box-shadow:0 1px 2px rgba(28,64,36,.04)}
.onboarding-shell .onboard-choice{min-height:64px;margin-bottom:10px;padding:12px 16px;border:1px solid rgba(255,255,255,.95);background:linear-gradient(180deg,rgba(255,253,247,.86),rgba(255,251,242,.64));box-shadow:0 1px 2px rgba(28,64,36,.04)}
.onboarding-shell .onboard-choice:has(input:checked){border-color:#1C4024;background:linear-gradient(180deg,#F1F8E9,#E8F4DA)}
.onboarding-shell .onboard-choice .choice-icon{background:rgba(28,64,36,.07);color:#1C4024}
.onboarding-shell .onboard-note{margin-top:18px;padding:16px 18px;border-radius:12px;border:1px solid rgba(255,255,255,.95);background:rgba(255,253,247,.7)}
.onboarding-shell .onboard-actions{position:sticky;bottom:0;margin:22px -20px 0;padding:24px 20px calc(env(safe-area-inset-bottom,0px) + 16px);background:linear-gradient(180deg,rgba(250,246,236,0),rgba(250,246,236,.95) 40%)}
.onboarding-shell .onboard-actions .primary{min-height:52px;border:0;background:#1C4024;color:#fff;font:700 15px/1 var(--dosy-font-ui);box-shadow:0 6px 16px rgba(28,64,36,.18)}
.onboarding-shell .onboard-actions .primary:hover{background:#2F5736}
.onboarding-shell .onboard-actions .round-button{background:rgba(255,253,247,.9);border:1px solid rgba(255,255,255,.95)}
.onboarding-shell .onboard-content>.fine{margin-top:4px;color:#5B6760}
@media(min-width:761px){.onboarding-shell{padding-top:40px}.onboarding-shell .onboard-progress{margin-bottom:44px}}
.onboarding-shell .choice-dot{width:20px;height:20px;border:1.5px solid #A9BCA6;box-shadow:none;background:transparent;box-sizing:border-box;transition:all .2s}
.onboarding-shell .onboard-choice:has(input:checked) .choice-dot{border:6px solid #1C4024;background:#fff;box-shadow:none}
.onboarding-shell details.goal-details>summary{list-style:none;display:flex;align-items:center;min-height:48px;cursor:pointer;font-weight:600;color:#1B2E21}
.onboarding-shell details.goal-details>summary::-webkit-details-marker{display:none}
.onboarding-shell details.goal-details>summary::after{content:"";width:8px;height:8px;margin-left:auto;margin-right:4px;border-right:2px solid #A9BCA6;border-bottom:2px solid #A9BCA6;transform:rotate(45deg);transition:transform .2s}
.onboarding-shell details[open].goal-details>summary::after{transform:rotate(-135deg)}
/* Checkpoint rises as the same floating island as capture: glass card above the dock. */
dialog.compact-capture{background:rgba(250,251,247,.72);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));border:1px solid rgba(255,255,255,.7);box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.8)}
dialog.compact-capture::backdrop{background:rgba(23,37,27,.08);-webkit-backdrop-filter:none;backdrop-filter:none}
@media(max-width:760px){dialog.compact-capture{bottom:calc(92px + env(safe-area-inset-bottom,0px) + var(--keyboard-gap,0px))}}
.checkpoint-island .modal-header{margin-bottom:4px}
.checkpoint-island h2{font-size:1.125rem;margin:0}
.checkpoint-island>form>.muted{margin:0 0 14px;font-size:.8125rem}
.checkpoint-moods{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;padding:0;border:0}
.checkpoint-moods legend{margin-bottom:8px;padding:0;font-size:.8125rem;font-weight:600;color:var(--app-green)}
.checkpoint-moods label{position:relative;margin:0}
.checkpoint-moods input{position:absolute;opacity:0;inset:0;margin:0}
.checkpoint-moods span{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.62);font-size:.875rem;font-weight:500;color:var(--app-green);cursor:pointer;transition:background .15s,border-color .15s}
.checkpoint-moods input:checked+span{background:#1C4024;border-color:#1C4024;color:#fff}
.checkpoint-moods input:focus-visible+span{outline:2px solid #73935f;outline-offset:2px}
.checkpoint-island textarea{min-height:0;border-radius:12px;background:rgba(255,255,255,.7)}
.checkpoint-island .fine{margin:8px 0 12px;font-size:.6875rem}
.checkpoint-island .primary{width:100%;min-height:50px}
/* Keyboard: the coach composer glides up with it, and the header stays on screen on every page even when iOS scrolls the page underneath. */
@media(max-width:760px){
 .app-shell:has(#coach-question:focus) .coach-compose,.app-shell .coach-compose{transition:bottom 280ms cubic-bezier(.22,1,.36,1)}
 .app-shell .app-top{transform:translateY(var(--viewport-top,0px));transition:transform 200ms cubic-bezier(.22,1,.36,1)}
}
@media(prefers-reduced-motion:reduce){.app-shell .coach-compose,.app-shell .app-top{transition:none!important}}
/* Header stays put on phones: no iOS rubber-band dragging the page (and the sticky header) past its edges. */
@media(max-width:760px){html,body{overscroll-behavior-y:none}}
/* Meal plan: the quiz's "what to order" cards, living in the app. */
.meal-plan,.next-meal{margin:8px 0 18px}
.meal-plan .section-heading,.next-meal .section-heading{margin-bottom:12px}
.meal-plan .section-heading span{font-size:.75rem;color:var(--app-muted)}
.meal-plan-list{display:grid;gap:10px}
.meal-idea{padding:14px 16px 12px;border:1px solid #e3ecdc;border-radius:20px;background:linear-gradient(165deg,#eef7ea,#fff 62%);box-shadow:0 1px 2px rgba(23,37,27,.04),0 8px 22px -14px rgba(23,37,27,.16)}
.meal-idea-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.meal-idea-slot{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#2F5736}
.meal-tag{padding:3px 8px;border-radius:8px;background:#E8F4DA;color:#2F5736;font-size:.6875rem;font-weight:600;white-space:nowrap}
.meal-idea h3{margin:6px 0 4px;font-size:1.0625rem;font-weight:600;letter-spacing:-.015em;color:#16261a}
.meal-idea p{margin:0 0 8px;font-size:.8125rem;line-height:1.45;color:var(--app-muted)}
.meal-idea-meta{display:flex;gap:12px;font-size:.8125rem;color:#5b6857;font-variant-numeric:tabular-nums}
.meal-idea-meta .meal-protein{font-weight:600;color:var(--viz-green-deep)}
.meal-idea-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.meal-idea-actions .secondary{width:auto;min-height:38px;margin:0;padding:0 14px;gap:6px;font-size:.8125rem;background:#fff}
.meal-idea-actions .text-button{display:inline-flex;align-items:center;gap:4px;font-size:.8125rem;font-weight:600}
.meal-idea.is-empty{background:#f6f8f3}
.meal-idea.is-empty p{margin:6px 0 0}
@media(min-width:1001px){.meal-plan-list{grid-template-columns:1fr 1fr}.app-shell[data-page=today] .next-meal{grid-column:1/-1}}
/* Plan = the quiz offer, delivered: goal & date, nutrition targets, today's meals, what's included. */
.offer-plan>h3{margin:22px 0 10px;font-size:1rem;font-weight:600;letter-spacing:-.01em;color:var(--app-green)}
.op-hero{padding:18px;border-radius:20px;background:linear-gradient(165deg,#fff1e4 0%,#fbf7ef 70%);border:1px solid #f3e4d2}
.op-hero .eyebrow{font-size:.625rem;letter-spacing:.1em;color:#b25e00}
.op-hero h2{margin:6px 0 6px;font-size:1.5rem;line-height:1.15;letter-spacing:-.035em;color:#1B2E21}
.op-hero>p{margin:0;font-size:.8125rem;line-height:1.5;color:var(--app-muted)}
.op-progress{margin-top:16px}
.op-ends{display:flex;justify-content:space-between;font-size:.9375rem;font-weight:600;color:#1B2E21;font-variant-numeric:tabular-nums}
.op-ends span{display:grid;gap:2px}.op-ends span:last-child{text-align:right}.op-ends .op-now{text-align:center;color:#c2610c}
.op-ends small{font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--app-muted)}
.op-track{position:relative;height:10px;margin-top:10px;border-radius:999px;background:rgba(194,97,12,.14);overflow:hidden}
.op-track i{position:absolute;inset:0 auto 0 0;width:max(10px,var(--share));border-radius:inherit;background:linear-gradient(90deg,#ffb36b,#e0610e)}
.op-pace{margin:8px 0 0!important;font-size:.75rem!important;color:#8a5a2b!important}
.op-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.op-tile{display:grid;gap:4px;padding:12px 14px;border-radius:14px;border:1px solid #e6ebe0;background:#fff}
.op-tile span{font-size:.6875rem;font-weight:600;color:var(--app-muted)}
.op-tile strong{font-size:1.5rem;font-weight:600;letter-spacing:-.03em;color:#16261a;font-variant-numeric:tabular-nums}
.op-tile strong small{margin-left:3px;font-size:.75rem;font-weight:500;letter-spacing:0;color:var(--app-muted)}
.op-kcal{grid-column:1/-1;background:linear-gradient(160deg,#fff0e2,#fff 70%)}.op-kcal span{color:#c2610c}
.op-protein{background:linear-gradient(160deg,#e9f7ec,#fff 70%)}.op-protein span{color:var(--viz-green-deep)}
.op-water{background:linear-gradient(160deg,#e6f1fd,#fff 70%)}.op-water span{color:#0a6ad6}
.op-meals{display:grid;border:1px solid #e3ecdc;border-radius:16px;background:linear-gradient(165deg,#eef7ea,#fff 60%);overflow:hidden}
.op-meals>div{display:grid;gap:2px;padding:11px 14px;border-top:1px solid #edf2e8}.op-meals>div:first-child{border-top:0}
.op-meals span{font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#2F5736}
.op-meals strong{font-size:.9375rem;font-weight:600;color:#16261a}
.op-meals small{font-size:.75rem;color:var(--app-muted)}
.op-link{display:block;width:100%;margin-top:8px;min-height:44px;border:1px solid #e3ecdc;border-radius:12px;background:#fff;color:var(--app-green);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}
.op-receive{display:grid;gap:8px}
.op-row{display:grid;gap:4px;justify-items:start;width:100%;padding:14px 40px 14px 14px;border:1px solid transparent;border-radius:14px;text-align:left;font:inherit;cursor:pointer;position:relative}
.op-row::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:translateY(-50%) rotate(45deg);opacity:.45}
.op-row strong{font-size:.9375rem;font-weight:600;color:#16261a}
.op-tag{padding:3px 8px;border-radius:8px;background:rgba(255,255,255,.75);font-size:.6875rem;font-weight:700}
.tone-blue{background:linear-gradient(160deg,#e3edfa,#f4f8fd);color:#1c5bb0}.tone-peach{background:linear-gradient(160deg,#fde9d6,#fdf5ec);color:#b25e00}.tone-green{background:linear-gradient(160deg,#dff0da,#f2f9ef);color:#2F5736}
.op-actions{margin:0;padding-left:20px;display:grid;gap:8px;font-size:.9375rem;line-height:1.45}
.offer-plan .disclosure{margin:16px 0 0;padding:0;border-top:1px solid #edf0e9}
.offer-plan .weekly-review{margin-top:18px}
/* One Dynamic Island for every sheet: floating glass card above the dock, rising with the keyboard. The Coach history stays full-screen. */
@keyframes island-in{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
dialog:not(.coach-history-tab){background:rgba(250,251,247,.82);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));border:1px solid rgba(255,255,255,.72);box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.8);border-radius:30px}
dialog:not(.coach-history-tab)::backdrop{background:rgba(23,37,27,.1);-webkit-backdrop-filter:none;backdrop-filter:none}
@media(max-width:760px){
 dialog:not(.coach-history-tab),dialog.compact-capture,.treatment-sheet.treatment-capture{position:fixed;inset:auto 12px max(calc(92px + env(safe-area-inset-bottom,0px)),calc(12px + var(--keyboard-gap,0px)));margin:0 auto;width:auto;max-width:440px;max-height:calc(100dvh - 116px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - var(--keyboard-gap,0px));padding:20px;border-radius:30px;overflow:auto;overscroll-behavior:contain}
 dialog[open]:not(.coach-history-tab){animation:island-in 260ms cubic-bezier(.2,.9,.3,1) both}
 dialog:not(.coach-history-tab) .sheet-grabber{display:none}
 .plan-dialog .modal-header{top:-20px;background:rgba(250,251,247,.94);margin:-20px -20px 8px;padding:14px 20px 10px}
 .treatment-sheet.treatment-capture .sheet-footer{bottom:-20px;background:linear-gradient(180deg,rgba(250,251,247,0),rgba(250,251,247,.96) 35%)}
}
@media(prefers-reduced-motion:reduce){dialog[open]{animation:none!important}}
@media(prefers-reduced-transparency:reduce){dialog:not(.coach-history-tab){background:#fbfcf8;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* Today bento: glanceable tiles, one tap to act. */
.today-bento{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"protein water" "fiber steps" "goal goal";gap:10px;min-width:0}
.today-bento .tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0;padding:14px;border:1px solid #e6ebe0;border-radius:22px;background:#fff;color:#16261a;font:inherit;text-align:left;cursor:pointer;box-shadow:0 1px 2px rgba(23,37,27,.04),0 8px 22px -14px rgba(23,37,27,.16)}
.today-bento button.tile:active{transform:scale(.985)}
.tile-label{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;font-weight:600}
.tile b{font-size:1.5rem;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.05}
.tile b small{font-size:.75rem;font-weight:500;letter-spacing:0;color:var(--app-muted)}
.tile-protein{grid-area:protein}.tile-protein .tile-label{color:var(--viz-green-deep)}
.ring{position:relative;display:grid;place-items:center;width:100%;max-width:132px;aspect-ratio:1;margin:auto}
.ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:9;stroke-linecap:round}
.ring-track{stroke:#edf2e8}.ring-fill{stroke:url(#jt-grad);stroke:var(--viz-green);transition:stroke-dashoffset .8s cubic-bezier(.22,1,.36,1)}
.ring b{position:relative;text-align:center;font-size:1.25rem}.ring b small{display:block;margin-top:2px}
.tile-water{grid-area:water;cursor:default}.tile-water .tile-label{color:#0a6ad6}
.glass{position:relative;align-self:center;width:74px;height:92px;margin:2px auto 0;border:3px solid #dbe6f3;border-top-width:2px;border-radius:6px 6px 16px 16px;overflow:hidden;background:#f7fafe}
.glass i{position:absolute;inset:auto 0 0;height:var(--fill);background:linear-gradient(180deg,#8cc8ff,#3d97f5);transition:height .6s cubic-bezier(.22,1,.36,1)}
.glass b{position:absolute;inset:0;display:grid;place-items:center;font-size:1rem;color:#0b3a6e;text-shadow:0 1px 0 rgba(255,255,255,.6)}
.water-steps{display:flex;align-items:center;justify-content:space-between;align-self:stretch;margin-top:2px}
.water-steps button{display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:50%;background:#e8f1fd;color:#0a6ad6;font:600 1.125rem/1 inherit;cursor:pointer}
.water-steps button:active{transform:scale(.92)}
.water-steps small{font-size:.6875rem;color:var(--app-muted)}
.tile-fiber{grid-area:fiber}.tile-fiber .tile-label{color:#0f8a78}
.tile-fiber .bar{align-self:stretch;height:8px;border-radius:999px;background:#e7f3f1;overflow:hidden}
.tile-fiber .bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#5fd3bf,#12a189)}
.tile-steps{grid-area:steps}.tile-steps .tile-label{color:#e0610e}
.tile-steps .feet{display:flex;gap:3px}
.tile-steps .feet i{width:9px;height:12px;border-radius:50% 50% 45% 45%;background:#f6e3d4}
.tile-steps .feet i.on{background:linear-gradient(180deg,#ff9f0a,#ff6b3d)}
.tile-goal{grid-area:goal;flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:12px}
.tile-goal .tile-label{color:#c2610c;flex-basis:100%}
.tile-goal .spark{order:3;flex:1 1 120px;height:40px;min-width:0}
.tile-goal .spark polyline{fill:none;stroke:#e0610e;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.goal-chip{padding:3px 8px;border-radius:8px;background:#ffe8d3;color:#b25e00;font-size:.6875rem;font-weight:700}
.streak-chip{display:inline-flex;align-items:center;gap:3px;margin-left:10px;padding:2px 8px;border-radius:8px;background:#fff1e4;color:#b25e00;font-size:.75rem;font-weight:700;letter-spacing:0;text-transform:none;vertical-align:middle}
/* Shot day checklist. */
.shot-day{margin:0 0 16px;padding:16px 16px 12px;border-radius:24px;border:1px solid #dfe3f7;background:linear-gradient(165deg,#ecebfd,#fff 68%);box-shadow:0 8px 24px -14px rgba(94,92,230,.35)}
.shot-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.shot-title{font-size:1.375rem;font-weight:700;letter-spacing:-.03em;color:#5e5ce6}
.shot-med{font-size:.75rem;font-weight:600;color:#6b6aa8}
.shot-day ul{margin:0;padding:0;list-style:none;display:grid}
.shot-day li button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px 2px;border:0;border-top:1px solid rgba(94,92,230,.1);background:none;color:#16261a;font:inherit;font-size:.9375rem;text-align:left;cursor:pointer}
.shot-day li:first-child button{border-top:0}
.shot-check{display:grid;place-items:center;flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid #b9b8ee;color:#fff}
.shot-day li button.on .shot-check{background:#5e5ce6;border-color:#5e5ce6}
.shot-day li button.on span:last-child{color:#8a8aa6;text-decoration:line-through}
.shot-day .fine{margin:6px 0 0;font-size:.6875rem}
@media(min-width:1001px){.today-bento{grid-template-columns:repeat(3,1fr);grid-template-areas:"protein water fiber" "protein water steps" "goal goal goal"}}
.today-bento .tile-goal{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 12px}
.tile-goal .tile-label{grid-column:1/-1}
.tile-goal b{grid-column:1}
.tile-goal .goal-chip{grid-column:2;justify-self:start}
.tile-goal .spark{grid-column:1/-1;width:100%;height:44px}
.shot-day{grid-column:1/-1;min-width:0}
/* Meal recommendation badges and the protein gap helper. */
.score{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 8px;border-radius:8px;font-size:.6875rem;font-weight:700;vertical-align:middle;white-space:nowrap}
.score::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.score-great{background:#e6f6ea;color:#1f7a3a}.score-moderate{background:#fff3dc;color:#9a6200}.score-low{background:#fdecea;color:#b3261e}
.meal-tags{display:inline-flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.meal-tags .score{margin-left:0}
.meal-row .score{margin:4px 0 0 0;display:inline-flex}
.gap-card{margin:10px 0 14px;padding:14px 16px;border-radius:18px;border:1px solid #e3ecdc;background:linear-gradient(165deg,#f1f8ec,#fff 70%)}
.gap-card p{display:grid;gap:2px;margin:0 0 10px}.gap-card p strong{font-size:.9375rem;color:#16261a}.gap-card p span{font-size:.75rem;color:var(--app-muted)}
.gap-card button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;margin-top:6px;padding:8px 12px;border:1px solid #e3ecdc;border-radius:12px;background:#fff;font:inherit;font-size:.875rem;color:#16261a;text-align:left;cursor:pointer}
.gap-card button b{color:var(--viz-green-deep);font-variant-numeric:tabular-nums}
.gap-card.is-done{display:flex;align-items:center;gap:8px;color:#1f7a3a;font-size:.875rem;font-weight:600}
.next-meal .gap-card{margin-top:10px}
/* Dose cycle: symptoms by days since the last logged injection. */
.dose-cycle{margin:18px 0 6px;padding:16px;border-radius:18px;background:linear-gradient(165deg,#efeefd,#fff 70%);border:1px solid #e3e2f7}
.dc-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dc-head strong{font-size:.9375rem;color:#16261a}
.dc-now,.cycle-chip{padding:2px 8px;border-radius:8px;background:#e6e5fb;color:#4b49b8;font-size:.6875rem;font-weight:700;white-space:nowrap}
.cycle-chip{margin-left:6px;vertical-align:middle;letter-spacing:0;text-transform:none}
.dc-bars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;height:110px;margin:14px 0 8px}
.dc-bars>div{display:flex;flex-direction:column;align-items:center;gap:6px}
.dc-track{position:relative;flex:1;width:min(100%,22px);border-radius:999px;background:#f1f0fb;overflow:hidden}
.dc-track i{position:absolute;inset:auto 0 0;border-radius:999px;background:linear-gradient(180deg,var(--viz-purple),var(--viz-indigo))}
.dc-bars small{font-size:.625rem;font-weight:600;color:#6b6aa8}
.dc-bars .is-now small{color:#fff;background:#5e5ce6;border-radius:6px;padding:0 5px}
.dc-insight{margin:4px 0 2px;font-size:.875rem;font-weight:600;color:#2d2b7a}
.dose-cycle .fine{margin:0;font-size:.6875rem}
.metric-actions{display:inline-flex;gap:8px}
.share-canvas{display:block;width:100%;height:auto;aspect-ratio:4/5;border-radius:18px;box-shadow:0 10px 30px -14px rgba(23,37,27,.35);margin:4px 0 12px}
.share-photo{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin:0 0 8px;border:1px dashed #b8c7ae;border-radius:12px;color:var(--app-green);font-size:.875rem;font-weight:600;cursor:pointer}
.share-go{width:100%;min-height:50px}
.gap-card button b{white-space:nowrap}
/* Menu scan — "know what to order in seconds", the quiz card brought to life. */
.menu-scan>.muted{margin:0 0 12px;font-size:.875rem}
.menu-shot{display:grid;place-items:center;min-height:120px;margin:0 0 12px;border:1.5px dashed #b8c7ae;border-radius:18px;background:rgba(255,255,255,.55);color:var(--app-green);font-weight:600;cursor:pointer;overflow:hidden}
.menu-shot span{display:inline-flex;align-items:center;gap:8px}
.menu-shot img{width:100%;max-height:220px;object-fit:cover}
.menu-scan textarea{border-radius:12px;background:rgba(255,255,255,.75)}
.menu-scan .primary{width:100%;min-height:50px}
.menu-top{position:relative;padding:18px 18px 16px;border-radius:24px;text-align:center;color:#12301a;background:radial-gradient(120% 90% at 50% 0%,#b8ea8f 0%,#7ccc4f 55%,#64b83d 100%);box-shadow:0 14px 32px -16px rgba(60,140,40,.7),inset 0 1px 0 rgba(255,255,255,.45)}
.menu-top-head{display:flex;justify-content:space-between;align-items:center}
.menu-kicker{font-size:.6875rem;font-weight:800;letter-spacing:.1em}
.menu-match{font-size:.8125rem;font-weight:700}
.menu-rank{display:inline-block;margin:10px 0 8px;padding:3px 10px;border-radius:8px;background:#ffd84a;color:#4a3700;font-size:.75rem;font-weight:800}
.menu-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:4px 0 8px}
.menu-chips span{padding:4px 10px;border-radius:8px;background:rgba(255,255,255,.62);font-size:.75rem;font-weight:600;color:#1f4a22}
.menu-top h3{margin:4px 0 4px;font-size:1.25rem;font-weight:700;letter-spacing:-.02em}
.menu-top p{margin:0 0 6px;font-size:.8125rem;color:#244b27}
.menu-top .menu-meta{font-weight:700}
.menu-tip{font-style:italic}
.menu-top .menu-log{display:inline-flex;align-items:center;gap:6px;margin-top:6px;min-height:42px;padding:0 18px;border:0;border-radius:12px;background:#1c3a1f;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.menu-item{margin-top:10px;padding:12px 14px;border-radius:16px;border:1px solid rgba(255,255,255,.8);background:rgba(255,255,255,.66)}
.menu-item>div:first-child{display:flex;justify-content:space-between;gap:10px}
.menu-item strong{font-size:.9375rem;color:#16261a}
.menu-item-match{font-size:.75rem;font-weight:700;color:#1f7a3a;white-space:nowrap}
.menu-item .menu-chips{justify-content:flex-start;margin:6px 0 4px}.menu-item .menu-chips span{background:#e8f4da}
.menu-item .menu-meta{margin:0;font-size:.75rem;color:var(--app-muted)}
.menu-item .menu-log{margin-top:4px;font-size:.8125rem}
.menu-avoid-title{margin:18px 0 0;font-size:.875rem;color:#b3261e}
.menu-item.is-avoid{background:#fdf1ef;border-color:#f7d9d4}
.menu-scan>.fine{margin:12px 0 10px}
.menu-scan .menu-again{width:100%}
.menu-cta{margin:4px 0 14px}.menu-cta>span:nth-child(2){display:grid;gap:2px}.menu-cta small{font-size:.75rem;font-weight:500;color:var(--app-muted)}
.quick-add-grid>.quick-add-item:last-child:nth-child(odd){grid-column:1/-1}
/* Insight of the day. */
.insight-card{margin:0 0 16px;padding:16px 16px 14px;border-radius:24px;background:linear-gradient(165deg,#1f3a27,#16301f);color:#eef4ea;box-shadow:0 12px 30px -16px rgba(20,48,31,.7)}
.ins-kicker{font-size:.75rem;font-weight:700;letter-spacing:.02em;color:#b9d9a8}
.insight-card p{margin:6px 0 10px;font-size:.9375rem;line-height:1.45;color:#f3f7f0}
.ins-legend{display:flex;gap:22px;padding-top:10px;border-top:1px solid rgba(255,255,255,.12)}
.ins-legend span{display:grid;gap:2px;font-size:.6875rem;color:#c9d6c3}.ins-legend b{font-size:1.25rem;color:#fff;font-variant-numeric:tabular-nums}
.ins-legend .is-today{color:#8ab8ff}
.ins-chart{display:block;width:100%;height:auto;margin-top:8px;overflow:visible}
.ins-chart polyline{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.ins-usual{stroke:rgba(255,255,255,.4)}.ins-today{stroke:#6e9fff}.ins-area{fill:rgba(110,159,255,.18)}
.ins-chart line{stroke:rgba(255,255,255,.35);stroke-width:1}
.ins-chart text{fill:#aebbaa;font-size:9px}
.ins-cta{margin-top:8px;min-height:40px;padding:0 16px;border:0;border-radius:12px;background:#e8f1e3;color:#16301f;font:inherit;font-size:.875rem;font-weight:700;cursor:pointer}
/* Medication pattern tile. */
.today-bento{grid-template-areas:"med med" "protein water" "fiber steps" "goal goal"}
.tile-med{grid-area:med}.tile-med .tile-label{color:#5e5ce6}
.med-sub,.med-next{font-size:.75rem;color:var(--app-muted)}
.med-next{color:#4b49b8;font-weight:600}
.med-week{display:flex;gap:6px}
.med-week i{display:grid;justify-items:center;gap:4px;font-style:normal}
.med-week i::before{content:"";width:14px;height:22px;border-radius:999px;background:#e9e8fb}
.med-week i.on::before{background:linear-gradient(180deg,#8b89f5,#5e5ce6)}
.med-week i.is-today::before{box-shadow:inset 0 0 0 2px #5e5ce6;background:#fff}
.med-week i.is-today.on::before{background:linear-gradient(180deg,#8b89f5,#5e5ce6)}
.med-week span{font-size:.625rem;font-weight:600;color:#8a89b8}
.goal-date{grid-column:1/-1;font-size:.75rem;color:#8a5a2b}
@media(min-width:1001px){.today-bento{grid-template-areas:"med med med" "protein water fiber" "protein water steps" "goal goal goal"}}
.today-bento:not(:has(.tile-med)){grid-template-areas:"protein water" "fiber steps" "goal goal"}@media(min-width:1001px){.today-bento:not(:has(.tile-med)){grid-template-areas:"protein water fiber" "protein water steps" "goal goal goal"}}
.language-options{margin-top:8px}.language-options .settings-row[aria-current]{font-weight:600}.language-check{color:var(--dosy-green-700,currentColor);font-size:1.1rem}
.app-loading .sidebar-brand{display:block}.app-loading .sk-nav{display:grid;gap:14px;margin-top:40px}.app-loading .sk-nav .skeleton{height:18px;width:78%}.app-loading .sk-avatar{width:36px;height:36px;border-radius:50%;margin-left:auto}.app-loading .app-top{display:flex;align-items:center}.app-loading .app-top .logo{display:none}.app-loading .sk-eyebrow{width:132px;height:12px;margin-bottom:14px}.app-loading .sk-heading{width:180px;height:44px;margin-bottom:14px}.app-loading .sk-line{width:220px;height:16px}.app-loading .sk-journey{height:240px;border-radius:22px;margin-bottom:22px}.app-loading .sk-bento{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.app-loading .sk-bento .skeleton{height:140px;border-radius:20px}.app-loading .mobile-nav span{display:grid;place-items:center;width:44px;height:44px;color:#b7c2ad}.app-loading .mobile-nav .dock-add{border-radius:50%;background:var(--app-green);color:var(--dosy-cream)}
@media(max-width:760px){.app-loading .app-top{justify-content:space-between}.app-loading .app-top .logo{display:block;width:96px}.app-loading .app-top>span:first-child{display:none}.app-loading .sk-journey{height:300px;border-radius:18px}.app-loading .sk-bento{grid-template-columns:1fr 1fr;gap:12px}.app-loading .sk-bento .skeleton{height:128px;border-radius:18px}}
