:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.25rem;--s-6:1.5rem;--s-8:2rem;--s-10:2.5rem;--s-12:3rem;--r-sm:.65rem;--r-md:1rem;--r-lg:1.35rem;--r-xl:1.8rem;--shadow-1:0 1px 2px #173b2d0a,0 6px 18px #173b2d0a;--shadow-2:0 16px 40px #173b2d12;--text:#17241f;--text-2:#51615a;--text-3:#728078;--bg:#f3f6f2;--surface:#fff;--surface-2:#f7faf7;--border:#dce6df;--accent:#147b67;--accent-2:#0d6554;--accent-soft:#e2f2ec;--focus:#61b8a4;--danger:#9a564b;--danger-soft:#f8ebe8;--chart-1:#16866f;--chart-2:#5aa0ba;--chart-3:#d3a14d;--chart-4:#856fb2;--grid:#dde7e1;--nav-w:240px;--content:1240px;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1rem;--fs-lg:1.125rem;--fs-xl:1.4rem;--fs-2xl:clamp(1.75rem,4vw,2.4rem)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#edf5f1;--text-2:#b2c2ba;--text-3:#8fa198;--bg:#0d1713;--surface:#14221c;--surface-2:#192b23;--border:#2b4137;--accent:#58c2a8;--accent-2:#78d5bd;--accent-soft:#173d32;--focus:#72d7be;--danger:#e29b8e;--danger-soft:#402824;--shadow-1:0 1px 2px #0003,0 8px 22px #0002;--shadow-2:0 18px 44px #0005;--chart-1:#58c2a8;--chart-2:#72b8d0;--chart-3:#e2b563;--chart-4:#a48ad0;--grid:#2c4037}}*{box-sizing:border-box}html{background:var(--bg);min-width:320px}body{font-family:var(--font);font-size:var(--fs-base);color:var(--text);background:0 0;margin:0;line-height:1.5}body:before{content:"";z-index:-1;background:radial-gradient(circle at 90% -10%,var(--accent-soft),transparent 38%),var(--bg);position:fixed;inset:0}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}svg{display:block}.app-shell{min-height:100vh}.main-column{min-width:0}.sidebar{display:none}.mobile-header{height:64px;padding:0 var(--s-4);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 90%,transparent);z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);align-items:center;display:flex;position:sticky;top:0}.brand,.brand-lockup{align-items:center;gap:.65rem;font-size:1.05rem;font-weight:750;display:flex}.brand{background:0 0;border:0;padding:0}.brand-mark{color:#fff;background:linear-gradient(145deg,var(--accent),var(--accent-2));width:34px;height:34px;box-shadow:var(--shadow-1);border-radius:11px;place-items:center;display:grid}.brand-mark svg{width:21px}.content{width:min(100%,var(--content));padding:var(--s-6) var(--s-4) calc(94px + env(safe-area-inset-bottom));margin:auto}.content.narrow{max-width:840px}.page-head{gap:var(--s-4);margin-bottom:var(--s-6);justify-content:space-between;align-items:flex-end;display:flex}h1,h2,h3,h4,p{margin-top:0}h1{font-size:var(--fs-2xl);letter-spacing:-.035em;margin-bottom:0;line-height:1.12}h2{font-size:var(--fs-xl);letter-spacing:-.02em;margin-bottom:var(--s-2)}h3{font-size:var(--fs-lg)}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:var(--fs-xs);color:var(--accent);margin-bottom:var(--s-2);font-weight:750}.muted{color:var(--text-2)}.fine-print{font-size:var(--fs-xs);color:var(--text-3)}.button{border-radius:var(--r-sm);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.66rem 1rem;font-weight:700;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.button svg{width:19px}.button.primary{background:var(--accent);color:#fff}.button.secondary{background:var(--accent-soft);color:var(--accent-2);border-color:color-mix(in srgb,var(--accent) 22%,transparent)}.button.ghost{color:var(--text-2);border-color:var(--border);background:0 0}.button:active{transform:scale(.98)}.icon-btn{width:44px;height:44px;color:var(--text-2);background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn svg{width:20px}.bottom-nav{height:calc(68px + env(safe-area-inset-bottom));padding:5px 6px env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 94%,transparent);border-top:1px solid var(--border);z-index:30;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{border-radius:var(--r-sm);color:var(--text-3);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;font-size:.66rem;display:flex}.bottom-nav svg{width:22px}.bottom-nav .active{color:var(--accent);background:var(--accent-soft)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-5);box-shadow:var(--shadow-1);min-width:0}.card-head{margin-bottom:var(--s-4);justify-content:space-between;display:flex}.card-head h2{font-size:var(--fs-lg);margin:0}.card-head p{font-size:var(--fs-sm);color:var(--text-2);margin:.2rem 0 0}.dashboard-grid,.progress-grid{gap:var(--s-4);display:grid}.ring-layout{justify-content:space-around;align-items:center;gap:var(--s-4);display:flex}.progress-ring{width:min(170px,48%)}.ring-track,.ring-value{fill:none;stroke-width:12px}.ring-track{stroke:var(--accent-soft)}.ring-value{stroke:var(--accent);stroke-linecap:round}.ring-number{fill:var(--text);font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}.ring-label{fill:var(--text-2);font-size:8px}.metric-label,.hero-number{display:block}.metric-label{font-size:var(--fs-sm);color:var(--text-2)}.hero-number{letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(2rem,8vw,3rem);line-height:1.1}.meter-row+.meter-row{margin-top:var(--s-4)}.meter-row>div:first-child{font-size:var(--fs-sm);justify-content:space-between;gap:1rem;display:flex}.meter-row strong{font-variant-numeric:tabular-nums}.meter{background:var(--accent-soft);height:7px;margin-top:var(--s-2);border-radius:99px;overflow:hidden}.meter span{border-radius:inherit;background:var(--accent);height:100%;display:block}.weight-value{font-variant-numeric:tabular-nums;font-size:2.1rem;font-weight:800}.weight-value small{font-size:var(--fs-sm);color:var(--text-2);font-weight:500}.weight-card .button{width:100%;margin-top:var(--s-3)}.sparkline{width:100%;height:46px;margin:var(--s-3) 0}.sparkline polyline{fill:none;stroke:var(--accent);stroke-width:3px;vector-effect:non-scaling-stroke}.chart-wrap{max-width:760px;margin:auto;overflow:hidden}.chart{width:100%;height:auto;overflow:visible}.chart text{fill:var(--text-3);font-variant-numeric:tabular-nums;font-size:10px}.grid line{stroke:var(--grid);stroke-width:1px}.bar{fill:var(--chart-1)}.target line{stroke:var(--chart-3);stroke-width:2px;stroke-dasharray:6 5}.target text{fill:var(--chart-3);font-weight:700}.line{fill:none;stroke:currentColor;stroke-width:2.5px;vector-effect:non-scaling-stroke}.dot{fill:var(--surface);stroke:currentColor;stroke-width:2px}.area{fill:currentColor;opacity:.12}.legend{font-size:var(--fs-xs);color:var(--text-2);flex-wrap:wrap;justify-content:center;gap:.6rem 1rem;display:flex}.legend span{align-items:center;gap:.35rem;display:flex}.legend i,.donut-key i{border-radius:50%;width:9px;height:9px}.donut-layout{align-items:center;gap:var(--s-3);grid-template-columns:minmax(110px,150px) 1fr;max-width:430px;margin:auto;display:grid}.donut{width:100%;height:auto}.donut-track,.donut-segment{fill:none;stroke-width:14px}.donut-track{stroke:var(--surface-2)}.donut-segment{stroke-linecap:butt}.donut-caption{fill:var(--text);font-variant-numeric:tabular-nums;font-size:13px;font-weight:800}.donut-sub{fill:var(--text-2);font-size:6px}.donut-key{gap:.45rem;display:grid}.donut-key div{font-size:var(--fs-xs);grid-template-columns:10px 1fr auto;align-items:center;gap:.45rem;display:grid}.donut-key strong{font-variant-numeric:tabular-nums}.chart-empty{height:180px;color:var(--text-3);text-align:center;font-size:var(--fs-sm);flex-direction:column;justify-content:center;align-items:center;display:flex}.chart-empty svg{width:38px;margin-bottom:var(--s-3);fill:none;stroke:currentColor;stroke-width:1.5px}.heatmap{max-width:520px;margin:var(--s-5) auto;grid-template-columns:repeat(10,1fr);gap:6px;display:grid}.heatmap span{aspect-ratio:1;background:var(--surface-2);border:1px solid var(--border);border-radius:5px}.heatmap .logged{background:var(--accent);border-color:var(--accent)}.section{margin-top:var(--s-10)}.section-head{justify-content:space-between;align-items:center;gap:var(--s-4);margin-bottom:var(--s-4);display:flex}.section-head h2{margin:0}.meal-groups{gap:var(--s-6);display:grid}.meal-group h3{margin-bottom:var(--s-3);text-transform:capitalize;align-items:center;gap:.5rem;display:flex}.meal-group h3 span{background:var(--accent-soft);min-width:24px;height:24px;color:var(--accent);font-size:var(--fs-xs);border-radius:99px;place-items:center;display:grid}.meal-card{gap:var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);box-shadow:var(--shadow-1);align-items:flex-start;display:flex}.meal-card+.meal-card{margin-top:var(--s-3)}.meal-icon{background:var(--accent-soft);width:42px;height:42px;color:var(--accent);border-radius:13px;flex:none;place-items:center;display:grid}.meal-icon svg{width:22px}.meal-main{flex:1;min-width:0}.meal-title{justify-content:space-between;gap:var(--s-3);display:flex}.meal-title h4{overflow-wrap:anywhere;margin:0}.meal-title p{margin:2px 0 var(--s-3);font-size:var(--fs-xs);color:var(--text-3)}.meal-title>strong{font-variant-numeric:tabular-nums;white-space:nowrap}.meal-title small{font-size:var(--fs-xs);font-weight:500}.macro-strip{background:var(--surface-2);border-radius:99px;height:6px;display:flex;overflow:hidden}.macro-strip span{min-width:1px}.meal-macros{font-size:var(--fs-xs);color:var(--text-2);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.3rem .8rem;margin-top:.55rem;display:flex}.card-actions{flex-direction:column;margin:-8px;display:flex}.group-empty,.no-entry{padding:var(--s-5);border:1px dashed var(--border);border-radius:var(--r-md);color:var(--text-3);text-align:center}.empty-state{padding:var(--s-12) var(--s-6);text-align:center;border:1px dashed var(--border);border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 62%,transparent)}.empty-state h3{margin:var(--s-3) 0 var(--s-2)}.empty-state p{color:var(--text-2);max-width:430px;margin:0 auto var(--s-5)}.empty-icon{background:var(--accent-soft);width:62px;height:62px;color:var(--accent);border-radius:20px;place-items:center;margin:auto;display:grid}.empty-icon svg{width:30px}.fab{right:var(--s-4);bottom:calc(78px + env(safe-area-inset-bottom));z-index:19;background:var(--accent);color:#fff;box-shadow:var(--shadow-2);height:52px;padding:0 var(--s-5);border:0;border-radius:99px;align-items:center;gap:.45rem;font-weight:750;display:flex;position:fixed}.fab svg{width:21px}.login-page{min-height:100vh;padding:var(--s-6);place-items:center;display:grid;position:relative}.login-page>.brand-lockup{top:var(--s-6);left:var(--s-6);position:absolute}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);width:min(100%,430px);box-shadow:var(--shadow-2);padding:clamp(1.5rem,6vw,2.5rem)}.login-card h1{margin-bottom:var(--s-3)}.login-card .button{width:100%;margin-top:var(--s-3)}label{font-size:var(--fs-sm);color:var(--text-2);gap:.42rem;font-weight:650;display:grid}input,select,textarea{border:1px solid var(--border);background:var(--surface-2);border-radius:var(--r-sm);outline:0;width:100%;min-height:44px;padding:.65rem .75rem;font-size:16px}textarea{resize:vertical;min-height:90px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid color-mix(in srgb,var(--focus) 38%,transparent);outline-offset:2px;border-color:var(--focus)}.mode-tabs{gap:var(--s-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:var(--s-4);grid-template-columns:repeat(3,1fr);padding:5px;display:grid}.mode-tabs button{border-radius:var(--r-sm);min-height:48px;color:var(--text-2);background:0 0;border:0;justify-content:center;align-items:center;gap:.4rem;font-weight:650;display:flex}.mode-tabs button.active{background:var(--accent-soft);color:var(--accent)}.mode-tabs svg{width:20px}.entry-card{gap:var(--s-4);display:grid}.entry-card h2,.entry-card p{margin-bottom:0}.meal-description{min-height:180px;font-size:1.05rem;line-height:1.6}.field-meta{color:var(--text-3);font-size:var(--fs-xs);justify-content:space-between;display:flex}.photo-drop{border:1.5px dashed var(--border);border-radius:var(--r-md);background:var(--surface-2);min-height:230px;color:var(--text-2);flex-direction:column;justify-content:center;align-items:center;gap:.4rem;display:flex}.photo-drop svg{width:44px;color:var(--accent);margin-bottom:var(--s-2)}.photo-drop span{font-size:var(--fs-sm)}.photo-preview{gap:var(--s-3);display:grid}.photo-preview img{object-fit:contain;border-radius:var(--r-md);background:var(--surface-2);width:100%;max-height:420px}.photo-preview>div{gap:var(--s-2);display:flex}.privacy-note,.estimate-notice,.disclaimer{gap:var(--s-3);padding:var(--s-4);border-radius:var(--r-md);background:var(--accent-soft);color:var(--text-2);font-size:var(--fs-sm);margin-top:var(--s-4);align-items:flex-start;display:flex}.privacy-note svg,.estimate-notice svg{width:21px;color:var(--accent);flex:none}.estimate-notice{margin:0 0 var(--s-5)}.error-banner{justify-content:space-between;align-items:center;gap:var(--s-3);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);background:var(--danger-soft);color:var(--text);border-radius:var(--r-sm);margin-bottom:var(--s-4);font-size:var(--fs-sm);padding:.8rem 1rem;display:flex}.review-layout,.review-layout>div{gap:var(--s-4);display:grid}.review-summary{min-width:0}.form-grid{gap:var(--s-4);display:grid}.review-items{margin-top:var(--s-4)}.review-items .section-head{margin-bottom:var(--s-3)}.item-editor+.item-editor{margin-top:var(--s-3)}.item-editor-head{margin-bottom:var(--s-3);justify-content:space-between;align-items:center;display:flex}.item-editor-head .icon-btn{color:var(--danger)}.total-number{text-align:center;font-variant-numeric:tabular-nums;margin-bottom:var(--s-3);font-size:2.3rem;font-weight:800}.total-number small{font-size:var(--fs-sm);color:var(--text-2);font-weight:500}.summary-macros{gap:var(--s-2);margin-top:var(--s-5);grid-template-columns:repeat(2,1fr);display:grid}.summary-macros span{padding:var(--s-3);background:var(--surface-2);border-radius:var(--r-sm);font-size:var(--fs-xs);color:var(--text-2);flex-direction:column;display:flex}.summary-macros b{font-size:var(--fs-lg);color:var(--text);font-variant-numeric:tabular-nums}.review-actions{justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-5);display:flex}.filter-bar{gap:var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);margin-bottom:var(--s-4);display:grid}.filter-bar label>span{font-size:var(--fs-xs)}.search{position:relative}.search svg{width:20px;color:var(--text-3);position:absolute;bottom:12px;left:12px}.search input{padding-left:40px}.summary-tiles{gap:var(--s-3);margin-bottom:var(--s-4);grid-template-columns:repeat(2,1fr);display:grid}.stat{min-width:0;padding:var(--s-4);border:1px solid var(--border);background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-1)}.stat span,.stat small{color:var(--text-2);font-size:var(--fs-xs);display:block}.stat strong{font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:clamp(1.25rem,4vw,1.8rem);display:block;overflow:hidden}.history-list{gap:var(--s-6);display:grid}.history-date{justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-3);font-size:var(--fs-sm);display:flex}.history-date span{color:var(--text-2);font-variant-numeric:tabular-nums}.progress-grid{margin-top:var(--s-4)}.targets-grid{margin-bottom:var(--s-5)}.disclaimer{border:1px solid var(--border);background:var(--surface-2);margin-bottom:var(--s-4)}.settings-actions{align-items:flex-start;gap:var(--s-3);flex-direction:column;display:flex}.settings-actions p{color:var(--text-2);font-size:var(--fs-sm);margin:2px 0 0}.border-top{border-top:1px solid var(--border);margin-top:var(--s-5);padding-top:var(--s-5)}.modal-backdrop{z-index:50;background:#07110c99;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-height:90vh;padding:var(--s-5) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));box-shadow:var(--shadow-2);overflow:auto}.sheet-head{justify-content:space-between;align-items:center;display:flex}.skeleton{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);height:190px;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--surface) 65%,transparent),transparent);animation:1.3s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.skeleton.heading{width:55%;height:45px;margin-bottom:var(--s-6)}.skeleton.card-wide{height:300px}.visually-hidden{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@keyframes shimmer{to{transform:translate(100%)}}@media (width>=600px){.content{padding-left:var(--s-6);padding-right:var(--s-6)}.dashboard-grid,.progress-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}.meal-groups{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .span-2{grid-column:span 2}.nutrition-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.nutrition-grid .food-field{grid-column:span 2}.filter-bar{grid-template-columns:2fr repeat(3,1fr);align-items:end}.summary-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}.settings-actions{flex-direction:row;justify-content:space-between;align-items:center}.sheet{border-radius:var(--r-xl);max-width:560px;margin:auto}.modal-backdrop{padding:var(--s-4);align-items:center}}@media (width>=860px){.app-shell{grid-template-columns:var(--nav-w) minmax(0,1fr);display:grid}.sidebar{height:100vh;padding:var(--s-6) var(--s-4);background:color-mix(in srgb,var(--surface) 88%,transparent);border-right:1px solid var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);flex-direction:column;display:flex;position:sticky;top:0}.sidebar .brand{padding:0 var(--s-3);margin-bottom:var(--s-8)}.sidebar nav{gap:4px;display:grid}.sidebar nav button{border-radius:var(--r-sm);height:48px;color:var(--text-2);align-items:center;gap:var(--s-3);padding:0 var(--s-3);text-align:left;background:0 0;border:0;font-weight:650;display:flex}.sidebar nav button svg{width:21px}.sidebar nav button.active{background:var(--accent-soft);color:var(--accent)}.sidebar-foot{align-items:center;gap:var(--s-2);font-size:var(--fs-sm);grid-template-columns:36px 1fr 44px;margin-top:auto;display:grid}.avatar{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:50%;place-items:center;font-weight:800;display:grid}.mobile-header,.bottom-nav{display:none}.content{padding-top:var(--s-10);padding-bottom:var(--s-12)}.fab{display:none}.dashboard-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.dashboard-grid>.card,.dashboard-grid>.calorie-card,.dashboard-grid>.macro-targets{grid-column:span 3}.dashboard-grid>.weight-card{grid-column:span 2}.dashboard-grid>.span-2{grid-column:span 4}.progress-grid>.card{grid-column:span 1}.progress-grid>.span-2{grid-column:span 2}.review-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start}.review-summary{top:var(--s-5);position:sticky}.meal-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1180px){.dashboard-grid>.calorie-card,.dashboard-grid>.macro-targets,.dashboard-grid>.weight-card{grid-column:span 2}.dashboard-grid>.span-2{grid-column:span 4}.dashboard-grid>.card:not(.span-2):not(.calorie-card):not(.macro-targets):not(.weight-card){grid-column:span 3}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
