:root{font-size:var(--native-font-root-size,16px);--ink:#171716;--muted:#91918d;--paper:#fbfbfa;--card:#fff;--line:#e9e9e6;--protein:#fa7e78;--fat:#f6c553;--carbs:#5e91e9;--fiber:#54bf78;--blue:#6093ee;--pink:#fa7ba2}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:var(--native-font-weight-normal,400) 1rem system-ui,-apple-system,sans-serif;letter-spacing:0}button,input,textarea{font:inherit}button{border:0;cursor:pointer;color:inherit}.app{width:min(100%,480px);margin:auto;padding:16px 16px 126px}.topbar{height:52px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.topbar strong{font-size:26px;letter-spacing:-.07em}.icon-button{justify-self:end;background:none;font-size:31px;line-height:1}.week{display:grid;grid-template-columns:repeat(7,1fr);margin:36px 0 35px}.day{padding:0;background:none;color:#aaa9a7;font-weight:700}.day span,.day b{display:block;text-align:center}.day b{display:grid;place-items:center;width:45px;height:45px;margin:11px auto 0;border-radius:50%;font-size:20px}.day.active{color:var(--ink)}.day.active b{background:var(--ink);color:#fff}.card{background:var(--card);border-radius:28px;box-shadow:0 9px 22px #1e1e1b08}.dashboard{padding:35px 28px 26px;display:grid;grid-template-columns:1fr auto;gap:28px}.calories b{display:block;font-size:57px;letter-spacing:-.09em;line-height:.9}.calories span{display:block;color:var(--muted);font-size:17px;margin-top:13px}.ring{--progress:0%;width:128px;height:128px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(var(--card) 0 60%,transparent 61%),conic-gradient(var(--ink) var(--progress),#e8e8e6 0)}.ring span{font-size:33px;color:#aaa}.macro-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.macro-grid article>b{font-size:13px;white-space:nowrap}.macro-grid article span{display:block;margin-top:8px;font-size:13px;color:var(--muted)}.track{height:7px;background:#ededeb;border-radius:99px;margin-top:14px;overflow:hidden}.track i{display:block;height:100%;border-radius:inherit}.activity-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.activity{min-height:178px;padding:20px;position:relative}.activity-title{display:block;font-size:17px;font-weight:700}.activity b{display:block;font-size:37px;letter-spacing:-.07em;margin-top:28px}.activity small{display:block;color:var(--muted);font-size:15px;margin-top:4px}.pink{color:var(--pink)}.blue{color:var(--blue)}.add{position:absolute;right:19px;top:20px;border-radius:12px;width:43px;height:43px;font-size:29px;background:#fff0f4}.add.blue{background:#eef4ff}.meter{position:absolute;bottom:26px;left:20px;right:20px;height:7px;background:#e9e9e7;border-radius:9px}.meter:after{content:'';display:block;width:var(--width,0%);height:100%;border-radius:inherit;background:currentColor}.progress-button{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:13px;padding:24px 22px;font-size:20px;font-weight:700;text-align:left}.progress-button span{color:var(--muted);font-size:36px;font-weight:400}.history-head{display:flex;align-items:center;justify-content:space-between;margin:40px 2px 18px}.history-head h1{font-size:29px;margin:0;letter-spacing:-.06em}.text-button{background:none;color:var(--muted);text-decoration:underline;text-underline-offset:4px;font-size:12px}.meals{display:grid;gap:12px}.meal{display:grid;grid-template-columns:82px 1fr auto;gap:14px;padding:12px;cursor:pointer;text-align:left}.meal-thumb{width:82px;height:82px;border-radius:16px;object-fit:cover;background:#e7e7e3}.meal-copy{min-width:0}.meal-name{display:block;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meal-meta{display:block;color:var(--muted);font-size:12px;margin-top:4px}.macro-pills{display:flex;gap:5px;margin-top:11px}.macro-pills span{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;color:#fff;font-size:9px;font-weight:800}.meal-side{text-align:right}.meal-time{display:block;color:var(--muted);font-size:12px}.meal-calories{display:block;margin-top:27px;font-size:16px;white-space:nowrap}.empty{text-align:center;color:var(--muted);margin:38px 22px;line-height:1.5}.fab{position:fixed;z-index:4;bottom:28px;left:50%;transform:translateX(-50%);width:174px;height:70px;border-radius:38px;background:#000;color:#fff;font-size:53px;font-weight:200;line-height:.7;box-shadow:0 12px 24px #0003}.dialog{border:0;color:var(--ink);box-shadow:0 18px 55px #0003}.dialog::backdrop{background:#0008}.sheet{width:min(480px,100%);margin:auto 0 0;padding:26px 24px;border-radius:30px 30px 0 0;max-height:91vh}.dialog h2{font-size:27px;letter-spacing:-.06em;margin:12px 0}.dialog p,.helper{color:var(--muted);line-height:1.45}.dialog label{display:block;font-size:13px;font-weight:700;margin:16px 0 7px}.dialog input,.dialog textarea{display:block;width:100%;border:1px solid var(--line);border-radius:15px;background:#fff;padding:13px;outline:none}.dialog input:focus,.dialog textarea:focus{border-color:#888}.dialog-close{float:right;background:none;font-size:31px;line-height:1}.handle{width:51px;height:6px;border-radius:6px;background:#dededc;margin:0 auto 20px}.voice{width:100%;background:#eef4ff;color:#3968b6;padding:13px;border-radius:13px;font-weight:700;margin-top:10px}.hint{font-size:12px;min-height:18px;margin:7px 0!important}.actions{display:flex;gap:10px;justify-content:flex-end;margin-top:21px}.actions button,.outline-button{border-radius:13px;padding:13px 16px;font-weight:700}.secondary{background:#eeeeec}.primary{background:#000;color:#fff}.primary:disabled{opacity:.5}.meal-detail{width:min(480px,100%);min-height:100vh;margin:0;padding:0;background:transparent}.photo-stage{height:43vh;min-height:280px;background:#333;position:relative}.photo-stage img{width:100%;height:100%;object-fit:cover}.photo-actions{position:absolute;top:20px;left:18px;right:18px;display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;align-items:center;color:#fff}.photo-actions button{width:47px;height:47px;border-radius:50%;background:#ffffffc9;font-size:25px}.photo-actions time{text-align:center;font-size:17px;text-shadow:0 1px 5px #000}.detail-sheet{position:relative;margin-top:-25px;min-height:58vh;padding:21px 24px 45px;background:#fff;border-radius:30px 30px 0 0}.meal-name-input{font-size:22px;font-weight:800}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.portion{height:48px;border:1px solid var(--line);border-radius:15px;display:grid;grid-template-columns:1fr 1fr 1fr;place-items:center}.portion button{background:none;font-size:32px}.portion output{font-size:19px;font-weight:800}.edit-macros{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:13px}.macro-input{border:1px solid var(--line);border-radius:16px;padding:12px}.macro-input label{margin:0;color:var(--muted)}.macro-input input{border:0;padding:4px 0 0;font-size:18px;font-weight:800}.macro-input.protein{border-left:6px solid var(--protein)}.macro-input.fat{border-left:6px solid var(--fat)}.macro-input.carbs{border-left:6px solid var(--carbs)}.macro-input.fiber{border-left:6px solid var(--fiber)}.row-button{display:flex;justify-content:space-between;width:100%;margin-top:14px;padding:17px;border-radius:15px;background:#f5f5f4;font-weight:700;text-align:left}.row-button span{color:var(--muted);font-weight:500}.row-button.accent{background:#fff0f3;color:#ba5366}.detail-actions{display:block}.detail-actions button{width:100%}.ingredient-sheet{max-height:90vh;overflow:auto}.ingredient-list{display:grid;gap:11px}.ingredient-card{position:relative;padding:15px;border-radius:19px;background:#f7f7f6}.ingredient-card>label{margin:0 0 8px!important}.ingredient-card input{background:#fff;padding:8px;border-radius:10px}.remove-ingredient{position:absolute;right:10px;top:10px;width:27px;height:27px;border-radius:50%;background:#ffe8e8;color:#c95d5d;font-size:20px}.ingredient-card>label:first-child{padding-right:35px}.ingredient-macros{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.ingredient-macros label{font-size:11px!important;margin:0!important}.ingredient-macros label:nth-child(1){color:var(--protein)}.ingredient-macros label:nth-child(2){color:#c4931c}.ingredient-macros label:nth-child(3){color:var(--carbs)}.ingredient-macros label:nth-child(4){color:var(--fiber)}.outline-button{width:100%;border:1px solid var(--ink);background:#fff;margin-top:13px}.correction{width:min(480px,calc(100% - 28px));min-height:100vh;padding:55px 30px;margin:0}.correction textarea{font-size:19px}.correction-actions{position:absolute;right:30px;bottom:35px;left:30px}.quantity-sheet h2{text-align:center}.quick-values{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:25px 0}.quick-values button{padding:14px 4px;border-radius:13px;background:#edf3ff;color:var(--blue);font-weight:700}.pink-values button{background:#fff0f4;color:var(--pink)}.fullscreen{width:min(480px,100%);min-height:100vh;margin:0;padding:35px 22px;background:var(--paper)}.fullscreen h2{text-align:center;margin:0 0 25px}.page-back{position:absolute;top:32px;left:20px;background:none;font-size:30px}.progress-content{display:grid;gap:18px}.chart-card,.profile-card{background:#fff;border-radius:26px;padding:22px}.chart-card h3{font-size:26px;margin:0}.chart-card p{color:var(--muted);margin:5px 0 18px}.bars{display:flex;align-items:end;gap:10px;height:170px;padding:0 3px;border-bottom:1px solid var(--line)}.bar{flex:1;min-width:22px;border-radius:10px 10px 0 0;background:var(--carbs);position:relative}.bar:after{content:attr(data-label);position:absolute;left:50%;bottom:-23px;transform:translateX(-50%);color:var(--muted);font-size:11px}.bar-stack{display:flex;flex-direction:column-reverse;height:100%;border-radius:inherit;overflow:hidden}.bar-stack i{display:block;width:100%}.empty-chart{display:grid;place-items:center;height:150px;color:var(--muted);text-align:center}.profile-form{display:grid;gap:15px}.profile-card{display:grid;gap:11px}.profile-card label{margin:0!important}.full-width{width:100%;padding:16px;border-radius:15px;font-weight:800}.toast{position:fixed;z-index:10;bottom:112px;left:50%;transform:translate(-50%,12px);background:#222;color:#fff;opacity:0;border-radius:14px;padding:11px 15px;transition:.2s;white-space:nowrap;font-size:13px}.toast.show{opacity:1;transform:translate(-50%,0)}@media(min-width:600px){body{background:linear-gradient(90deg,#e6e6e3,var(--paper) 27%,var(--paper) 73%,#e6e6e3)}.sheet{margin:auto}.meal-detail,.fullscreen,.correction{margin:auto;min-height:90vh;border-radius:30px}.fab{bottom:30px}}
.activity-entry{position:relative;width:100%;margin-top:12px;padding:18px 22px;text-align:left;display:grid;gap:3px}.activity-entry span{color:var(--pink);font-weight:800}.activity-entry b{font-size:18px}.activity-entry small{color:var(--muted)}.activity-entry i{position:absolute;right:22px;top:50%;transform:translateY(-50%);font-size:32px;color:var(--muted);font-style:normal}.dialog select{display:block;width:100%;border:1px solid var(--line);border-radius:15px;background:#fff;padding:13px;outline:none}.activity-sheet{max-height:91vh;overflow:auto}.activity-total{text-align:center;font-weight:700;margin:16px 0 8px!important}.activity-list{display:grid;gap:8px;max-height:200px;overflow:auto}.activity-record{display:grid;grid-template-columns:1fr auto auto;gap:9px;align-items:center;background:#f5f5f4;border-radius:14px;padding:12px}.activity-record b{display:block;font-size:14px}.activity-record small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.activity-record strong{font-size:14px}.activity-record button{width:30px;height:30px;border-radius:9px;background:#ffe8e8;color:#c95d5d;font-size:19px}
.meal-source-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.detail-source-badges{margin:12px 0 0}.source-badge{display:inline-flex;align-items:center;min-height:22px;padding:3px 8px;border-radius:999px;background:#ececea;color:#555;font-size:10px;font-weight:800;line-height:1.1}.source-etikett{background:#e9f6ec;color:#237a42}.source-barcode{background:#edf3ff;color:#315fa5}.source-produktdatenbank{background:#f3efff;color:#6745a2}.source-kandidat{background:#fff4d9;color:#946c00}.source-ki-schaetzung{background:#f4f0f2;color:#745567}.ingredient-source-badge{position:absolute;top:12px;right:45px}.product-review-sheet{max-height:91vh;overflow:auto}.product-review-list{display:grid;gap:11px}.product-review-card{padding:14px;border:1px solid var(--line);border-radius:17px;background:#f8f8f7}.product-review-choice{display:grid!important;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;margin:0!important;font-size:15px!important}.product-review-choice input{width:21px!important;height:21px;margin:0;accent-color:#000}.product-review-choice strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-review-controls{display:grid;grid-template-columns:1fr 110px;gap:10px;margin-top:11px}.product-review-controls label{margin:0!important;font-size:11px!important}.product-review-controls input,.product-review-controls select{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px}.toggle-row{display:flex!important;align-items:center;justify-content:space-between;gap:16px}.toggle-row input{width:22px!important;height:22px;margin:0;accent-color:#000}.profile-card h3{margin:0;font-size:19px}
.dialog-close{min-width:44px;min-height:44px;padding:0;display:grid;place-items:center}.product-review-choice{min-height:44px}.toggle-row{min-height:44px}.product-review-choice input{width:24px!important;height:24px!important}
.product-review-controls input,.product-review-controls select{min-height:44px}
.scan-photo-preview{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0 2px}.scan-photo-preview figure{position:relative;margin:0;aspect-ratio:1;border-radius:13px;overflow:hidden;background:#e7e7e3}.scan-photo-preview img{width:100%;height:100%;object-fit:cover}.scan-photo-preview figcaption{position:absolute;right:4px;bottom:4px;min-width:20px;padding:2px 5px;border-radius:999px;background:#000b;color:#fff;font-size:11px;text-align:center}.scan-feedback{margin:14px 0 0!important;padding:11px 13px;border-radius:13px;background:#fff0f2;color:#a23f55;font-size:13px!important;font-weight:650}.scan-feedback[data-kind="info"]{background:#eef4ff;color:#315fa5}
.analysis-trace-list{display:grid;gap:10px;margin:15px 0}.analysis-trace-event{padding:14px;border-radius:16px;background:#fff;border:1px solid var(--line)}.analysis-trace-event>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.analysis-trace-event span{padding:3px 8px;border-radius:999px;background:#ececea;color:#555;font-size:11px;font-weight:800}.analysis-trace-event.error{border-color:#f3c5cd}.analysis-trace-event.error span{background:#fff0f2;color:#a23f55}.analysis-trace-event small{display:block;margin-top:5px;color:var(--muted);line-height:1.35}.analysis-trace-event pre{max-height:250px;margin:10px 0 0;padding:10px;overflow:auto;border-radius:10px;background:#f5f5f4;color:#4b4b47;font:11px ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;word-break:break-word;letter-spacing:0}.trace-dialog .outline-button{position:sticky;bottom:0;margin-bottom:0}.training-consent{display:flex!important;align-items:flex-start;gap:9px;margin-top:15px!important;font-size:12px!important;line-height:1.35}.training-consent input{width:auto!important;margin:2px 0 0}.training-consent+.helper{font-size:12px;margin:4px 0 0}

/* Compact, open meal composer. */
#scanDialog{width:min(480px,100%);max-width:100%;margin:auto auto 0;padding:0 20px max(20px,env(safe-area-inset-bottom));border-radius:22px 22px 0 0;max-height:92dvh;overflow:auto}
#scanDialog form{position:relative;padding-top:4px}
#scanDialog .dialog-close{position:absolute;right:-8px;top:2px;float:none;font-size:26px;z-index:1}
.scan-handle{display:grid;place-items:center;width:calc(100% - 88px);height:44px;margin:0 auto 8px;background:none;touch-action:none;cursor:grab}
.scan-handle:active{cursor:grabbing}.scan-handle span{width:36px;height:4px;border-radius:4px;background:#cececa}
#scanDialog .scan-photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px;margin:0 0 20px}
#scanDialog .scan-photo-preview figure{border-radius:12px}
.scan-add-photo{min-height:84px;aspect-ratio:1;border:1px dashed #bdbdb7;border-radius:12px;background:transparent;font-size:38px;font-weight:300;color:#666660}
.scan-add-photo[hidden]{display:none}
.scan-remove-photo{position:absolute;right:0;top:0;width:44px;height:44px;display:grid;place-items:center;background:radial-gradient(circle,#171716d9 0 13px,transparent 14px);color:#fff;font-size:23px;line-height:1}
#scanDialog label{margin:0 0 8px;font-weight:600;color:#595955}
#scanDialog .voice{background:none;color:#595955;width:auto;padding:10px 0;font-size:14px;font-weight:500;margin-top:6px}
#scanDialog .hint:empty{display:none}
#scanDialog .actions{margin-top:10px}
#scanDialog .actions .primary{width:100%;padding:13px;border-radius:12px;font-size:15px}
#scanDialog button:focus-visible{outline:2px solid #3968b6;outline-offset:2px}

/* Clear input affordances and an open meal detail layout. */
.context-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-4px 0 6px}
#scanDialog .context-heading label{margin:0}
.microphone-button{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border-radius:50%;background:#f1f1ee;color:#4f4f4a}
.microphone-button:hover{background:#e8e8e4}
#mealDetailDialog{width:min(480px,100%);max-width:100%;height:100dvh;min-height:0;max-height:100dvh;margin:0 auto;padding:0;border-radius:0;background:#fff;overflow:auto}
#mealDetailDialog .photo-stage{height:clamp(180px,28dvh,260px);min-height:0;background:#e7e7e3}
#mealDetailDialog .photo-actions{top:max(12px,env(safe-area-inset-top));left:12px;right:12px;gap:8px}
#mealDetailDialog .photo-actions button{width:44px;height:44px;display:grid;place-items:center;background:#fffffff0;color:var(--ink);font-size:24px}
#mealDetailDialog .photo-actions time{font-size:14px}
#mealDetailDialog .detail-sheet{margin:0;padding:20px 20px max(24px,env(safe-area-inset-bottom));min-height:0;border-radius:0}
#mealDetailDialog :is(#mealName,[data-detail-id="mealName"]){border:0;background:none;padding:0;border-radius:0;font-size:23px;font-weight:700;line-height:1.3;letter-spacing:-.04em;resize:none;overflow:auto}
#mealDetailDialog .detail-grid{grid-template-columns:minmax(0,1fr) minmax(44px,.5fr) 128px;gap:12px;margin-top:12px;align-items:start}
#mealDetailDialog .detail-grid label{margin:0;font-size:12px;color:#676760;font-weight:500}
#mealDetailDialog :is(#mealCalories,[data-detail-id="mealCalories"]){border:0;background:none;padding:4px 0 0;font-size:30px;font-weight:650;line-height:1.2;border-radius:0;color:var(--ink)}
#mealDetailDialog .portion{margin-top:5px;height:44px;border:0;border-radius:10px;background:#f3f3f0;color:var(--ink)}
#mealDetailDialog .portion button{width:44px;height:44px;font-size:24px}
#mealDetailDialog .portion output{font-size:16px;font-weight:600}
#mealDetailDialog .edit-macros{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0 4px}
#mealDetailDialog .macro-input{padding:0;border:0;border-radius:0;min-width:0;background:none}
#mealDetailDialog .macro-input label{font-size:11px;font-weight:500;color:#676760;letter-spacing:-.03em}
#mealDetailDialog .macro-input input{border:0;border-radius:0;padding:6px 0 0;background:none;font-size:18px;font-weight:650;width:100%;color:var(--ink)}
#mealDetailDialog input[readonly]{appearance:textfield}
#mealDetailDialog input[readonly]::-webkit-inner-spin-button{appearance:none}
#mealDetailDialog .detail-source-badges{margin:12px 0 0}
#mealDetailDialog .source-badge{background:none;padding:0;color:#787871;font-size:11px;font-weight:500}
#mealDetailDialog .row-button{margin:16px 0 0;padding:14px 0;border-radius:0;border-top:1px solid var(--line);background:none;font-size:14px}
#mealDetailDialog .meal-options{margin-top:22px;border-top:1px solid var(--line);font-size:12px;color:#777771}
#mealDetailDialog .meal-options summary{padding:16px 0;cursor:pointer}
#mealDetailDialog .meal-options .row-button{margin:0;border:0;padding:6px 0 14px}
#mealDetailDialog button:focus-visible,#mealDetailDialog summary:focus-visible{outline:2px solid #3968b6;outline-offset:2px}
@media(min-width:600px){#mealDetailDialog{height:94dvh;max-height:94dvh;margin:auto;border-radius:20px}}
@media(max-width:360px){#mealDetailDialog .detail-sheet{padding-left:16px;padding-right:16px}#mealDetailDialog .edit-macros{gap:6px}#mealDetailDialog .macro-input label{font-size:10px}}

/* Meal nutrition: consistent colors and meaningful proportions. */
#mealDetailDialog .macro-input.protein input{color:var(--protein)}
#mealDetailDialog .macro-input.fat input{color:var(--fat)}
#mealDetailDialog .macro-input.carbs input{color:var(--carbs)}
#mealDetailDialog .macro-input.fiber input{color:var(--fiber)}
#mealDetailDialog .ingredient-stat{display:block;text-align:left;align-self:start;margin:0;padding:0;border:0;background:none;min-height:60px;border-radius:6px}
#mealDetailDialog .stat-label{display:block;font-size:12px;color:#676760;font-weight:500}
#mealDetailDialog :is(#ingredientCount,[data-detail-id="ingredientCount"]){display:block;padding:4px 0 0;font-size:30px;font-weight:650;line-height:1.2;color:var(--ink)}
#mealDetailDialog .ingredient-stat:hover{background:#f7f7f5}
#mealDetailDialog .detail-grid .portion-control{display:block;min-width:0}
#mealDetailDialog .portion-control .portion{width:100%;margin:4px 0 0;grid-template-columns:44px minmax(0,1fr) 44px}
.meal-macro-chart{display:flex;align-items:flex-end;gap:5px;height:28px;width:72px;margin-top:8px}
.macro-bar{position:relative;display:block;height:100%;flex:1;min-width:0;background:#f0f0ed;border-radius:3px;overflow:hidden}
.macro-bar-fill{position:absolute;bottom:0;left:0;right:0;display:block;border-radius:3px}
.macro-bar.unknown{background:repeating-linear-gradient(135deg,#efefec 0 3px,#fff 3px 6px)}
.source-badge[hidden]{display:none}

/* Shared sizing for every modal, including nested sheets. */
.dialog{width:min(480px,100%);max-width:100%;margin-inline:auto}
.dialog.sheet{margin:auto auto 0;max-height:92dvh}
.dialog.fullscreen,.dialog.correction{width:min(480px,100%);height:100dvh;min-height:0;max-height:100dvh;margin:0 auto;border-radius:0;overflow:auto}
@media(min-width:600px){.dialog.sheet{margin:auto}.dialog.fullscreen,.dialog.correction{height:94dvh;max-height:94dvh;margin:auto;border-radius:20px}}
@media(max-width:360px){#mealDetailDialog .detail-grid{gap:8px}#mealDetailDialog :is(#mealCalories,[data-detail-id="mealCalories"]),#mealDetailDialog :is(#ingredientCount,[data-detail-id="ingredientCount"]){font-size:28px}}

/* Shared two-row meal summary: labels above equally aligned controls. */
#mealDetailDialog .detail-grid{grid-template-columns:minmax(0,1fr) minmax(44px,.5fr) 128px;grid-template-rows:18px 44px;column-gap:12px;row-gap:6px;align-items:stretch}
#mealDetailDialog .detail-grid>.stat-label{display:block;margin:0;padding:0;background:none;border:0;text-align:left;font-size:12px;font-weight:500;line-height:18px;color:#676760;min-width:0}
#mealDetailDialog .detail-grid>:is(#mealCalories,[data-detail-id="mealCalories"]){height:44px;padding:0;line-height:44px;margin:0}
#mealDetailDialog .detail-grid>.ingredient-stat{height:44px;min-height:0;padding:0;margin:0}
#mealDetailDialog :is(#ingredientCount,[data-detail-id="ingredientCount"]){padding:0;height:44px;line-height:44px}
#mealDetailDialog .detail-grid>.portion{height:44px;margin:0;grid-template-columns:44px minmax(0,1fr) 44px}
#mealDetailDialog .photo-actions{grid-template-columns:1fr auto auto}
#mealDetailDialog .photo-actions time{text-align:left}
@media(max-width:360px){#mealDetailDialog .detail-grid{column-gap:8px}}

/* Every dialog has one accessible drag handle, including fullscreen views. */
.dialog.sheet,.dialog.fullscreen{padding-top:0}
.dialog .dialog-handle,.dialog .page-back.dialog-handle{position:sticky;top:0;left:auto;right:auto;z-index:3;display:grid;place-items:center;width:100%;height:40px;min-height:40px;margin:0 auto 8px;padding:0;border:0;border-radius:0;background:#fff;touch-action:none;cursor:grab;float:none}
.dialog .dialog-handle:active{cursor:grabbing}
.dialog .dialog-handle>span{display:block;width:36px;height:4px;margin:0;border-radius:4px;background:#c5c5be}
#scanDialog .scan-handle{width:100%;margin-bottom:8px}
#mealDetailDialog>.dialog-handle{margin:0;height:36px;min-height:36px}
.dialog .dialog-handle:focus-visible{outline:2px solid #3968b6;outline-offset:-2px}

/* Compact home: open sections instead of stacked cards. */
body{background:var(--paper)}
.app{padding:12px 20px 96px}
.topbar{height:40px}.topbar strong{font-size:23px}.icon-button{font-size:27px;min-width:44px;min-height:44px}
.week{margin:18px 0 22px}.day b{width:34px;height:34px;margin-top:7px;font-size:15px}.day span{font-size:12px}
.dashboard{padding:0 0 22px;gap:20px;background:none;box-shadow:none;border-radius:0;border-bottom:1px solid #deded8;align-items:center}
.calories b{font-size:46px;letter-spacing:-.065em;line-height:1}
.calories span{margin-top:8px;font-size:13px;color:#777771}
.burn-entry{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:125px;min-height:100px;padding:4px 0;background:none;text-align:center}
.burn-entry svg{color:#d28337}.burn-entry>span{font-size:18px;font-weight:650}.burn-entry small{font-size:10px;color:#65655f}
.burn-entry:hover{background:#ebebe6;border-radius:12px}
.macro-grid{gap:12px}.macro-grid article>b{font-size:11px}.macro-grid article span{font-size:12px;margin-top:6px}.track{height:5px;margin-top:8px}
.activity-grid{gap:24px;margin:0;padding:18px 0;border-bottom:1px solid #deded8}
.activity{min-height:108px;padding:0;background:none;border-radius:0;box-shadow:none}
.activity-title{font-size:13px;font-weight:600}.activity b{font-size:28px;margin-top:13px;letter-spacing:-.04em}.activity small{font-size:11px;margin-top:3px}
.activity .add{top:0;right:0;width:36px;height:36px;font-size:25px;background:transparent;border-radius:50%}
.activity .meter{left:0;right:0;bottom:0;height:4px}
.progress-button{padding:14px 0;margin:0;border-bottom:1px solid #deded8;border-radius:0;box-shadow:none;background:none;font-size:14px;font-weight:600}.progress-button span{font-size:25px}
.history-head{margin:24px 0 12px}.history-head h1{font-size:21px;letter-spacing:-.04em}
.meals{gap:0}.meal{grid-template-columns:64px minmax(0,1fr) auto;gap:12px;padding:12px 0;border-bottom:1px solid #e3e3de;border-radius:0;box-shadow:none;background:none}
.meal-thumb{width:64px;height:64px;border-radius:10px}.meal-name{font-size:14px}.meal-meta{font-size:11px}.meal-time{font-size:11px}.meal-calories{font-size:14px;margin-top:28px}.meal-macro-chart{height:21px;margin-top:6px;width:64px}
.fab{width:58px;height:58px;bottom:20px;border-radius:50%;font-size:38px;box-shadow:0 5px 15px #0002}
.empty{font-size:14px;margin:24px 12px;line-height:1.5}
@media(max-width:360px){.app{padding-left:16px;padding-right:16px}.calories b{font-size:40px}.burn-entry{min-width:110px}.macro-grid{gap:7px}.macro-grid article>b{font-size:10px}}

/* Burned energy: summary, activity entry, optional budget adjustment. */
#burnDialog h2{font-size:23px;margin:4px 0 20px}
.burn-summary{display:flex;align-items:baseline;gap:10px}.burn-summary strong{font-size:34px;font-weight:650;letter-spacing:-.05em}.burn-summary span{font-size:13px;color:#777771}
#burnDialog .burn-breakdown{font-size:12px;color:#777771;margin:8px 0 20px}
.burn-add{display:flex;align-items:center;gap:12px;width:100%;padding:13px 16px;border-radius:12px;text-align:left;font-size:15px;font-weight:600}
.burn-add small{display:block;margin-top:3px;font-size:12px;font-weight:400;color:#ccc}
#burnDialog .activity-list{margin:18px 0;max-height:35dvh;gap:0}
#burnDialog .activity-record{background:none;border-radius:0;border-bottom:1px solid var(--line);padding:12px 0}
#burnDialog .burn-budget{border-top:1px solid var(--line);padding-top:14px;font-size:13px}
#burnDialog .actions{margin-top:14px}

/* One overview ring and three consistent quick-entry columns. */
.dashboard{display:flex;flex-direction:column;gap:16px;padding-bottom:20px}
.calorie-overview{position:relative;width:220px;height:220px;margin:0 auto}
#calorieRing{display:block;width:100%;height:100%}
.calorie-overview .calories{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.calorie-overview .calories b{font-size:42px}.calorie-overview .calories span{font-size:12px;margin-top:7px}
.budget-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;font-size:11px;color:#65655f}
.budget-legend span:before{content:'';display:inline-block;width:7px;height:7px;margin-right:4px;border-radius:50%;background:#d6d6cf}
.budget-legend .steps:before{background:var(--pink)}.budget-legend .activities:before{background:#d58b42}
.dashboard .macro-grid{display:grid;width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}
.activity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:14px 0}
.activity-grid .activity{min-height:110px;min-width:0}
.tracking-open{display:block;width:100%;height:110px;padding:0;background:none;text-align:left;position:relative}
.tracking-open .activity-title{display:flex;align-items:center;height:36px;padding-right:30px;font-size:12px;line-height:1}
.activity-grid .activity .add{top:0;right:-5px;height:36px;width:32px;line-height:1;display:grid;place-items:center;padding:0;font-size:24px}
.activity-grid .activity b{font-size:24px;margin:6px 0 0;font-weight:650;white-space:nowrap}.tracking-unit{font-size:12px;font-weight:500}
.activity-grid .activity small{font-size:10px;white-space:nowrap;margin-top:5px}
.activity-orange{color:#b67533}
.quantity-list{display:grid;gap:0;margin:20px 0;max-height:30dvh;overflow:auto}
.quantity-entry{display:grid;grid-template-columns:minmax(0,1fr) auto 44px;align-items:end;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.dialog .quantity-entry label{margin:0;font-size:11px;font-weight:500;color:#777771;text-align:left}
.dialog .quantity-entry input{margin-top:4px;padding:8px 10px;border-radius:8px;font-size:16px;color:var(--ink)}
.quantity-entry>span{font-size:12px;padding-bottom:12px;color:#777771}.quantity-entry>button{width:44px;height:44px;background:none;display:grid;place-items:center;color:#777771}
.tracking-open:focus-visible,.activity-grid .add:focus-visible{outline:2px solid #3968b6;outline-offset:2px}
@media(max-width:360px){.activity-grid{gap:8px}.tracking-open .activity-title{font-size:11px}.activity-grid .activity b{font-size:21px}.activity-grid .activity small{font-size:9px}.calorie-overview{width:200px;height:200px}}
.tracking-open{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}
.tracking-unit{margin-left:2px}

/* Budget additions stay muted; tracking controls retain their own colors. */
.budget-legend .steps:before{background:#b5a3a6}.budget-legend .activities:before{background:#afa597}
.dialog.tracking-sheet{padding:0 24px max(24px,env(safe-area-inset-bottom))}
.dialog.tracking-sheet h2{font-size:23px;line-height:1.25;text-align:left;margin:4px 0 18px;letter-spacing:-.04em}
.dialog.tracking-sheet>form>p:not(.hint){font-size:13px;line-height:1.5;margin:0 0 18px;color:#777771}
.dialog.tracking-sheet label{font-size:13px;font-weight:600;margin:16px 0 7px}
.dialog.tracking-sheet input:not([type="checkbox"]),.dialog.tracking-sheet select,.dialog.tracking-sheet textarea{border:1px solid #deded9;background:#f7f7f5;border-radius:12px;padding:12px;min-height:46px;font-size:16px}
.dialog.tracking-sheet .quick-values{margin:0 0 20px;gap:8px}
.dialog.tracking-sheet .quick-values button{padding:13px 4px;border-radius:12px;min-height:46px;font-size:14px}
.dialog.tracking-sheet .quantity-entry label{font-size:11px;font-weight:500;margin:0}
.dialog.tracking-sheet .actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;margin-top:20px}
.dialog.tracking-sheet .actions button{min-height:46px;font-size:14px;padding:12px;border-radius:12px}
.dialog.tracking-sheet .toggle-row{padding-top:14px;border-top:1px solid var(--line);font-weight:500}

/* Remaining bonus budget: grey like the base, with a colored perimeter. */
.budget-legend .steps:before{background:#e4e4de;box-shadow:inset 0 0 0 1.5px var(--pink)}
.budget-legend .activities:before{background:#e4e4de;box-shadow:inset 0 0 0 1.5px #d58b42}
.quantity-composer{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,1fr);gap:10px;align-items:stretch}
.quantity-composer>.primary{min-height:46px;padding:10px 12px;border-radius:12px;font-size:14px;font-weight:600}
.dialog .quantity-entry.quantity-record{align-items:center}
.dialog.confirmation-sheet{padding:0 24px max(24px,env(safe-area-inset-bottom))}
.confirmation-sheet #confirmMessage{margin:6px 0 24px;color:var(--ink);font-size:19px;font-weight:650;line-height:1.35}
.confirmation-sheet .actions{display:grid;grid-template-columns:1fr 1fr;margin-top:0}
.confirmation-sheet .actions button{min-height:46px}
.confirmation-sheet .confirm-danger{background:#c8423b;color:#fff}
.dialog .quantity-record .quantity-description{display:block;margin:0;color:var(--ink)}
.quantity-record b{display:block;font-size:16px;font-weight:650;line-height:1.4}
.quantity-record small{display:block;margin-top:3px;font-size:12px;color:var(--muted)}
.quantity-entry.quantity-record>span{padding:0;font-weight:600;color:var(--ink);font-size:14px}
#burnDialog .activity-record button,.quantity-entry>button{background:none;color:#777771;width:44px;height:44px;display:grid;place-items:center}
#burnDialog .burn-composer strong{display:flex;align-items:center;font-size:28px;line-height:1.2;font-weight:650;min-height:46px}
#burnDialog .burn-total-label{font-size:13px;font-weight:600;margin:16px 0 7px}
#burnDialog .burn-breakdown:empty{display:none}

/* Native swipe gallery with compact, explicit photo navigation. */
.meal-photo-gallery{display:flex;width:100%;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.meal-photo-gallery::-webkit-scrollbar{display:none}
.photo-stage .meal-photo-gallery img{flex:0 0 100%;min-width:0;width:100%;height:100%;object-fit:cover}
.meal-photo-navigation{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;align-items:center;border-radius:24px;background:#ffffffed;color:var(--ink)}
.meal-photo-navigation[hidden]{display:none}
.meal-photo-navigation button{width:44px;height:40px;background:transparent;color:inherit;font-size:25px;border:0}
.meal-photo-navigation button:disabled{opacity:.25}
.meal-photo-navigation span{min-width:38px;text-align:center;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}

.meal-photo-slide{flex:0 0 100%;width:100%;height:100%;min-width:0;padding:0;border:0;border-radius:0;background:none;scroll-snap-align:start;scroll-snap-stop:always;cursor:zoom-in}
.photo-actions{display:flex;justify-content:flex-end}
.photo-actions button{padding:0;flex:0 0 44px}
:is(#favoriteMeal,[data-detail-id="favoriteMeal"]) svg{width:22px;height:22px;display:block;flex:none}
:is(#favoriteMeal,[data-detail-id="favoriteMeal"])[aria-pressed="true"] svg{fill:currentColor}
.meal-detail-time{display:block;color:var(--muted);font-size:13px;font-weight:500;margin-bottom:5px}
.dialog.photo-viewer{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;border:0;border-radius:0;background:#111;overflow:hidden}
.dialog.photo-viewer .dialog-handle{background:transparent;margin:0;height:44px}
.photo-viewer img{display:block;width:100%;height:calc(100% - 44px);object-fit:contain}

.full-meal-photo-gallery{display:flex;width:100%;height:calc(100% - 44px);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.full-meal-photo-gallery::-webkit-scrollbar{display:none}
.photo-viewer .full-meal-photo-gallery img{flex:0 0 100%;min-width:0;width:100%;height:100%;object-fit:contain;scroll-snap-align:start;scroll-snap-stop:always}
.photo-viewer .meal-photo-navigation{bottom:max(16px,env(safe-area-inset-bottom));background:#333e;color:#fff}
#mealDetailDialog .detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
#mealDetailDialog .detail-grid>.stat-label,#mealDetailDialog .detail-grid>:is(#mealCalories,[data-detail-id="mealCalories"]),#mealDetailDialog .detail-grid>.ingredient-stat{text-align:center}
#mealDetailDialog .detail-grid>.portion{grid-template-columns:minmax(24px,1fr) auto minmax(24px,1fr);min-width:0;padding:0}
#mealDetailDialog .portion button{width:100%;min-width:0;padding:0}
#mealDetailDialog .portion output{font-size:14px;min-width:0}

#mealDetailDialog .photo-actions{top:4px;right:8px;left:8px}
#mealDetailDialog .photo-actions button{background:rgb(255 255 255 / 55%)}
#mealDetailDialog .detail-grid>.stat-label,#mealDetailDialog .detail-grid>:is(#mealCalories,[data-detail-id="mealCalories"]),#mealDetailDialog .detail-grid>.ingredient-stat{text-align:left}
.calendar-navigation{display:flex;align-items:center;justify-content:space-between;margin:6px 0 0;height:36px}
.calendar-navigation>button{width:40px;height:36px;padding:0;background:none;font-size:25px;color:var(--muted)}
.calendar-navigation>button:disabled{opacity:.25;cursor:default}
.calendar-jump{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;margin:0;font-size:12px;font-weight:600;color:#686862;height:36px}
.calendar-jump input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.calendar-jump:focus-within{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}
.week{margin:4px 0 20px;touch-action:pan-y}
.day[data-status="empty"] b{color:#8b8b86;background:#e9e9e5}
.day[data-status="within"] b{color:#287440;background:#dcefe1}
.day[data-status="over"] b{color:#b63e38;background:#f8dfdc}
.day.active b{outline:2px solid currentColor;outline-offset:3px}
.day:disabled{opacity:.4;cursor:default}

/* Freely scrolling days; new dates are added outside the visible range. */
.week{display:flex;gap:0;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:auto;scroll-snap-type:none;overflow-anchor:none;padding:8px 0 10px}
.week::-webkit-scrollbar{display:none}
html{overscroll-behavior-x:none}
.week .day{flex:0 0 calc(100% / 7);min-width:0;user-select:none}
#mealDetailDialog{position:fixed}
#mealDetailDialog>.dialog-handle{position:absolute;top:0;left:0;width:100%;height:28px;min-height:28px;margin:0;background:transparent;pointer-events:none}
#mealDetailDialog>.dialog-handle>span{pointer-events:auto;box-sizing:content-box;border:12px solid transparent;background-clip:padding-box;height:4px;width:36px;background-color:#ffffffc9;filter:drop-shadow(0 1px 2px #0005)}
#mealDetailDialog .detail-grid{grid-template-columns:minmax(0,30fr) minmax(0,30fr) minmax(0,40fr)}
#mealDetailDialog .photo-stage{height:calc(clamp(180px,28dvh,260px) + 36px)}
#mealDetailDialog .photo-actions{top:4px}
#remaining.over-budget{color:#c8423b}

.app{padding-top:calc(6px + env(safe-area-inset-top,0px))}
/* Android already applies camera/status-bar insets around the WebView. */
.native-app .app{padding-top:0}
.topbar #profileButton{display:grid;place-items:center;padding:0}
.calorie-overview{width:205px;height:205px}
#mealDetailDialog:focus{outline:none}
#mealDetailDialog>.dialog-handle:focus-visible{outline:none}
#mealDetailDialog>.dialog-handle:focus-visible>span{outline:2px solid #3968b6;outline-offset:-2px}

#mealDetailDialog.no-photo>.dialog-handle>span{background-color:#c5c5be;filter:none}
.meal-photo-slide:disabled{cursor:default;opacity:1}
.photo-stage .meal-photo-gallery img.meal-placeholder{object-fit:contain;background:#eeeee8}

/* Photo affordance and saved meal selection. */
.scan-add-photo{position:relative;display:grid;place-items:center;background:#f7f7f5;color:#888883;transition:border-color .16s ease,background .16s ease,color .16s ease}
.scan-add-photo:hover{border-color:#989893;background:#f2f2ef;color:#6d6d68}.scan-add-photo:active{background:#ecece8}
.scan-add-photo:focus-visible{outline:2px solid #242423;outline-offset:3px}
.scan-camera-mark{position:relative;display:block;width:36px;height:36px}
.scan-camera{display:block;width:32px;height:32px}
.scan-camera-badge{position:absolute;right:0;bottom:0;width:18px;height:18px;overflow:visible}
.scan-camera-badge circle{fill:#fff;stroke:#aaa9a3;stroke-width:1.5}
.scan-camera-badge path{fill:none;stroke:#62625e;stroke-width:1.6;stroke-linecap:round}
.favorite-picker-button{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;margin:0 0 18px;padding:8px 0;background:none;text-align:left;font-size:15px;color:#595955}
.favorite-picker-button .favorite-heart{display:block;flex:none;width:22px;height:22px}.favorite-picker-button span:last-child{margin-left:auto;font-size:24px}
#onboardingDialog{width:min(480px,100%);max-width:100%;height:100dvh;max-height:100dvh;margin:0 auto;padding:0 20px;background:var(--paper);border-radius:0;overflow:hidden;letter-spacing:-.025em}
#onboardingDialog[open]{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}
#onboardingDialog:focus,#onboardingTitle:focus{outline:none}
#onboardingDialog .ob-top{padding-top:env(safe-area-inset-top,0px)}
.native-app #onboardingDialog .ob-top{padding-top:0}
#onboardingDialog .dialog-handle{height:26px;min-height:26px;margin:0 auto;padding:0;background:none;width:100%;display:grid;place-items:center}
#onboardingDialog .dialog-handle span{height:4px;width:36px;border-radius:3px;background:#c9c9c3}
#onboardingDialog .ob-navigation{display:grid;grid-template-columns:60px 1fr 60px;align-items:center;min-height:44px;font-size:13px;color:#666660;text-align:center}
#onboardingBack{grid-column:1;font-size:30px;text-align:left}
#onboardingChapter{grid-column:2;grid-row:1}
#onboardingLater{grid-column:3;grid-row:1;text-align:right;font-size:13px}
#onboardingDialog .ob-navigation button{height:44px;background:none;padding:0;color:#595954}
#onboardingProgress{display:block;appearance:none;border:0;height:3px;width:100%;margin:6px 0 0;border-radius:3px;overflow:hidden;background:#e1e1dc;color:#171716}
#onboardingProgress::-webkit-progress-bar{background:#e1e1dc}
#onboardingProgress::-webkit-progress-value{background:#171716;border-radius:3px}
#onboardingProgress::-moz-progress-bar{background:#171716}
#onboardingDialog #onboardingTitle{font-size:28px;line-height:1.15;letter-spacing:-.055em;margin:24px 0 0;font-weight:750;text-align:left}
#onboardingDialog .ob-content{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 0 12px;scrollbar-width:thin}
#onboardingDialog .ob-intro{font-size:14px;line-height:1.5;color:#65655f;margin:12px 0 20px}
#onboardingDialog .ob-options{border:0;margin:0;padding:0;min-width:0;display:grid;gap:8px}
#onboardingDialog .ob-option{position:relative;display:flex;align-items:center;gap:12px;min-height:66px;margin:0;padding:13px 12px;border:1px solid #deded8;border-radius:12px;background:#fff;font-weight:400;cursor:pointer}
#onboardingDialog .ob-option>span{min-width:0;flex:1}
#onboardingDialog .ob-option strong{display:block;font-size:15px;font-weight:650;color:var(--ink)}
#onboardingDialog .ob-option small{display:block;font-size:12px;line-height:1.4;color:#62625c;margin-top:4px;font-weight:400}
#onboardingDialog .ob-option input{position:absolute;opacity:0;width:1px;height:1px;padding:0;margin:0;left:16px}
#onboardingDialog .ob-option i{width:18px;height:18px;flex:none;border:1px solid #aaa9a2;border-radius:50%;background:#fff}
#onboardingDialog .ob-option:has(input:checked){border-color:#171716;background:#eeeee9}
#onboardingDialog .ob-option:has(input:checked) i{background:#171716;box-shadow:inset 0 0 0 4px #eeeee9;border-color:#171716}
#onboardingDialog .ob-option:has(input:focus-visible){outline:2px solid #3968b6;outline-offset:2px}
#onboardingDialog .ob-segmented{grid-template-columns:1fr 1fr 1.15fr;gap:6px}
#onboardingDialog .ob-segmented .ob-option{min-height:48px;padding:10px 4px;text-align:center;justify-content:center}
#onboardingDialog .ob-segmented strong{font-size:12px}
#onboardingDialog .ob-segmented i{display:none}
#onboardingDialog .ob-field{display:block;margin:20px 0 0;font-size:14px;font-weight:600}
#onboardingDialog .ob-field:first-child{margin-top:0}
#onboardingDialog .ob-field>small{font-weight:400;color:#65655f}
#onboardingDialog .ob-field input,#onboardingDialog .ob-field select{margin-top:8px;min-height:50px;max-width:100%;min-width:0;border:1px solid #d6d6cf;border-radius:11px;padding:12px;background:#fff;font-size:16px;color:var(--ink);letter-spacing:0}
#onboardingDialog .ob-field input:focus,#onboardingDialog .ob-field select:focus{border-color:#171716;outline:none}
#onboardingDialog .ob-field input[aria-invalid="true"]{border-color:#b43832}
#onboardingDialog .ob-number{display:flex;align-items:center;position:relative;margin-top:8px}
#onboardingDialog .ob-number input{margin:0;width:100%;font-size:28px;font-weight:650;padding:16px 68px 16px 14px;appearance:textfield}
#onboardingDialog .ob-number input::-webkit-inner-spin-button{appearance:none}
#onboardingDialog .ob-number>span{position:absolute;right:16px;font-size:15px;font-weight:400;color:#676761;pointer-events:none}
#onboardingDialog .ob-label{font-size:14px;font-weight:600;color:var(--ink);margin:22px 0 10px}
#onboardingDialog .ob-small{font-size:12px;line-height:1.5;color:#676761;margin:10px 0 16px}
#onboardingDialog .ob-help{margin:14px 0;font-size:12px;line-height:1.5;color:#5e5e58}
#onboardingDialog .ob-help summary{cursor:pointer;min-height:36px;padding:8px 0}
#onboardingDialog .ob-help p{margin:8px 0;color:#5e5e58}
#onboardingDialog .ob-text-button{background:none;text-decoration:underline;text-underline-offset:3px;padding:12px 0;font-size:13px}
#onboardingDialog .ob-footer{padding:12px 0 max(20px,env(safe-area-inset-bottom,0px));border-top:1px solid #deded8;background:var(--paper)}
#onboardingNext{width:100%;min-height:52px;border-radius:12px;font-size:15px;font-weight:650;padding:14px 10px}
#onboardingError{font-size:13px;line-height:1.4;color:#a9312b!important;margin:0 0 12px!important}
#onboardingDialog .ob-calories{display:flex;align-items:baseline;justify-content:center;gap:10px;margin:24px 0 32px}
#onboardingDialog .ob-calories strong{font-size:48px;line-height:1;font-weight:750;letter-spacing:-.07em}
#onboardingDialog .ob-calories>span{font-size:14px;color:#5f5f59}
#onboardingDialog .ob-macros{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:24px}
#onboardingDialog .ob-macros>div{border-top:4px solid var(--macro-color);padding-top:10px;min-width:0}
#onboardingDialog .ob-macros span{font-size:11px;display:block;overflow-wrap:anywhere}
#onboardingDialog .ob-macros strong{display:block;font-size:22px;margin-top:7px;font-weight:650}
#onboardingDialog .ob-macros small{font-size:12px;font-weight:400;color:#676761}
#onboardingDialog .ob-timeline{font-size:15px;font-weight:600;color:var(--ink);margin:18px 0}
#onboardingDialog .ob-timeline small{display:block;font-weight:400;font-size:12px;line-height:1.5;color:#65655f;margin-top:7px}
#onboardingDialog .ob-notice{padding:12px;border-left:3px solid #9b7725;background:#f1edde;color:#66501c;font-size:13px;line-height:1.5;border-radius:0 8px 8px 0}
#onboardingDialog .ob-budget-note{font-size:12px;line-height:1.5;color:#65655f;margin:20px 0}
#onboardingDialog .ob-review-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-top:1px solid var(--line);font-size:13px}
#onboardingDialog .ob-review-row small{display:block;margin-top:4px;color:#65655f;font-size:12px}
#onboardingDialog .ob-review-row button{flex:none;background:none;font-size:12px;min-height:44px;text-decoration:underline;text-underline-offset:3px}
#onboardingDialog button:focus-visible{outline:2px solid #3968b6;outline-offset:2px}
.ob-sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.profile-onboarding .row-button{margin:0;background:none;border-bottom:1px solid var(--line);border-radius:0;padding:12px 0}
.profile-onboarding .helper{font-size:12px;margin:8px 0 0}
.profile-onboarding [hidden]{display:none}
#onboardingDialog .ob-option:has(input[type="checkbox"]) i{border-radius:4px}
#onboardingDialog .ob-plan-summary{font-size:14px;line-height:1.5;margin:8px 0 16px;color:var(--ink)}
#onboardingDialog .ob-movement-result{display:grid;grid-template-columns:1fr 1fr;gap:18px;border-top:1px solid var(--line);padding-top:18px;margin-top:22px}
#onboardingDialog .ob-movement-result strong{display:block;font-size:26px;letter-spacing:-.05em}
#onboardingDialog .ob-movement-result small{font-size:13px;font-weight:400}
#onboardingDialog .ob-movement-result span{display:block;font-size:12px;color:#65655f;margin-top:5px}
#onboardingDialog .ob-adjust-fields{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}
#onboardingDialog .ob-adjust-fields .ob-field:first-child{grid-column:1/-1}
#onboardingDialog #onboardingReasons p{margin:16px 0;line-height:1.55}
#onboardingDialog a{color:inherit;text-underline-offset:3px}
@media(min-width:600px){#onboardingDialog{height:min(900px,94dvh);max-height:94dvh;margin:auto;border-radius:22px}}
@media(max-height:650px){#onboardingDialog #onboardingTitle{font-size:24px;margin-top:12px}#onboardingDialog .ob-intro{margin:8px 0 14px}#onboardingDialog .ob-footer{padding-bottom:12px}}
#favoritesDialog{padding:0 20px 24px;overflow:auto;max-height:90dvh}#favoritesDialog h2{margin:4px 0 8px}
#favoriteList{display:grid;gap:0;margin-top:16px}.favorite-choice{width:100%}.favorite-choice .meal-name{white-space:normal;overflow-wrap:anywhere}.favorite-choice .meal-side{align-self:end;padding-bottom:3px}.favorite-choice .meal-calories{margin-top:0}.favorite-choice:disabled{opacity:.5}


/* Absolute grams remain legible even when a macro has almost no fill. */
.meal-macro-chart{width:max-content;max-width:100%;height:auto;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.macro-metric{display:inline-flex;align-items:center;gap:4px;height:21px;flex:none}
.macro-metric .macro-bar{width:7px;flex:none}
.macro-grams{font-size:10px;font-weight:500;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums;color:#65655f}
@media(max-width:380px){.meal-macro-chart{display:grid;grid-template-columns:repeat(2,max-content);column-gap:10px}}
.native-app.photo-edge #mealDetailDialog>.dialog-handle{top:var(--native-safe-top,0px)}
.native-app.photo-edge #mealDetailDialog .photo-actions{top:calc(var(--native-safe-top,0px) + 4px)}
.native-app.photo-edge #mealDetailDialog .photo-stage::after{content:'';position:absolute;inset:0 0 auto;height:calc(var(--native-safe-top,0px) + 28px);background:linear-gradient(#0007,transparent);pointer-events:none}
.native-app.photo-edge #mealDetailDialog>.dialog-handle,.native-app.photo-edge #mealDetailDialog .photo-actions{z-index:4}
.native-app.photo-edge #photoViewer{padding-top:var(--native-safe-top,0px)}

.app-brand{display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
.app-brand img{display:block;flex:none;width:32px;height:32px;object-fit:contain;border-radius:5px}

/* Personal assistant: the existing open, compact visual language. */
.coach-entry{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:16px 2px;background:none;text-align:left;border-bottom:1px solid var(--line)}.coach-entry strong,.coach-entry small{display:block}.coach-entry strong{font-size:17px}.coach-entry small{margin-top:4px;font-size:12px;line-height:1.4;color:#666660}.coach-entry svg{flex-shrink:0}.nutrition-complete{display:flex;align-items:center;gap:8px;font-size:12px;color:#666660;padding:12px 0}.nutrition-complete input{width:18px;height:18px;accent-color:var(--ink)}
:is(#coachDialog,[data-coach-id="coachDialog"]){padding:0 18px;display:none;height:100dvh;max-height:100dvh;overflow:hidden;background:var(--paper)}:is(#coachDialog,[data-coach-id="coachDialog"])[open]{display:flex;flex-direction:column}:is(#coachDialog,[data-coach-id="coachDialog"])>.dialog-handle{flex:none}.coach-small{background:none;padding:9px 11px;border:1px solid var(--line);border-radius:12px;font-size:12px;min-height:38px}.coach-small:hover{background:#e9e9e6}.coach-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding-bottom:12px}.coach-disclosure{font-size:11px;color:#73736d;line-height:1.5;margin:2px 0 16px}.coach-feedback{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.coach-feedback button[aria-pressed=true]{border-color:var(--ink);background:#e2e2dd}.coach-starters{margin:0 0 8px}.coach-hint,.coach-plan{padding:14px 0;border-bottom:1px solid var(--line)}.coach-hint strong,.coach-plan strong{font-size:14px}.coach-hint p,.coach-plan p{font-size:13px;line-height:1.5;margin:5px 0;color:#666660}.coach-plan small{display:block;color:#666660;font-size:11px}.coach-error{font-size:13px;line-height:1.4;color:#a03535;margin:8px 0}.coach-week-progress{display:flex;gap:5px;margin:10px 0}.coach-week-progress span{height:5px;flex:1;background:#e1e1dc;border-radius:4px}.coach-week-progress span.recorded{background:#6c9a75}:is(#coachProgress,[data-coach-id="coachProgress"])>strong{font-size:14px}:is(#coachProgress,[data-coach-id="coachProgress"]) .helper{font-size:12px;margin:5px 0}.coach-achievement{font-size:12px;color:#3d6845}.coach-settings{background:var(--paper)}.coach-settings h2{font-size:23px}.coach-settings form>label,.coach-settings fieldset>label{display:flex;flex-direction:column;gap:7px;margin:16px 0;font-size:14px}.coach-settings select,.coach-settings input[type=time]{width:100%;border:1px solid #d8d8d2;border-radius:10px;padding:10px;background:white;font-size:14px}.coach-settings .toggle-row{flex-direction:row;justify-content:space-between;align-items:center}.coach-settings input[type=checkbox]{width:20px;height:20px;accent-color:var(--ink)}.coach-settings fieldset{border:1px solid var(--line);border-radius:14px;margin:20px 0;padding:12px}.coach-settings legend{font-size:15px;font-weight:650}.coach-days{display:flex;gap:5px;justify-content:space-between}.coach-days label{display:grid;gap:8px;justify-items:center;font-size:12px}.coach-setting-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}.coach-setting-columns label{font-size:13px}.coach-setting-columns select{margin-top:7px}.coach-memory-section{margin-top:28px}.coach-memory{padding:14px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.coach-memory strong{display:block;font-size:14px}.coach-memory small{display:block;font-size:11px;color:#666660;margin-top:5px}.coach-source{font-size:12px;color:#666660;line-height:1.5}.coach-memory textarea{width:100%;min-height:70px;border:1px solid var(--line);border-radius:10px;padding:10px}:is(#coachForgetAll,[data-coach-id="coachForgetAll"]){margin:18px 0}.coach-settings .helper{line-height:1.5;color:#666660}.coach-small:focus-visible,.coach-entry:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:350px){:is(#coachDialog,[data-coach-id="coachDialog"]){padding:0 12px}.coach-settings{padding-left:14px;padding-right:14px}}
.coach-dialog [hidden],.coach-settings [hidden]{display:none!important}.coach-settings h2{text-align:left}.coach-small{min-height:44px}
.overview-row{width:100%;display:grid;grid-template-columns:64px minmax(0,1fr) 64px;gap:4px;align-items:center}.overview-row .calorie-overview{width:min(100%,200px);height:auto;aspect-ratio:1;margin:auto}.overview-row #calorieRing{width:100%;height:100%}.overview-action{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;background:none;color:var(--ink);font-size:11px;line-height:1.3;min-height:76px;padding:6px 0;border-radius:14px}.overview-action:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.overview-icon{position:relative;display:block;height:25px}:is(#coachUnread,[data-coach-id="coachUnread"]){position:absolute;right:-5px;top:-4px;width:9px;height:9px;background:#d9343c;border:2px solid var(--paper);border-radius:50%}:is(#coachUnread,[data-coach-id="coachUnread"])[hidden]{display:none}.overview-row .calories b{font-size:36px}.overview-row .calories span{font-size:11px}.progress-period{display:flex;gap:8px}.progress-period button{min-height:44px;padding:10px 20px;border-radius:22px;background:#eaeae6}.progress-period button[aria-pressed=true]{background:var(--ink);color:#fff}.progress-intro h3{font-size:25px;line-height:1.2;margin:8px 0 12px}.progress-intro p,.progress-section p{line-height:1.5}.progress-goal{color:var(--muted);font-size:13px}.progress-section{padding:22px 0;border-top:1px solid var(--line)}.progress-section h3{font-size:20px;margin:0 0 12px}.progress-section small{color:var(--muted);font-size:12px;line-height:1.5}.progress-section progress{width:100%;height:12px;accent-color:#548561}.progress-badges{display:flex;gap:6px;flex-wrap:wrap}.progress-badges span{font-size:12px;background:#e8eee7;color:#365b3d;padding:7px 10px;border-radius:14px}.progress-metric{display:grid;grid-template-columns:1fr auto;gap:4px;padding:10px 0}.progress-metric small{grid-column:1/-1}.progress-chart{display:flex;align-items:stretch;height:100px;gap:3px;margin:20px 0 8px}.progress-chart>div{flex:1;min-width:0;display:flex;align-items:end;background:#e9e9e3;border-radius:4px}.progress-chart i{height:var(--bar);width:100%;background:var(--protein);border-radius:4px}.progress-chart .missing{background:repeating-linear-gradient(135deg,transparent 0 4px,#deded8 4px 5px)}.progress-weight-form{display:grid;grid-template-columns:minmax(70px,1fr) auto;gap:10px;align-items:center}.progress-weight-form input{min-width:0}.progress-weight-form button{padding:14px}.progress-section details{margin:18px 0}.progress-section summary{cursor:pointer;min-height:44px}.progress-weight-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}.progress-weight-row button{padding:12px;background:none;text-decoration:underline;min-height:44px}@media(max-width:360px){.overview-row{grid-template-columns:51px minmax(0,1fr) 51px}.overview-row .calories b{font-size:30px}.overview-row .calories span{font-size:10px}.overview-action{font-size:10px}}

/* Compact circular navigation alongside the upper half of the calorie ring. */
.overview-row .overview-action{width:48px;height:48px;min-height:48px;padding:0;gap:0;border-radius:50%;background:#e9e9e4;justify-self:center;transform:translateY(0)}.overview-row .overview-action:hover{background:#dfdfd9}.overview-row .overview-action:active{background:#d4d4ce}

.meal-nutrients{margin:20px 0}.meal-nutrients>summary{font-weight:700;padding:14px 0;cursor:pointer;min-height:44px}.nutrient-detail{display:grid;grid-template-columns:1fr auto;gap:6px;border-top:1px solid var(--line);padding:12px 0;font-size:13px}.nutrient-detail small,.nutrient-detail details{grid-column:1/-1;color:#65655f;font-size:12px}.nutrient-detail summary{min-height:30px;cursor:pointer}.nutrient-detail p{overflow-wrap:anywhere}

/* Shared goal overview: the same quiet rows and macro palette as the profile. */
.goals-dialog{background:var(--paper)}.goals-dialog h2{text-align:left}.goals-date{font-size:12px;color:#65655f}.goals-section{padding:20px 0;border-bottom:1px solid var(--line)}.goals-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.goals-section h3{font-size:19px;margin:0}.goals-section p{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.goals-section .helper{font-size:12px;color:#65655f}.goals-section>button{margin:6px 8px 0 0}.goals-value{border-top:1px solid var(--line)}.goals-value>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:48px;font-size:13px;cursor:pointer}.goals-value strong{text-align:right;font-weight:600}.goals-value>summary::after{content:'⌄';font-size:15px}.goals-value>summary span{flex:1}.goals-value p{color:#65655f;font-size:12px}.goals-applied{padding:18px 0;border-bottom:1px solid var(--line);margin:12px 0}.goals-applied p{font-size:13px;line-height:1.5}.goals-applied button{margin:4px 8px 0 0}.profile-onboarding details>summary{font-size:13px;min-height:44px;padding:14px 0;cursor:pointer}.ob-changes{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px}.ob-changes h3{font-size:19px}.ob-changes p{font-size:13px;line-height:1.5}.ob-changes dl>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;font-size:13px}.ob-changes dd{margin:0;text-align:right}.goals-dialog button:focus-visible,.goals-dialog summary:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
/* Settings use the existing type and surfaces, with clear destinations and readable labels. */
.settings-page {line-height:1.5;letter-spacing:-.015em}
.settings-page h2 {margin:8px 0 24px;font-size:28px;line-height:1.15}
.settings-list {display:grid;gap:0}
.settings-row {display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:80px;width:100%;padding:18px 0;text-align:left;background:transparent;border-bottom:1px solid var(--line)}
.settings-row strong,.settings-row small {display:block}
.settings-row strong {font-size:17px;font-weight:650}
.settings-row small {font-size:14px;font-weight:400;color:#65655f;line-height:1.4;margin-top:3px}
.settings-row>span:last-child {font-size:26px;color:#65655f}
.settings-version {font-size:13px;color:#65655f;margin-top:28px}
.settings-section {padding:20px 0;border-bottom:1px solid var(--line)}
.settings-section h3 {margin:0 0 10px;font-size:19px}
.settings-section p,.settings-page>p {font-size:15px;line-height:1.55}
.settings-page .helper {color:#65655f;font-size:14px;line-height:1.5}
.settings-page button,.settings-page summary,.settings-link {min-height:48px}
.settings-page .secondary {padding:12px 16px;border-radius:14px}
.settings-page label {display:grid;gap:7px;font-size:15px}
.settings-page input:not([type=checkbox]),.settings-page select,.settings-page textarea {width:100%;min-width:0;min-height:48px;font:inherit;color:var(--ink);padding:12px;border:1px solid #c9c9c3;border-radius:12px;background:#fff}
.settings-page .toggle-row {display:flex}
.settings-page .toggle-row input {width:24px;height:24px}
.settings-link {display:block;padding:14px 0;color:#305a99}
.help-topics details {padding:8px 0;border-bottom:1px solid var(--line)}
.help-topics summary {padding:12px 0;cursor:pointer;font-weight:600;font-size:16px}
.help-topics p {margin:4px 0 14px;font-size:15px}
.feedback-preview {font:inherit;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;background:#f0f0ed;border-radius:14px;padding:16px;user-select:text}
.danger-button {background:#fff0ef;color:#a02c28;border-radius:14px;padding:14px 16px;font-weight:600}
.settings-page .full-width+.full-width {margin-top:12px}
.settings-page .actions {display:flex;flex-wrap:wrap;gap:10px}
#aiConsentDialog {max-height:90dvh;overflow:auto;padding:24px}
#aiConsentDialog .actions button {flex:1 1 120px}
#profileDialog .profile-card {background:transparent;border:0;border-radius:0;padding:18px 0;border-bottom:1px solid var(--line)}
#profileDialog .profile-card h3 {margin-top:0;font-size:20px}
#profileButton {min-width:48px;min-height:48px;display:grid;place-items:center}
[hidden] {display:none!important}
button:focus-visible,summary:focus-visible,a:focus-visible {outline:3px solid #305a99;outline-offset:3px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
.report-response {display:block;min-height:44px;margin-top:8px;padding:8px 0;background:transparent;color:#65655f;text-decoration:underline;text-underline-offset:3px;font-size:12px}
.settings-page .settings-section p,.settings-page .help-topics p {color:#51514d}
.settings-page .settings-version {color:#65655f}
:root {--muted:#65655f}
#mealDetailDialog .macro-input.protein input {color:#b7443e}
#mealDetailDialog .macro-input.fat input {color:#936200}
#mealDetailDialog .macro-input.carbs input {color:#2f63ae}
#mealDetailDialog .macro-input.fiber input {color:#258047}
.tracking-open .activity-title.pink,.activity-grid .add.pink {color:#a63b61}
.tracking-open .activity-title.blue,.activity-grid .add.blue {color:#2f63ae}
.tracking-open .activity-title.activity-orange,.activity-grid .add.activity-orange {color:#89531e}

/* Direct camera entry shares the compact floating action row. */
.meal-actions{position:fixed;z-index:4;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px}
.meal-actions .fab{position:static;transform:none;display:grid;place-items:center;flex-shrink:0;width:48px;height:48px;background:rgba(0,0,0,.5);box-shadow:0 4px 12px #00000014}
.meal-actions #addButton{width:68px;height:68px;font-size:46px}
.meal-actions .fab{padding:0}
.meal-actions svg{display:block;width:24px;height:24px}
.meal-actions .fab:disabled{opacity:.6;cursor:wait}
.camera-fab svg{width:28px;height:28px}
.meal-analysis-status{display:flex;align-items:center;gap:6px;line-height:1.4;white-space:normal}
.meal[data-analysis-status]{cursor:default}
.meal[data-analysis-status="pending"] .meal-analysis-status:before{content:'';width:11px;height:11px;flex-shrink:0;border:1.5px solid var(--line);border-top-color:var(--muted);border-radius:50%;animation:meal-analysis-spin 1s linear infinite}
.meal-retry{display:block;min-height:32px;margin-top:3px;padding:4px 0;background:none;font-size:11px;text-decoration:underline;text-underline-offset:3px}
.meal-analysis-error{margin:5px 0 0;font-size:12px;line-height:1.45;color:var(--muted);white-space:normal;overflow-wrap:anywhere}
.meal-pending-delete{display:grid;place-items:center;min-width:32px;min-height:36px;margin-top:5px;margin-left:auto;padding:6px;background:none;color:var(--muted)}
.meal-pending-delete svg{width:17px;height:17px}
@keyframes meal-analysis-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.meal[data-analysis-status="pending"] .meal-analysis-status:before{animation:none}}
.home-viewport{position:relative;width:min(100%,480px);margin:auto;overflow-x:clip}
.home-day-preview{position:absolute;top:0;left:0;width:100%;pointer-events:none;background:var(--paper)}
.home-swiping>.home-day{will-change:transform;user-select:none}
.home-day-preview [data-home-id="calorieRing"]{display:block;width:100%;height:100%}
.home-day-preview [data-home-id="remaining"].over-budget{color:#c8423b}
.home-day-preview [data-home-id="coachUnread"]{position:absolute;right:-5px;top:-4px;width:9px;height:9px;background:#d9343c;border:2px solid var(--paper);border-radius:50%}

/* Kalomatik: coral marks actions, never nutrition categories or errors.
   Keep the open diary layout and translucent floating controls. */
:root{--brand:#ee6542;--brand-ink:#171716;--brand-soft:#fff0e9;--brand-strong:var(--brand)}
.primary{background:var(--brand);color:var(--brand-ink)}
.primary:not(:disabled):active{background:var(--brand)}


.meal-actions #quickCameraButton{background:rgba(245,245,243,.9);color:var(--brand);border:1px solid var(--brand)}
.meal-actions #quickCameraButton:active{background:rgb(235,235,233)}
.progress-period button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink)}
#onboardingDialog .ob-option:has(input:checked){border-color:var(--brand-strong);background:var(--brand-soft)}
#onboardingDialog .ob-option:has(input:checked) i{border-color:var(--brand-strong);background:var(--brand-strong)}
#onboardingProgress{accent-color:var(--brand-strong)}
#onboardingProgress::-webkit-progress-value{background:var(--brand-strong)}
#onboardingProgress::-moz-progress-bar{background:var(--brand-strong)}
.toggle-row input,.coach-settings input[type=checkbox],.nutrition-complete input{accent-color:var(--brand-strong)}
.settings-link{color:var(--brand-strong);text-underline-offset:4px}
:is(#favoriteMeal,[data-detail-id="favoriteMeal"])[aria-pressed=true]{color:var(--brand-strong)}
.dialog input:not([type=checkbox]):not([type=radio]):focus,.dialog textarea:focus,.dialog select:focus,
#onboardingDialog .ob-field input:focus,#onboardingDialog .ob-field select:focus{border-color:var(--brand-strong);outline:none}
button:focus-visible,summary:focus-visible,a:focus-visible,
#onboardingDialog button:focus-visible,.overview-action:focus-visible,
.coach-small:focus-visible,.coach-entry:focus-visible,
.goals-dialog button:focus-visible,.goals-dialog summary:focus-visible{outline:3px solid var(--brand-strong);outline-offset:3px}

/* Calm form surfaces: clear affordances without nested cards. */
.dialog.settings-page .dialog-handle,.dialog.coach-settings .dialog-handle,.dialog.goals-dialog .dialog-handle{background:var(--paper)}
.dialog:is(.settings-page,.coach-settings) :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),textarea,select),
#onboardingDialog .ob-field :is(input,select){box-sizing:border-box;width:100%;min-width:0;min-height:48px;margin-top:7px;padding:12px 14px;border:1px solid #cececa;border-radius:9px;background-color:#fafaf9;color:var(--ink);font-family:inherit;font-size:16px;font-weight:400;line-height:1.4;letter-spacing:normal;box-shadow:none}
.dialog:is(.settings-page,.coach-settings) textarea{resize:vertical;min-height:112px}
.dialog:is(.settings-page,.coach-settings) select,#onboardingDialog .ob-field select{appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2365655f' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.dialog:is(.settings-page,.coach-settings) :is(input:not([type=checkbox]):not([type=radio]),textarea,select):focus,#onboardingDialog .ob-field :is(input,select):focus{border-color:var(--brand-strong);outline:none;background-color:#fff}
.settings-page .profile-form{gap:22px}
.settings-page .profile-card{padding:0 0 24px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;gap:18px}
.settings-page .profile-card h3{font-size:18px;line-height:1.4;margin:0 0 2px}
.settings-page .profile-form label:not(.toggle-row){display:block;margin:0;font-size:13px;font-weight:500;line-height:1.4;color:#51514d}
.settings-page .profile-form .helper{margin:0;font-size:13px;line-height:1.5}
.settings-page .profile-form .primary{border-radius:10px;min-height:48px}
.coach-settings .coach-setting-columns{gap:12px}
.coach-settings .coach-setting-columns>*{min-width:0}

/* Ingredients are a reading list with one quantity control, not a nutrient form. */
#ingredientDialog .ingredient-intro{font-size:14px;line-height:1.5;color:var(--muted);margin:0 0 8px}
#ingredientDialog .ingredient-list{gap:0}
#ingredientDialog .ingredient-card{padding:18px 0;border-radius:0;background:none;border-bottom:1px solid var(--line);min-width:0}
#ingredientDialog .ingredient-heading-row{display:flex;align-items:flex-start;gap:8px}
#ingredientDialog .ingredient-name{flex:1;min-width:0;margin:0;font-size:16px;line-height:1.4;font-weight:650;overflow-wrap:anywhere}
#ingredientDialog .remove-ingredient{position:static;flex:0 0 44px;display:grid;place-items:center;width:44px;height:44px;margin:-10px -8px -4px 0;border-radius:9px;background:none;color:var(--muted)}
#ingredientDialog .remove-ingredient:active{background:#fbeceb;color:#a03535}
#ingredientDialog .ingredient-quantity-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:12px}
#ingredientDialog .ingredient-quantity-controls{display:flex;align-items:flex-end;gap:8px;flex:1 1 240px;max-width:280px;min-width:0}
#ingredientDialog .ingredient-quantity-label{flex:1;min-width:0;margin:0;font-size:12px;line-height:1.4;color:var(--muted)}
#ingredientDialog .ingredient-amount-control{display:flex;align-items:center;width:100%;margin-top:5px;border:1px solid #cececa;border-radius:9px;background:#fafaf9;overflow:hidden}
#ingredientDialog .ingredient-amount-control:focus-within{border-color:var(--brand-strong);outline:none;background:#fff}
#ingredientDialog .ingredient-grams{width:100%;min-width:0;min-height:46px;margin:0;padding:10px 12px;border:0;border-radius:0;background:none;font:inherit;font-size:16px;font-weight:500;color:var(--ink);appearance:textfield;outline:none}
#ingredientDialog .ingredient-grams::-webkit-inner-spin-button,#ingredientDialog .ingredient-grams::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
#ingredientDialog .ingredient-unit{padding-right:12px;font-size:13px;white-space:nowrap}
#ingredientDialog .ingredient-step{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;margin-bottom:2px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink)}
#ingredientDialog .ingredient-step:active{background:var(--paper)}
#ingredientDialog .ingredient-step:focus-visible{outline:2px solid var(--brand-strong);outline-offset:2px}
#ingredientDialog .ingredient-step:disabled{opacity:.35;cursor:default}
#ingredientDialog .ingredient-energy{margin:0 0 11px;white-space:nowrap;font-size:13px;color:var(--muted)}
#ingredientDialog .ingredient-energy strong{font-size:20px;color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
#ingredientDialog .ingredient-macros{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:13px;font-size:12px;line-height:1.5;color:var(--muted)}
#ingredientDialog .ingredient-macros>span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
#ingredientDialog .ingredient-macros b{font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
#ingredientDialog .ingredient-macros i{width:4px;height:12px;border-radius:3px;background:var(--protein);margin-right:1px}
#ingredientDialog .ingredient-macros>span:nth-child(2) i{background:var(--fat)}
#ingredientDialog .ingredient-macros>span:nth-child(3) i{background:var(--carbs)}
#ingredientDialog .ingredient-macros>span:nth-child(4) i{background:var(--fiber)}
#ingredientDialog .ingredient-error{margin:8px 0 0;font-size:12px;line-height:1.4;color:#a03535}
#ingredientDialog .ingredient-error:empty{display:none}
#ingredientDialog .ingredient-source-badge{position:static;margin-top:10px}
#ingredientDialog .actions{margin-top:10px;gap:10px}
#ingredientDialog .actions button{min-height:48px;border-radius:10px;font-size:15px}

/* Discoverable meal actions; horizontal gestures stay local to the meal. */
#activityDialog .quantity-composer{flex-wrap:wrap}#activityDuration{flex:1;min-width:65px}#activityDurationUnit{width:auto;max-width:115px}#estimateActivity{flex-basis:100%}
.meal-actions{pointer-events:none}.meal-actions button{pointer-events:auto}.toast{pointer-events:none}

/* Meal feedback: fixed composer with independently scrolling meal content. */
#mealDetailDialog[open]{display:flex;flex-direction:column;top:var(--meal-visible-top,0px);height:min(100dvh,var(--meal-visible-height,100dvh));min-height:0;max-height:100dvh;overflow:hidden;background:#fff;margin:0 auto;border-radius:0}
#mealDetailDialog .meal-detail-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;scroll-padding-block:32px 18px}
#mealDetailDialog .detail-sheet{min-height:0;padding:16px 20px 22px}
#mealDetailDialog .photo-stage{height:clamp(150px,25dvh,230px);min-height:0}
#mealDetailDialog .meal-detail-scroll[data-no-photo="true"] .photo-stage{display:block;height:calc(52px + var(--native-safe-top,0px));background:#fff}
#mealDetailDialog .meal-detail-scroll[data-no-photo="true"] .photo-stage .meal-photo-gallery{display:none}
#mealDetailDialog .meal-detail-scroll[data-no-photo="true"] .detail-sheet{margin-top:0;padding-top:4px}
#mealDetailDialog .detail-grid{grid-template-columns:30fr 30fr 40fr}
#mealDetailDialog .meal-weight{padding:0;background:none;text-align:left;font-size:24px;font-weight:650;line-height:44px;white-space:nowrap;color:var(--ink)}
#mealDetailDialog .meal-weight:disabled{color:var(--muted)}
#mealDetailDialog .detail-portion{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 0;font-size:13px;color:var(--muted)}
#mealDetailDialog .detail-portion .portion{width:148px;height:40px;border:1px solid var(--line);border-radius:20px;grid-template-columns:44px 1fr 44px}
#mealDetailDialog .detail-portion button{font-size:22px;min-height:40px}
#mealDetailDialog .weight-editor{padding:0 0 12px}
#mealDetailDialog .weight-editor>div{display:flex;gap:6px;flex-wrap:wrap}
#mealDetailDialog .weight-editor input{width:100px;flex:1}
#mealDetailDialog .weight-editor button{padding:10px;border-radius:12px;font-size:12px}
#mealDetailDialog :is(#mealMacros,[data-detail-id="mealMacros"]){display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
#mealDetailDialog .macro-input{border:0;border-radius:0;padding:0;min-width:0}
#mealDetailDialog .macro-input label{display:block;font-size:10px;margin:0;color:var(--muted);white-space:nowrap}
#mealDetailDialog .macro-input input{display:inline-block;width:calc(100% - 15px);min-width:0;padding:4px 0 0;border:0;border-radius:0;font-size:15px;line-height:22px;font-weight:600;background:transparent;pointer-events:none}
#mealDetailDialog .macro-unit{font-size:11px;color:var(--muted)}
.detail-macro-bar{display:block;width:100%;height:5px;margin:7px 0 2px;border-radius:4px;background:linear-gradient(to right,var(--macro-color) var(--macro-fill),#ededeb var(--macro-fill))}
.macro-input.protein{--macro-color:var(--protein)}.macro-input.fat{--macro-color:var(--fat)}.macro-input.carbs{--macro-color:var(--carbs)}.macro-input.fiber{--macro-color:var(--fiber)}
.meal-composer-dock{flex:none;padding:8px 12px max(12px,env(safe-area-inset-bottom,0px));border-top:1px solid #ecece7;background:#fff;z-index:5}
.composer-caption{display:block;font-size:11px;font-weight:600;color:var(--muted);padding:0 8px 6px}
#scanDialog #voicePreview:empty{display:none}
.meal-actions #addButton{width:48px;height:48px}
.meal-actions #quickCameraButton{width:68px;height:68px;background:var(--brand);color:white;border:0}
.meal-actions #quickCameraButton svg{width:30px;height:30px}
.meal-actions #quickCameraButton:active{background:var(--brand)}
.day b{position:relative;outline:none!important}
.day-calorie-ring{position:absolute;inset:-7px;width:48px;height:48px;pointer-events:none}
.calorie-overview.has-overflow .calories b{font-size:30px}
.calorie-overview.has-overflow .calories span{max-width:46%;font-size:10px;text-align:center;line-height:1.3}
.calorie-overview .calories[hidden]{display:none}
.calorie-surprise{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--paper);font-size:28px;line-height:1;pointer-events:none}
.macro-excess-hint{margin:6px 0 0;text-align:center;font-size:12px;line-height:1.4;color:#62625e;letter-spacing:0}
.macro-excess-hint[hidden]{display:none}
@media(max-width:360px){.calorie-overview.has-overflow .calories b{font-size:24px}.calorie-overview.has-overflow .calories span{font-size:9px}}
.day.active b{font-weight:850;box-shadow:none}
.is-analyzing .macro-bar-fill{transform-origin:bottom;animation:macro-analysis 1.6s ease-in-out infinite alternate}
.is-analyzing .macro-metric:nth-child(2) .macro-bar-fill{animation-delay:-.4s}.is-analyzing .macro-metric:nth-child(3) .macro-bar-fill{animation-delay:-.8s}.is-analyzing .macro-metric:nth-child(4) .macro-bar-fill{animation-delay:-1.2s}
@keyframes macro-analysis{from{transform:scaleY(.3)}to{transform:scaleY(1.7)}}
@media(max-width:360px){#mealDetailDialog .meal-weight{font-size:20px}#mealDetailDialog :is(#mealMacros,[data-detail-id="mealMacros"]){gap:6px}#mealDetailDialog .detail-sheet{padding-inline:16px}}
@media(prefers-reduced-motion:reduce){.is-analyzing .macro-bar-fill{animation:none}}
#mealDetailDialog .photo-actions{pointer-events:none}
#mealDetailDialog .photo-actions button{pointer-events:auto}
#mealDetailDialog>.dialog-handle{z-index:6}
#retryMealIllustration{font-size:12px;padding:10px 0}
.notification-notice{padding:14px 0;border-block:1px solid var(--line);font-size:13px;margin-top:20px}
.notification-notice p{margin:0 0 8px;color:var(--muted);line-height:1.4}
.notification-notice button{min-height:40px;background:transparent;color:var(--ink);padding:8px 12px;border:1px solid var(--line);border-radius:18px;margin-right:8px}

/* Shared composer: a floating input on home, the same input in meal details. */
#scanDialog{background:transparent;box-shadow:none;border:0;border-radius:0;padding:0 12px max(12px,env(safe-area-inset-bottom));max-height:var(--meal-visible-height,92dvh);bottom:max(0px,calc(100dvh - var(--meal-visible-height,100dvh) - var(--meal-visible-top,0px)))}
#scanDialog::backdrop{background:transparent;backdrop-filter:none}
#scanDialog form{padding:0}
#scanDialog .scan-handle{margin:0;height:28px;min-height:28px;background:transparent}
#scanDialog .scan-handle span{background:#878782}
#scanDialog .entry-composer{position:relative;margin:0;box-shadow:0 3px 18px #00000018}
#scanDialog .scan-photo-preview{display:flex;gap:8px;overflow-x:auto;margin:0 0 8px}
#scanDialog .scan-photo-preview[hidden]{display:none}
#scanDialog .scan-photo-preview figure{width:76px;height:76px;flex:none}
#scanDialog #voicePreview{font-size:11px;margin:6px 0 0;padding:4px 10px;border-radius:12px;background:#f5f5f2}

#mealDetailDialog .meal-weight.mixed-quantity{white-space:normal;font-size:18px;line-height:1.35;align-self:center;overflow-wrap:anywhere}
#scanDialog .scan-handle{position:relative;top:auto}
#scanDialog #voicePreview{position:absolute;bottom:100%;left:0;right:0;margin:0;pointer-events:none}
.meal[data-analysis-status="pending"] .meal-analysis-status:before{content:none}
:is(#favoriteDraftBar,[data-detail-id="favoriteDraftBar"]){display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 2px 8px;font-size:11px;color:var(--muted)}
:is(#favoriteDraftBar,[data-detail-id="favoriteDraftBar"])[hidden]{display:none}
:is(#favoriteDraftBar,[data-detail-id="favoriteDraftBar"]) button{padding:10px 12px;border-radius:18px;background:var(--brand);color:white;font-size:12px;flex:none}
.calendar-outgoing{position:absolute;inset:0 0 auto;width:100%;z-index:2;pointer-events:none;background:var(--paper)}
#mealDetailDialog :is(#favoriteMeal,[data-detail-id="favoriteMeal"])[hidden],#mealDetailDialog :is(#deleteMeal,[data-detail-id="deleteMeal"])[hidden]{display:none}

/* Statistics: one explorable daily rhythm, with the app's familiar macro palette. */
#progressDialog{padding:20px 20px 32px;letter-spacing:-.025em}
#progressDialog>.dialog-handle{background:var(--paper)}
.meter:after{background:var(--meter-fill,currentColor)}
#progressDialog>h2{font-size:21px;text-align:left;margin:8px 0 22px}
#progressDialog .progress-content{gap:0}
#progressDialog .progress-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px}
#progressDialog .progress-period{gap:3px;padding:3px;border-radius:24px;background:#e8e8e3;flex:none}
#progressDialog .progress-period button{background:transparent;min-height:38px;padding:8px 14px;font-size:12px;font-weight:650}
#progressDialog .progress-period button[aria-pressed=true]{background:var(--ink);color:white}
#progressDialog .progress-date-range{font-size:11px;line-height:1.4;color:#62625e;text-align:right}
#progressDialog .progress-intro{padding:24px 0 20px}
#progressDialog .progress-intro h3{font-size:32px;letter-spacing:-.055em;margin:0 0 8px}
#progressDialog .progress-intro p{font-size:13px;line-height:1.5;color:#62625e;max-width:34ch;margin:0}
#progressDialog .progress-trend{padding:17px 14px 8px;background:#fff;border:1px solid #e8e8e3;border-radius:23px}
#progressDialog .progress-metric-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}
#progressDialog .progress-metric-tabs button{font-size:11px;min-height:38px;border-radius:11px;background:none;padding:7px 1px;color:#666660}
#progressDialog .progress-metric-tabs button[aria-pressed=true]{background:color-mix(in srgb,var(--trend-color) 12%,white);color:var(--trend-color);font-weight:750}
#progressDialog .progress-trend-head{padding:23px 0 18px}
#progressDialog .progress-trend-value{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}
#progressDialog .progress-trend-value strong{font-size:43px;line-height:1.1;font-weight:760;letter-spacing:-.065em;font-variant-numeric:tabular-nums}
#progressDialog .progress-trend-value span{font-size:12px;color:#62625e}
#progressDialog .progress-trend-comparison{font-size:11px;letter-spacing:0;margin:8px 0 0;color:#62625e}
#progressDialog .progress-plot{position:relative;padding-left:30px}
#progressDialog .progress-scale{position:absolute;left:0;top:-6px;height:161px;display:flex;flex-direction:column;justify-content:space-between;font-size:9px;color:#73736d;letter-spacing:-.03em}
#progressDialog .progress-chart{height:150px;margin:0;gap:5px;border-bottom:1px solid #deded8;position:relative;isolation:isolate}
#progressDialog .progress-chart>.progress-column{display:flex;align-items:stretch;flex:1;min-width:0;background:none;border-radius:0;z-index:1}
#progressDialog .progress-column button{width:100%;height:100%;background:none;padding:0;display:flex;align-items:flex-end;border-radius:4px 4px 0 0;min-width:0}
#progressDialog .progress-column i{display:block;width:100%;height:var(--bar);background:var(--trend-color);border-radius:4px 4px 0 0;opacity:.48}
#progressDialog .progress-column button[aria-pressed=true] i{opacity:1}
#progressDialog .progress-column button:hover i{opacity:.85}
#progressDialog .progress-column .missing{background:none}
#progressDialog .progress-column .missing i{height:9px;background:repeating-linear-gradient(135deg,#dadad5 0 2px,transparent 2px 4px);opacity:1}
#progressDialog .progress-target-line{position:absolute;left:0;right:0;height:0;border-top:1px dashed #9e9e97;pointer-events:none;z-index:0}
#progressDialog .progress-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:10px;color:#62625e;letter-spacing:0}
#progressDialog .progress-chart-legend{font-size:10px;line-height:1.5;color:#62625e;letter-spacing:0;margin:10px 0 17px}
#progressDialog .progress-day-detail{border-top:1px solid var(--line);padding:6px 0 9px}
#progressDialog .progress-day-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
#progressDialog .progress-day-head strong{font-size:12px;font-weight:600}
#progressDialog .progress-day-head button{width:40px;min-height:40px;background:none;font-size:23px;border-radius:50%}
#progressDialog .progress-day-head button:disabled{opacity:.25;cursor:default}
#progressDialog .progress-day-body{text-align:center;min-height:52px}
#progressDialog .progress-day-body>strong{font-size:14px}
#progressDialog .progress-day-activities{display:flex;justify-content:center;flex-wrap:wrap;gap:7px 12px;margin-top:7px;font-size:10px;color:#62625e;letter-spacing:0}
#progressDialog .progress-day-activities span:not(.progress-no-training):before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;background:var(--activity-color)}
#progressDialog .progress-section{padding:25px 0;margin-top:22px;border-top:1px solid #deded8}
#progressDialog .progress-section h3{font-size:18px;letter-spacing:-.04em;margin:0 0 12px}
#progressDialog .progress-section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
#progressDialog .progress-section-heading>span{font-size:11px;color:#62625e}
#progressDialog .progress-training{border-top:0;margin-top:0;padding-top:28px}
#progressDialog .progress-training-total{display:flex;gap:9px;align-items:baseline;margin:8px 0 15px}
#progressDialog .progress-training-total strong{font-size:33px;letter-spacing:-.05em}
#progressDialog .progress-training-total>span{font-size:12px;color:#62625e}
#progressDialog .progress-training-mix{display:flex;height:8px;gap:3px;overflow:hidden;border-radius:8px;background:#e8e8e3;margin-bottom:15px}
#progressDialog .progress-training-row{display:grid;grid-template-columns:1fr 35px auto;gap:8px;align-items:center;padding:10px 0;font-size:12px}
#progressDialog .progress-training-row b{font-weight:550;display:flex;align-items:center;gap:9px;overflow-wrap:anywhere}
#progressDialog .progress-training-row b:before{content:'';width:8px;height:8px;border-radius:50%;background:var(--activity-color);flex:none}
#progressDialog .progress-training-row>span{text-align:right;color:#62625e}
#progressDialog .progress-training-row>strong{text-align:right;font-weight:600}
#progressDialog .progress-training-plan{font-size:11px;line-height:1.5;color:#62625e;margin:15px 0 0}
#progressDialog .progress-habits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;border-top:1px solid #deded8;padding-top:25px}
#progressDialog .progress-habit{min-width:0}
#progressDialog .progress-habit h3{font-size:13px;color:var(--habit-color);margin:0 0 12px}
#progressDialog .progress-habit>strong{display:block;font-size:32px;letter-spacing:-.055em}
#progressDialog .progress-habit>span{display:block;font-size:11px;color:#62625e;margin-top:3px}
#progressDialog .progress-habit-days{display:flex;gap:3px;margin:14px 0 8px;height:16px}
#progressDialog .progress-habit-days i{display:block;flex:1;min-width:0;border-radius:2px;background:color-mix(in srgb,var(--habit-color) 22%,white)}
#progressDialog .progress-habit-days .met{background:var(--habit-color)}
#progressDialog .progress-habit-days .missing{background:#e4e4df}
#progressDialog .progress-habit small{display:block;font-size:10px;line-height:1.5;color:#62625e;letter-spacing:0}
#progressDialog .progress-caption{font-size:11px;color:#62625e;margin:0 0 20px;line-height:1.5}
#progressDialog .progress-nutrition-calories{display:flex;align-items:baseline;gap:9px;margin-bottom:20px}
#progressDialog .progress-nutrition-calories strong{font-size:32px;letter-spacing:-.05em}
#progressDialog .progress-nutrition-calories span{font-size:11px;color:#62625e}
#progressDialog .progress-nutrition-row{display:grid;grid-template-columns:1fr auto;gap:7px;margin:15px 0;font-size:12px}
#progressDialog .progress-nutrition-row>strong{font-weight:600}
#progressDialog .progress-nutrition-row .track{grid-column:1/-1;height:5px;margin:0}
#progressDialog .progress-nutrition-row small{grid-column:1/-1;font-size:10px;color:#62625e;text-align:right}
#progressDialog .progress-data-note{display:block;margin-top:20px;font-size:11px;line-height:1.5;color:#62625e}
#progressDialog .progress-nutrient-details{font-size:12px;margin:18px 0 0}
#progressDialog .progress-section>p{font-size:13px;color:#62625e}
#progressDialog .progress-weight-form button{font-size:12px}
#progressDialog .weight-history{font-size:12px}
#progressDialog button:focus-visible,#progressDialog summary:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
@media(max-width:360px){#progressDialog{padding-left:14px;padding-right:14px}#progressDialog .progress-date-range{font-size:10px}#progressDialog .progress-period button{padding:8px 10px}#progressDialog .progress-trend{padding-left:10px;padding-right:10px}#progressDialog .progress-trend-value strong{font-size:38px}#progressDialog .progress-habits{gap:16px}#progressDialog .progress-chart{gap:3px}}

/* The native WebView keeps one viewport; each surface owns its status-bar inset. */
.native-app body{padding-top:var(--native-safe-top,0px)}
.native-app .dialog.fullscreen,.native-app .dialog.correction,.native-app #onboardingDialog{top:var(--native-safe-top,0px);height:calc(100dvh - var(--native-safe-top,0px));max-height:calc(100dvh - var(--native-safe-top,0px))}
.native-app :is(#coachDialog,[data-coach-id="coachDialog"]).coach-dialog{top:calc(var(--messenger-visible-top,0px) + var(--native-safe-top,0px));height:calc(min(100dvh,var(--messenger-visible-height,100dvh)) - var(--native-safe-top,0px));max-height:calc(min(100dvh,var(--messenger-visible-height,100dvh)) - var(--native-safe-top,0px))}
.native-app #scanDialog{max-height:calc(var(--meal-visible-height,100dvh) - var(--native-safe-top,0px))}
.native-app #mealDetailDialog>.dialog-handle{top:var(--native-safe-top,0px)}
.native-app #mealDetailDialog .photo-actions{top:calc(var(--native-safe-top,0px) + 4px)}
.native-app #messengerPhotoViewer{padding-top:var(--native-safe-top,0px)}


.home-swipe-intro>.home-day{will-change:transform}

/* Reveal the existing fill without moving its excess-color boundary. */
.meter:after{clip-path:inset(0 var(--home-meter-reveal,0%) 0 0)}

/* Ingredient compositions show every outer slot; real photos keep their existing crop. */
.photo-stage .meal-photo-gallery .meal-photo-slide[data-illustration="true"] img{object-fit:contain;background:#fff}
