1import{a as Qt,b as Yt}from"./chunk-RQIESC7D.js";import{a as qt,b as Kt}from"./chunk-27KOZ3CM.js";import{a as jt}from"./chunk-QMVBHUZG.js";import"./chunk-2ZLNPU2G.js";import{a as Ht}from"./chunk-23KJKC6K.js";import"./chunk-OCONZEUS.js";import"./chunk-XSZTOJMI.js";import"./chunk-77NMTAFC.js";import"./chunk-BCPZPP5Y.js";import{c as Wt}from"./chunk-2SZU4ZME.js";import{e as xt}from"./chunk-DAO3SMRL.js";import{E as Bt,c as Rt,e as vt,f as Gt,h as kt,j as Dt,k as It,l as $t,t as wt,u as Ut,v as zt,w as Xt,x as Vt}from"./chunk-XAF3MVVX.js";import{a as yt}from"./chunk-IKIHJGQ5.js";import{a as At}from"./chunk-Z5DLUQQM.js";import"./chunk-TYFWTMGI.js";import{b as Y,e as Ft}from"./chunk-I73U4EKQ.js";import{Ab as v,Bb as G,Bd as Lt,Cb as T,Db as o,Eb as i,Fb as p,Fd as bt,Gc as F,Ic as x,Kc as St,Lb as K,Nc as ht,Ob as f,Oc as D,Pa as w,Sb as s,Tb as U,U as ft,Ua as r,Ub as z,Wb as u,Yb as l,Z as R,ca as g,da as O,ea as E,fa as A,fb as Tt,fc as Q,gc as I,hc as k,kb as B,kc as P,lc as L,mc as b,n as q,nc as Et,oa as M,rc as S,sc as h,tc as N,ub as W,ud as Nt,wb as C,xb as m,zb as j}from"./chunk-UWUNFDSH.js";import"./chunk-HSCBD3RX.js";var Z=[{code:"ES",name:"Spain",flag:"\u{1F1EA}\u{1F1F8}"},{code:"NL",name:"Netherlands",flag:"\u{1F1F3}\u{1F1F1}"},{code:"DE",name:"Germany",flag:"\u{1F1E9}\u{1F1EA}"},{code:"TR",name:"T\xFCrkiye",flag:"\u{1F1F9}\u{1F1F7}"}],H=class t{http=R(Ft);baseUrl=`${At.apiUrl}/public/food-search`;loading=M(!1);error=M(null);async search(n,e,a=1,_=20){this.loading.set(!0),this.error.set(null);try{let c=new Y().set("q",n).set("country",e).set("page",a.toString()).set("pageSize",_.toString()),y=await q(this.http.get(`${this.baseUrl}/search`,{params:c}));return this.loading.set(!1),y;}catch(c){throw this.loading.set(!1),this.error.set(c?.error?.message||"Failed to search foods"),c;}}async getByBarcode(n,e){this.loading.set(!0),this.error.set(null);try{let a=new Y();e&&(a=a.set("country",e));let _=await q(this.http.get(`${this.baseUrl}/barcode/${encodeURIComponent(n)}`,{params:a}));return this.loading.set(!1),_;}catch(a){if(this.loading.set(!1),a?.status===404)return null;throw this.error.set(a?.error?.message||"Failed to look up barcode"),a;}}getDisplayName(n){return n.productName||n.productNameEn||n.barcode;}static ɵfac=function(e){return new(e||t)();};static ɵprov=ft({token:t,factory:t.ɵfac,providedIn:"root"});};var tn=(t,n)=>n.code,Jt=(t,n)=>n.id;function nn(t,n){if(t&1){let e=f();o(0,"button",87),u("click",function(){g(e);let _=l();return O(_.goToToday());}),s(1,2),i();}}function on(t,n){t&1&&(o(0,"div",85),p(1,"div",88),o(2,"p"),s(3,3),i()());}function _n(t,n){if(t&1&&(o(0,"span",94),P(1),F(2,"number"),i()),t&2){let e=l(2);r(),b("/ ",x(2,1,e.calorieTarget(),"1.0-0"));}}function an(t,n){if(t&1&&(o(0,"div",95),E(),o(1,"svg",114),p(2,"path",115),i(),A(),o(3,"span",116),P(4),i(),o(5,"span",117),s(6,9),i()()),t&2){let e=l(2);r(4),L(e.streak());}}function rn(t,n){t&1&&(o(0,"span",121),s(1,11),i());}function ln(t,n){if(t&1&&(o(0,"span"),s(1,12),F(2,"number"),i()),t&2){let e=l(3);r(2),U(x(2,1,e.calorieTarget()-e.totals().calories,"1.0-0")),z(1);}}function dn(t,n){if(t&1){let e=f();o(0,"div",96)(1,"div",118),p(2,"div",119),i(),o(3,"div",120),C(4,rn,2,0,"span",121)(5,ln,3,4,"span"),o(6,"button",122),u("click",function(){g(e);let _=l(2);return O(_.openTargetEditor());}),s(7,10),i()()();}if(t&2){let e=l(2);r(2),I("width",e.targetProgress(),"%"),k("over",e.targetOver()),r(2),m(e.targetOver()?4:5);}}function cn(t,n){if(t&1){let e=f();o(0,"button",123),u("click",function(){g(e);let _=l(2);return O(_.openTargetEditor());}),E(),o(1,"svg",124),p(2,"path",125)(3,"circle",126),i(),A(),o(4,"span"),s(5,13),i()();}}function sn(t,n){if(t&1){let e=f();o(0,"button",133),u("click",function(){g(e);let _=l(3);return O(_.clearTarget());}),s(1,17),i();}}function gn(t,n){if(t&1){let e=f();o(0,"div",108)(1,"label",127),s(2,14),i(),o(3,"div",128)(4,"input",129),N("ngModelChange",function(_){g(e);let c=l(2);return h(c.targetInput,_)||(c.targetInput=_),O(_);}),i(),o(5,"button",130),u("click",function(){g(e);let _=l(2);return O(_.saveTarget());}),s(6,15),i(),C(7,sn,2,0,"button",131),o(8,"button",132),u("click",function(){g(e);let _=l(2);return O(_.cancelTarget());}),s(9,16),i()()();}if(t&2){let e=l(2);r(4),S("ngModel",e.targetInput),r(3),m(e.calorieTarget()?7:-1);}}function On(t,n){if(t&1){let e=f();o(0,"button",134),u("click",function(){g(e);let _=l(2);return O(_.openAddPanel());}),E(),o(1,"svg",77),p(2,"path",135),i(),A(),o(3,"span"),s(4,18),i()();}}function Cn(t,n){if(t&1){let e=f();o(0,"button",147),u("click",function(){let _=g(e).$implicit,c=l(3);return O(c.addMealType.set(_));}),P(1),i();}if(t&2){let e=n.$implicit,a=l(3);k("active",a.addMealType()===e),r(),b(" ",a.mealLabel(e)," ");}}function mn(t,n){if(t&1&&(o(0,"option",150),P(1),i()),t&2){let e=n.$implicit;T("value",e.code),r(),Et("",e.flag," ",e.name);}}function pn(t,n){if(t&1){let e=f();o(0,"div",145)(1,"label",148),s(2,24),i(),o(3,"select",149),u("ngModelChange",function(_){g(e);let c=l(3);return O(c.onCountryChange(_));}),v(4,mn,2,3,"option",150,tn),i()();}if(t&2){let e=l(3);r(3),T("ngModel",e.country()),r(),G(e.countries);}}function un(t,n){t&1&&p(0,"span",154);}function Pn(t,n){t&1&&(o(0,"div",155),p(1,"div",88),i());}function Mn(t,n){t&1&&(o(0,"div",156)(1,"p"),s(2,26),i()());}function fn(t,n){if(t&1&&p(0,"img",162),t&2){let e=l().$implicit,a=l(6);T("src",e.imageUrl,w)("alt",a.displayName(e));}}function Tn(t,n){t&1&&(o(0,"div",163),E(),o(1,"svg",170),p(2,"path",171),i()());}function En(t,n){if(t&1&&(o(0,"span",166),P(1),i()),t&2){let e=l().$implicit;r(),L(e.brands);}}function Sn(t,n){if(t&1&&(o(0,"span"),P(1),o(2,"span"),s(3,27),i()()),t&2){let e=l().$implicit,a=l(6);r(),b("",a.kcalPer100(e)," ");}}function hn(t,n){t&1&&(o(0,"span",168),s(1,28),i());}function Nn(t,n){if(t&1){let e=f();o(0,"button",160),u("click",function(){let _=g(e).$implicit,c=l(6);return O(c.pickFood(_));}),o(1,"div",161),C(2,fn,1,2,"img",162)(3,Tn,3,0,"div",163),i(),o(4,"div",164)(5,"span",165),P(6),i(),C(7,En,2,1,"span",166),o(8,"span",167),
1C(9,Sn,4,1,"span"),C(10,hn,2,0,"span",168),i()(),E(),o(11,"svg",169),p(12,"path",83),i()();}if(t&2){let e=n.$implicit,a=l(6);r(2),m(e.imageUrl?2:3),r(4),L(a.displayName(e)),r(),m(e.brands?7:-1),r(2),m(a.kcalPer100(e)!==null?9:-1),r(),m(e.foodSource==="generic"?10:-1);}}function Ln(t,n){if(t&1&&(o(0,"div",157),v(1,Nn,13,5,"button",159,Jt),i()),t&2){let e=l(5);r(),G(e.searchResults());}}function bn(t,n){t&1&&(o(0,"p",158),s(1,29),i());}function Fn(t,n){if(t&1){let e=f();o(0,"form",151),u("ngSubmit",function(){g(e);let _=l(4);return O(_.runSearch());}),o(1,"input",152),N("ngModelChange",function(_){g(e);let c=l(4);return h(c.searchQuery,_)||(c.searchQuery=_),O(_);}),i(),o(2,"button",153),C(3,un,1,0,"span",154),o(4,"span"),s(5,25),i()()(),C(6,Pn,2,0,"div",155)(7,Mn,3,0,"div",156)(8,Ln,3,0,"div",157)(9,bn,2,0,"p",158);}if(t&2){let e=l(4);r(),S("ngModel",e.searchQuery),r(),T("disabled",e.searching()),r(),m(e.searching()?3:-1),r(3),m(e.searching()?6:e.searchPerformed()&&e.searchResults().length===0?7:e.searchResults().length>0?8:9);}}function xn(t,n){t&1&&K(0);}function yn(t,n){if(t&1&&B(0,xn,1,0,"ng-container",172),t&2){l(4);let e=Q(18);T("ngTemplateOutlet",e);}}function An(t,n){if(t&1&&C(0,Fn,10,4)(1,yn,1,1,"ng-container"),t&2){let e=l(3);m(e.selectedFood()?1:0);}}function Rn(t,n){t&1&&p(0,"span",154);}function vn(t,n){if(t&1){let e=f();o(0,"button",175),u("click",function(){g(e);let _=l(5);return O(_.openScanner());}),E(),o(1,"svg",170),p(2,"path",176),i(),A(),o(3,"span"),s(4,31),i()();}}function Gn(t,n){if(t&1){let e=f();o(0,"app-web-barcode-scanner",177),u("scanned",function(_){g(e);let c=l(5);return O(c.onScanned(_));})("closed",function(){g(e);let _=l(5);return O(_.showScanner.set(!1));}),i();}}function kn(t,n){t&1&&(o(0,"div",155),p(1,"div",88),i());}function Dn(t,n){t&1&&(o(0,"div",156)(1,"p"),s(2,32),i()());}function In(t,n){if(t&1&&p(0,"img",162),t&2){let e=l(6);T("src",e.barcodeResult().imageUrl,w)("alt",e.displayName(e.barcodeResult()));}}function $n(t,n){t&1&&(o(0,"div",163),E(),o(1,"svg",170),p(2,"path",171),i()());}function wn(t,n){if(t&1&&(o(0,"span",166),P(1),i()),t&2){let e=l(6);r(),L(e.barcodeResult().brands);}}function Un(t,n){if(t&1&&(o(0,"span"),P(1),o(2,"span"),s(3,33),i()()),t&2){let e=l(6);r(),b("",e.kcalPer100(e.barcodeResult())," ");}}function zn(t,n){if(t&1){let e=f();o(0,"div",157)(1,"button",160),u("click",function(){g(e);let _=l(5);return O(_.pickFood(_.barcodeResult()));}),o(2,"div",161),C(3,In,1,2,"img",162)(4,$n,3,0,"div",163),i(),o(5,"div",164)(6,"span",165),P(7),i(),C(8,wn,2,1,"span",166),o(9,"span",167),C(10,Un,4,1,"span"),i()(),E(),o(11,"svg",169),p(12,"path",83),i()()();}if(t&2){let e=l(5);r(3),m(e.barcodeResult().imageUrl?3:4),r(4),L(e.displayName(e.barcodeResult())),r(),m(e.barcodeResult().brands?8:-1),r(2),m(e.kcalPer100(e.barcodeResult())!==null?10:-1);}}function Xn(t,n){t&1&&(o(0,"p",158),s(1,34),i());}function Vn(t,n){if(t&1){let e=f();o(0,"form",151),u("ngSubmit",function(){g(e);let _=l(4);return O(_.lookupBarcode());}),o(1,"input",173),N("ngModelChange",function(_){g(e);let c=l(4);return h(c.barcodeInput,_)||(c.barcodeInput=_),O(_);}),i(),o(2,"button",153),C(3,Rn,1,0,"span",154),o(4,"span"),s(5,30),i()()(),C(6,vn,5,0,"button",174),C(7,Gn,1,0,"app-web-barcode-scanner"),C(8,kn,2,0,"div",155)(9,Dn,3,0,"div",156)(10,zn,13,4,"div",157)(11,Xn,2,0,"p",158);}if(t&2){let e=l(4);r(),S("ngModel",e.barcodeInput),r(),T("disabled",e.barcodeLooking()),r(),m(e.barcodeLooking()?3:-1),r(3),m(e.scanAvailable?6:-1),r(),m(e.showScanner()?7:-1),r(),m(e.barcodeLooking()?8:e.barcodeNotFound()?9:e.barcodeResult()?10:11);}}function Bn(t,n){t&1&&K(0);}function Wn(t,n){if(t&1&&B(0,Bn,1,0,"ng-container",172),t&2){l(4);let e=Q(18);T("ngTemplateOutlet",e);}}function jn(t,n){if(t&1&&C(0,Vn,12,6)(1,Wn,1,1,"ng-container"),t&2){let e=l(3);m(e.selectedFood()?1:0);}}function Hn(t,n){t&1&&p(0,"span",154);}function qn(t,n){if(t&1){let e=f();o(0,"div",146)(1,"p",158),s(2,35),i(),o(3,"div",178)(4,"label",179),s(5,36),i(),o(6,"input",180),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customName,_)||(c.customName=_),O(_);}),i()(),o(7,"div",181)(8,"div",178)(9,"label",182),s(10,37),i(),o(11,"input",183),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customCalories,_)||(c.customCalories=_),O(_);}),i()(),o(12,"div",178)(13,"label",184),s(14,38),i(),o(15,"input",185),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customServing,_)||(c.customServing=_),O(_);}),i()(),o(16,"div",178)(17,"label",186),s(18,39),i(),o(19,"input",187),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customProtein,_)||(c.customProtein=_),O(_);}),i()(),o(20,"div",178)(21,"label",188),s(22,40),i(),o(23,"input",189),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customCarbs,_)||(c.customCarbs=_),O(_);}),i()(),o(24,"div",178)(25,"label",190),s(26,41),i(),o(27,"input",191),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customFat,_)||(c.customFat=_),O(_);}),i()(),o(28,"div",178)(29,"label",192),s(30,42),i(),o(31,"input",193),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.customFiber,_)||(c.customFiber=_),O(_);}),i()()(),o(32,"div",178)(33,"label",194),s(34,43),i(),o(35,"input",195),N("ngModelChange",function(_){g(e);let c=l(3);return h(c.entryNotes,_)||(c.entryNotes=_),O(_);}),i()(),o(36,"div",196)(37,"button",132),u("click",function(){g(e);let _=l(3);return O(_.closeAddPanel());}),s(38,44),i(),o(39,"button",197),u("click",function(){g(e);let _=l(3);return O(_.confirmAddCustom());}),C(40,Hn,1,0,"span",154),o(41,"span"),s(42,45),i()()()();}if(t&2){let e=l(3);r(6),S("ngModel",e.customName),r(5),S("ngModel",e.customCalories),r(4),S("ngModel",e.customServing),r(4),S("ngModel",e.customProtein),r(4),S("ngModel",e.customCarbs),r(4),S("ngModel",e.customFat),r(4),S("ngModel",e.customFiber),r(4),S("ngModel",e.entryNotes),r(4),T("disabled",e.saving()),r(),m(e.saving()?40:-1);}}function Kn(t,n){if(t&1){let e=f();o(0,"div",110)(1,"div",136)(2,"h2"),s(3,19),i(),o(4,"button",137),u("click",function(){g(e);let _=l(2);return O(_.closeAddPanel());}),E(),o(5,"svg",114),p(6,"path",138),i()()(),A(),o(7,"div",139)(8,"span",140),s(9,20),i(),o(10,"div",141),v(11,Cn,2,3,"button",142,j),i()(),o(13,"div",143)(14,"button",144),u("click",function(){g(e);let _=l(2);return O(_.setTab("search"));}),s(15,21),i(),o(16,"button",144),u("click",function(){g(e);let _=l(2);return O(_.setTab("barcode"));}),s(17,22),i(),o(18,"button",144),u("click",function(){g(e);let _=l(2);return O(_.setTab("custom"));}),s(19,23),i()(),C(20,pn,6,1,"div",145),C(21,An,2,1),C(22,jn,2,1),C(23,qn,43,10,"div",146),i();}if(t&2){let e=l(2);r(11),G(e.mealOrder),r(3),k("active",e.activeTab()==="search"),r(2),k("active",e.activeTab()==="barcode"),r(2),k("active",e.activeTab()==="custom"),r(2),m(e.activeTab()==="search"||e.activeTab()==="barcode"?20:-1),r(),m(e.activeTab()==="search"?21:-1),r(),m(e.activeTab()==="barcode"?22:-1),r(),m(e.activeTab()==="custom"?23:-1);}}function Qn(t,n){if(t&1&&(o(0,"option",150),P(1),i()),t&2){let e=n.$implicit,a=l(7);T("value",e),r(),L(a.mealLabel(e));}}function Yn(t,n){t&1&&p(0,"span",154);}function Zn(t,n){if(t&1){let e=f();o(0,"div",205)(1,"div",207),P(2),i(),o(3,"div",208)(4,"div",178)(5,"label"),s(6,47),i(),o(7,"input",209),N("ngModelChange",function(_){g(e);let c=l(6);return h(c.editServing,_)||(c.editServing=_),O(_);}),i()(),o(8,"div",178)(9,"label"),s(10,48),i(),o(11,"select",210),N("ngModelChange",function(_){g(e);let c=l(6);return h(c.editMealType,_)||(c.editMealType=_),O(_);}),v(12,Qn,2,2,"option",150,j),i()()(),o(14,"div",178)(15,"label"),s(16,49),i(),o(17,"input",211),N("ngModelChange",function(_){g(e);let c=l(6);return h(c.editNotes,_)||(c.editNotes=_),O(_);}),i()(),o(18,"div",212)(19,"button",213),u("click",function(){g(e);let _=l(6);return O(_.cancelEdit());}),s(20,50),i(),o(21,"button",214),u("click",function(){g(e);let _=l(6);return O(_.saveEdit());}),C(22,Yn,1,0,"span",154),o(23,"span"),s(24,51),i()()()();}if(t&2){let e=l().$implicit,a=l(5);r(2),L(e.foodName),r(3),W("for","editServing-"+e.id),r(2),T("id","editServing-"+e.id),S("ngModel",a.editServing),r(2),W("for","editMeal-"+e.id),r(2),T("id","editMeal-"+e.id),S("ngModel",a.editMealType),r(),G(a.mealOrder),r(3),W("for","editNotes-"+e.id),r(2),T("id","editNotes-"+e.id),S("ngModel",a.editNotes),r(4),T("disabled",a.saving()),r(),m(a.saving()?22:-1);}}function Jn(t,n){if(t&1){let e=f();o(0,"img",228),u("error",function(){g(e);let _=l(2).$implicit,c=l(5);return O(c.onEntryImgError(_.id));}),i();}if(t&2){let e=l(2).$implicit;T("src",e.imageUrl,w)("alt",e.foodName);}}function eo(t,n){t&1&&(E(),o(0,"svg",170),p(1,"path",171),i());}function to(t,n){t&1&&(o(0,"span",218),s(1,56),i());}function no(t,n){if(t&1&&(o(0,"span",222),P(1),i()),t&2){let e=l(2).$implicit;r(),L(e.notes);}}function oo(t,n){if(t&1){let e=f();o(0,"div",206)(1,"div",215),C(2,Jn,1,2,"img",162)(3,eo,2,0,":svg:svg",170),i(),o(4,"div",216)(5,"span",217),P(6),C(7,to,2,0,"span",218),i(),o(8,"span",219),P(9),F(10,"number"),o(11,"span",220),P(12,"\xB7"),i(),P(13),F(14,"number"),o(15,"span"),s(16,52),i()(),o(17,"span",221)(18,"span"),s(19,53),F(20,"number"),i(),o(21,"span"),s(22,54),F(23,"number"),i(),o(24,"span"),s(25,55),F(26,"number"),i()(),C(27,no,2,1,"span",222),i(),o(28,"div",223)(29,"button",224),u("click",function(){g(e);let _=l().$implicit,c=l(5);return O(c.startEdit(_));}),E(),o(30,"svg",170),p(31,"path",225),i()(),A(),o(32,"button",226),u("click",function(){g(e);let _=l().$implicit,c=l(5);return O(c.confirmDelete(_));}),E(),o(33,"svg",170),p(34,"path",227),i()()()();}if(t&2){let e=l().$implicit,a=l(5);r(2),m(e.imageUrl&&!a.failedEntryImages().has(e.id)?2:3),r(4),b(" ",e.foodName," "),r(),m(e.isCustom?7:-1),r(2),b(" ",x(10,9,e.servingGrams,"1.0-0")," g "),r(4),b(" ",x(14,12,e.calories,"1.0-0")," "),r(7),U(x(20,15,e.protein,"1.0-0")),z(19),r(3),U(x(23,18,e.carbs,"1.0-0")),z(22),r(3),U(x(26,21,e.fat,"1.0-0")),z(25),r(),m(e.notes?27:-1);}}function io(t,n){if(t&1&&(o(0,"div",204),C(1,Zn,25,12,"div",205)(2,oo,35,24,"div",206),i()),t&2){let e,a,_=n.$implicit,c=l(5);k("editing",((e=c.editingEntry())==null?null:e.id)===_.id),r(),m(((a=c.editingEntry())==null?null:a.id)===_.id?1:2);}}function _o(t,n){if(t&1&&(o(0,"div",198)(1,"div",199)(2,"h3",200),P(3),i(),o(4,"span",201),P(5),F(6,"number"),o(7,"span"),s(8,46),i()()(),o(9,"div",202),v(10,io,3,3,"div",203,Jt),i()()),t&2){let e=l().$implicit,a=l(3);r(3),L(a.mealLabel(e)),r(2),b("",x(6,2,a.mealCalories(e),"1.0-0")," "),r(5),G(a.entriesForMeal(e));}}function ao(t,n){if(t&1&&C(0,_o,12,5,"div",198),t&2){let e=n.$implicit,a=l(3);
1m(a.entriesForMeal(e).length>0?0:-1);}}function ro(t,n){if(t&1&&(o(0,"div",111),v(1,ao,1,1,null,null,j),i()),t&2){let e=l(2);r(),G(e.mealOrder);}}function lo(t,n){t&1&&(o(0,"div",112)(1,"div",229),E(),o(2,"svg",170),p(3,"path",230),i()(),A(),o(4,"h3"),s(5,57),i(),o(6,"p"),s(7,58),i()());}function co(t,n){t&1&&(o(0,"h3"),s(1,59),i(),o(2,"p"),s(3,60),i());}function so(t,n){t&1&&(o(0,"h3"),s(1,61),i(),o(2,"p"),s(3,62),i());}function go(t,n){if(t&1&&(o(0,"a",113)(1,"div",231),E(),o(2,"svg",170),p(3,"path",232),i()(),A(),o(4,"div",233),C(5,co,4,0)(6,so,4,0),i(),E(),o(7,"svg",234),p(8,"path",83),i()()),t&2){let e=l(2);T("routerLink",e.dietitianLink()),r(5),m(e.isTenantLinked()?5:6);}}function Oo(t,n){if(t&1&&(o(0,"div",89)(1,"div",90)(2,"div",91)(3,"span",92),P(4),F(5,"number"),i(),o(6,"span",93),s(7,4),i(),C(8,_n,3,4,"span",94),i(),C(9,an,7,1,"div",95),i(),C(10,dn,8,5,"div",96)(11,cn,6,0,"button",97),o(12,"div",98)(13,"div",99)(14,"div",100)(15,"span",101),s(16,5),i(),o(17,"span",102),P(18),F(19,"number"),i()(),o(20,"div",103),p(21,"div",104),i()(),o(22,"div",99)(23,"div",100)(24,"span",101),s(25,6),i(),o(26,"span",102),P(27),F(28,"number"),i()(),o(29,"div",103),p(30,"div",105),i()(),o(31,"div",99)(32,"div",100)(33,"span",101),s(34,7),i(),o(35,"span",102),P(36),F(37,"number"),i()(),o(38,"div",103),p(39,"div",106),i()(),o(40,"div",99)(41,"div",100)(42,"span",101),s(43,8),i(),o(44,"span",102),P(45),F(46,"number"),i()(),o(47,"div",103),p(48,"div",107),i()()()(),C(49,gn,10,2,"div",108),C(50,On,5,0,"button",109),C(51,Kn,24,10,"div",110),C(52,ro,3,0,"div",111)(53,lo,8,0,"div",112),C(54,go,9,2,"a",113)),t&2){let e=l();r(4),L(x(5,21,e.totals().calories,"1.0-0")),r(4),m(e.calorieTarget()?8:-1),r(),m(e.streak()>0?9:-1),r(),m(e.targetProgress()!==null?10:11),r(8),b("",x(19,24,e.totals().protein,"1.0-0"),"g"),r(3),I("width",e.macroPct("protein"),"%"),r(6),b("",x(28,27,e.totals().carbs,"1.0-0"),"g"),r(3),I("width",e.macroPct("carbs"),"%"),r(6),b("",x(37,30,e.totals().fat,"1.0-0"),"g"),r(3),I("width",e.macroPct("fat"),"%"),r(6),b("",x(46,33,e.totals().fiber,"1.0-0"),"g"),r(3),I("width",e.macroPct("fiber"),"%"),r(),m(e.editingTarget()?49:-1),r(),m(!e.showAddPanel()&&!e.editingEntry()?50:-1),r(),m(e.showAddPanel()?51:-1),r(),m(e.hasAnyEntries()?52:53),r(2),m(e.featureFlags.consumerDirectory?54:-1);}}function Co(t,n){if(t&1&&p(0,"img",162),t&2){let e=l(),a=l(2);T("src",e.imageUrl,w)("alt",a.displayName(e));}}function mo(t,n){t&1&&(o(0,"div",163),E(),o(1,"svg",170),p(2,"path",171),i()());}function po(t,n){if(t&1&&(o(0,"span",166),P(1),i()),t&2){let e=l();r(),L(e.brands);}}function uo(t,n){if(t&1&&(o(0,"span",167)(1,"span"),P(2),o(3,"span"),s(4,68),i()()()),t&2){let e=l(),a=l(2);r(2),b("",a.kcalPer100(e)," ");}}function Po(t,n){t&1&&p(0,"span",154);}function Mo(t,n){if(t&1){let e=f();o(0,"div",235)(1,"button",236),u("click",function(){g(e);let _=l(2);return O(_.clearSelectedFood());}),E(),o(2,"svg",77),p(3,"path",78),i(),A(),o(4,"span"),s(5,63),i()(),o(6,"div",237)(7,"div",161),C(8,Co,1,2,"img",162)(9,mo,3,0,"div",163),i(),o(10,"div",238)(11,"span",165),P(12),i(),C(13,po,2,1,"span",166),C(14,uo,5,1,"span",167),i()(),o(15,"div",178)(16,"label",239),s(17,64),i(),o(18,"input",240),N("ngModelChange",function(_){g(e);let c=l(2);return h(c.servingGrams,_)||(c.servingGrams=_),O(_);}),i()(),o(19,"div",178)(20,"label",241),s(21,65),i(),o(22,"input",242),N("ngModelChange",function(_){g(e);let c=l(2);return h(c.entryNotes,_)||(c.entryNotes=_),O(_);}),i()(),o(23,"div",196)(24,"button",132),u("click",function(){g(e);let _=l(2);return O(_.closeAddPanel());}),s(25,66),i(),o(26,"button",197),u("click",function(){g(e);let _=l(2);return O(_.confirmAddSelected());}),C(27,Po,1,0,"span",154),o(28,"span"),s(29,67),i()()()();}if(t&2){let e=n,a=l(2);r(8),m(e.imageUrl?8:9),r(4),L(a.displayName(e)),r(),m(e.brands?13:-1),r(),m(a.kcalPer100(e)!==null?14:-1),r(4),S("ngModel",a.servingGrams),r(4),S("ngModel",a.entryNotes),r(4),T("disabled",a.saving()),r(),m(a.saving()?27:-1);}}function fo(t,n){if(t&1&&C(0,Mo,30,8,"div",235),t&2){let e,a=l();m((e=a.selectedFood())?0:-1,e);}}function To(t,n){t&1&&p(0,"span",154);}function Eo(t,n){if(t&1){let e=f();o(0,"div",243),u("click",function(){g(e);let _=l();return O(_.cancelDelete());}),o(1,"div",244),u("click",function(_){return g(e),O(_.stopPropagation());}),o(2,"h3"),s(3,69),i(),o(4,"p"),s(5,70),i(),o(6,"div",245)(7,"button",132),u("click",function(){g(e);let _=l();return O(_.cancelDelete());}),s(8,71),i(),o(9,"button",246),u("click",function(){g(e);let _=l();return O(_.deleteEntry());}),C(10,To,1,0,"span",154),o(11,"span"),s(12,72),i()()()()();}if(t&2){let e=l();r(9),T("disabled",e.deleting()),r(),m(e.deleting()?10:-1);}}var So=["breakfast","lunch","dinner","snack"],Zt=class t{foodLogService=R(qt);searchClient=R(H);barcodeScan=R(Qt);portalService=R(Ht);notificationService=R(yt);geoLocation=R(jt);localeId=R(ht);TARGET_STORAGE_KEY="vitena_food_calorie_target";loading=M(!0);selectedDate=M(this.todayIso());day=M(null);streak=M(0);calorieTarget=M(this.loadTarget());editingTarget=M(!1);targetInput=null;showAddPanel=M(!1);activeTab=M("search");addMealType=M("breakfast");
1saving=M(!1);country=M("ES");countries=Z;searchQuery="";searching=M(!1);searchResults=M([]);searchPerformed=M(!1);barcodeInput="";barcodeLooking=M(!1);barcodeResult=M(null);barcodeNotFound=M(!1);selectedFood=M(null);servingGrams=100;customName="";customCalories=null;customProtein=null;customCarbs=null;customFat=null;customFiber=null;customServing=100;entryNotes="";editingEntry=M(null);editServing=null;editMealType="breakfast";editNotes="";showDeleteModal=M(!1);entryToDelete=M(null);deleting=M(!1);scanAvailable=this.barcodeScan.isScanSupported();showScanner=M(!1);featureFlags=Wt;isTenantLinked=D(()=>(this.portalService.currentUser()?.providers?.length??0)>0);mealOrder=So;todayMax=this.todayIso();totals=D(()=>this.day()?.totals??{calories:0,protein:0,carbs:0,fat:0,fiber:0});targetProgress=D(()=>{let n=this.calorieTarget();return!n||n<=0?null:Math.min(100,Math.round(this.totals().calories/n*100));});targetOver=D(()=>{let n=this.calorieTarget();return!!n&&this.totals().calories>n;});macroPct(n){let e=this.totals();if(n==="fiber")return Math.min(100,Math.round((e.fiber??0)/30*100));let a=(e.protein??0)*4,_=(e.carbs??0)*4,c=(e.fat??0)*9,y=a+_+c;return y<=0?0:Math.round((n==="protein"?a:n==="carbs"?_:c)/y*100);}ngOnInit(){this.geoLocation.getViewerCountryCode().subscribe(n=>{n&&Z.some(e=>e.code===n)&&this.country.set(n);}),this.loadDay();}loadDay(){this.loading.set(!0);let n=this.selectedDate();this.foodLogService.getDay(n).subscribe({next:e=>{this.day.set(e),this.loading.set(!1),n===this.todayIso()&&this.computeStreak(e);},error:()=>{this.day.set(null),this.loading.set(!1);}});}onDateChange(n){n&&(this.selectedDate.set(n),this.closeAddPanel(),this.cancelEdit(),this.loadDay());}goToToday(){this.onDateChange(this.todayIso());}shiftDay(n){let e=new Date(this.selectedDate()+"T00:00:00");e.setDate(e.getDate()+n),this.onDateChange(this.toIso(e));}isToday=D(()=>this.selectedDate()===this.todayIso());streakProbed=!1;async computeStreak(n){if((n.items?.length??0)===0){this.streak.set(0),this.streakProbed=!1;return;}if(this.streakProbed)return;let e=1,a=30;for(let _=1;_<=a;_++){let c=new Date();c.setDate(c.getDate()-_);let y=this.toIso(c);try{if(((await new Promise(($,V)=>{this.foodLogService.getDay(y).subscribe({next:$,error:V});})).items?.length??0)>0)e++;else break;}catch{break;}}this.streak.set(e),this.streakProbed=!0;}entriesForMeal(n){return(this.day()?.items??[]).filter(e=>(e.mealType??"snack")===n);}hasAnyEntries=D(()=>(this.day()?.items?.length??0)>0);mealCalories(n){return this.entriesForMeal(n).reduce((e,a)=>e+(a.calories??0),0);}mealLabel(n){switch(n){case"breakfast":return"Breakfast";case"lunch":return"Lunch";case"dinner":return"Dinner";case"snack":return"Snacks";}}loadTarget(){try{let n=localStorage.getItem(this.TARGET_STORAGE_KEY);if(!n)return null;let e=parseInt(n,10);return Number.isFinite(e)&&e>0?e:null;}catch{return null;}}openTargetEditor(){this.targetInput=this.calorieTarget(),this.editingTarget.set(!0);}saveTarget(){let n=this.targetInput;if(n&&n>0){this.calorieTarget.set(Math.round(n));try{localStorage.setItem(this.TARGET_STORAGE_KEY,String(Math.round(n)));}catch{}}else{this.calorieTarget.set(null);try{localStorage.removeItem(this.TARGET_STORAGE_KEY);}catch{}}this.editingTarget.set(!1);}clearTarget(){this.calorieTarget.set(null),this.targetInput=null;try{localStorage.removeItem(this.TARGET_STORAGE_KEY);}catch{}this.editingTarget.set(!1);}cancelTarget(){this.editingTarget.set(!1);}openAddPanel(n){this.resetAddPanel(),n&&this.addMealType.set(n),this.showAddPanel.set(!0);}closeAddPanel(){this.showAddPanel.set(!1),this.resetAddPanel();}resetAddPanel(){this.activeTab.set("search"),this.addMealType.set("breakfast"),this.searchQuery="",this.searchResults.set([]),this.searchPerformed.set(!1),this.barcodeInput="",this.barcodeResult.set(null),this.barcodeNotFound.set(!1),this.selectedFood.set(null),this.servingGrams=100,this.customName="",this.customCalories=null,this.customProtein=null,this.customCarbs=null,this.customFat=null,this.customFiber=null,this.customServing=100,this.entryNotes="";}setTab(n){this.activeTab.set(n),this.selectedFood.set(null);}onCountryChange(n){this.country.set(n);}async runSearch(){let n=this.searchQuery.trim();if(n.length<2){this.notificationService.showWarning("Type at least 2 characters to search");return;}this.searching.set(!0),this.searchPerformed.set(!0),this.selectedFood.set(null);try{let e=await this.searchClient.search(n,this.country());this.searchResults.set(e.items??[]);}catch{this.searchResults.set([]),this.notificationService.showError("Search failed. Please try again.");}finally{this.searching.set(!1);}}
1async lookupBarcode(){let n=this.barcodeInput.trim();if(n){this.barcodeLooking.set(!0),this.barcodeNotFound.set(!1),this.barcodeResult.set(null),this.selectedFood.set(null);try{let e=await this.searchClient.getByBarcode(n,this.country());e?this.barcodeResult.set(e):this.barcodeNotFound.set(!0);}catch{this.notificationService.showError("Barcode lookup failed. Please try again.");}finally{this.barcodeLooking.set(!1);}}}openScanner(){this.showScanner.set(!0);}async onScanned(n){this.showScanner.set(!1),this.barcodeInput=(n??"").trim(),this.barcodeInput&&(await this.lookupBarcode());}pickFood(n){this.selectedFood.set(n),this.servingGrams=100;}clearSelectedFood(){this.selectedFood.set(null);}displayName(n){return this.searchClient.getDisplayName(n);}failedEntryImages=M(new Set());onEntryImgError(n){this.failedEntryImages.update(e=>{let a=new Set(e);return a.add(n),a;});}kcalPer100(n){let e=n.nutrients?.energyKcal;return e==null?null:Math.round(e);}confirmAddSelected(){let n=this.selectedFood();if(!n)return;let e=this.servingGrams;if(!e||e<=0){this.notificationService.showWarning("Please enter a serving size in grams");return;}let a=Kt({id:n.id,foodSource:n.foodSource,displayName:this.displayName(n),nutrients:n.nutrients,imageUrl:n.imageUrl},e,this.addMealType(),this.selectedDate(),this.entryNotes);this.submitCreate(a);}confirmAddCustom(){let n=this.customName.trim();if(!n){this.notificationService.showWarning("Please enter a food name");return;}let e=this.customServing;if(!e||e<=0){this.notificationService.showWarning("Please enter a serving size in grams");return;}if(this.customCalories==null||this.customCalories<0){this.notificationService.showWarning("Please enter calories per 100g");return;}let a={logDate:this.selectedDate(),mealType:this.addMealType(),servingGrams:e,isCustom:!0,foodName:n,caloriesPer100g:this.customCalories,proteinPer100g:this.numOrZero(this.customProtein),carbsPer100g:this.numOrZero(this.customCarbs),fatPer100g:this.numOrZero(this.customFat),fiberPer100g:this.customFiber==null?void 0:this.customFiber,notes:this.entryNotes.trim()||void 0};this.submitCreate(a);}submitCreate(n){this.saving()||(this.saving.set(!0),this.foodLogService.create(n).subscribe({next:()=>{this.saving.set(!1),this.notificationService.showSuccess("Added to your diary"),this.closeAddPanel(),this.loadDay();},error:e=>{this.saving.set(!1),this.notificationService.showError(e?.message||"Error adding the food entry");}}));}startEdit(n){this.editingEntry.set(n),this.editServing=n.servingGrams,this.editMealType=n.mealType??"snack",this.editNotes=n.notes??"";}cancelEdit(){this.editingEntry.set(null);}saveEdit(){let n=this.editingEntry();if(!n||this.saving())return;if(!this.editServing||this.editServing<=0){this.notificationService.showWarning("Please enter a serving size in grams");return;}this.saving.set(!0);let e={servingGrams:this.editServing,mealType:this.editMealType,notes:this.editNotes.trim()||void 0};this.foodLogService.update(n.id,e).subscribe({next:()=>{this.saving.set(!1),this.editingEntry.set(null),this.loadDay();},error:a=>{this.saving.set(!1),this.notificationService.showError(a?.message||"Error updating the food entry");}});}confirmDelete(n){this.entryToDelete.set(n),this.showDeleteModal.set(!0);}cancelDelete(){this.showDeleteModal.set(!1),this.entryToDelete.set(null);}deleteEntry(){let n=this.entryToDelete();!n||this.deleting()||(this.deleting.set(!0),this.foodLogService.delete(n.id).subscribe({next:()=>{this.deleting.set(!1),this.showDeleteModal.set(!1),this.entryToDelete.set(null),this.loadDay();},error:e=>{this.deleting.set(!1),this.notificationService.showError(e?.message||"Error deleting the food entry");}}));}dietitianLink(){return"/find";}numOrZero(n){return n==null?0:Number(n);}todayIso(){return this.toIso(new Date());}toIso(n){let e=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),_=String(n.getDate()).padStart(2,"0");return`${e}-${a}-${_}`;}prettyDate(){return new Date(this.selectedDate()+"T00:00:00").toLocaleDateString(this.localeId,{weekday:"long",day:"numeric",month:"long"});}static ɵfac=function(e){return new(e||t)();};static ɵcmp=Tt({type:t,selectors:[["app-portal-food-log"]],decls:20,vars:8,consts:()=>{let n;n="Previous day";let e;e="Next day";let a;a="Log what you eat and keep an eye on your daily calories and macros.";let _;_="Back to today";
1let c;c="Loading your diary...";let y;y="Consecutive days with at least one entry";let X;X="kcal";let $;$="Protein";let V;V="Carbs";let J;J="Fat";let ee;ee="Fiber";let te;te="day streak";let ne;ne="Edit goal";let oe;oe="Over your goal";let ie;ie=""+"\uFFFD0\uFFFD"+" kcal left";let _e;_e="Set a daily calorie goal";let ae;ae="e.g. 2000";let re;re="Daily calorie goal (kcal)";let le;le="Save";let de;de="Cancel";let ce;ce="Clear";let se;se="Add food";let ge;ge="Add food";let Oe;Oe="Meal";let Ce;Ce="Search";let me;me="Barcode";let pe;pe="Custom";let ue;ue="Country database";let Pe;Pe="Search foods, e.g. yogurt";let Me;Me="Search";let fe;fe="No foods found. Try a different term or country, or add it as a custom food.";let Te;Te="kcal/100g";let Ee;Ee="generic";let Se;Se="Search a packaged or generic food to add it. Results come from the Open Food Facts database for the selected country.";let he;he="Type or paste a barcode";let Ne;Ne="Look up";let Le;Le="Scan barcode";let be;be="No product found for that barcode. Try the search tab or add it as a custom food.";let Fe;Fe="kcal/100g";let xe;xe="Enter a product barcode to find it in the Open Food Facts database.";let ye;ye="e.g. Homemade lentil soup";let Ae;Ae="Anything to remember";let Re;Re="Enter the nutrition values printed on the label (per 100g).";let ve;ve="Food name";let Ge;Ge="Calories /100g";let ke;ke="Serving (g)";let De;De="Protein /100g";let Ie;Ie="Carbs /100g";let $e;$e="Fat /100g";let we;we="Fiber /100g";let Ue;Ue="Notes (optional)";let ze;ze="Cancel";let Xe;Xe="Add to diary";let Ve;Ve="kcal";let Be;Be="Anything to remember";let We;We="Serving (g)";let je;je="Meal";let He;He="Notes (optional)";let qe;qe="Cancel";let Ke;Ke="Save";let Qe;Qe="Edit";let Ye;Ye="Delete";let Ze;Ze="kcal";let Je;Je="P "+"\uFFFD0\uFFFD"+"g";let et;et="C "+"\uFFFD0\uFFFD"+"g";let tt;tt="F "+"\uFFFD0\uFFFD"+"g";let nt;nt="custom";let ot;ot="Nothing logged yet";let it;it="Add your first food for this day to start tracking calories and macros.";let _t;_t="Share with your dietitian";let at;at="Bring your food diary to your next session for personalized guidance.";let rt;rt="Want expert feedback on your diet?";let lt;lt="Connect with a registered dietitian who can review your habits and help you reach your goals.";let dt;dt="Anything to remember";let ct;ct="Back to results";let st;st="Serving size (g)";let gt;gt="Notes (optional)";let Ot;Ot="Cancel";let Ct;Ct="Add to diary";let mt;mt="kcal/100g";let pt;pt="Remove this entry?";let ut;ut="This will remove the food from your diary for this day.";let Pt;Pt="Cancel";let Mt;return Mt="Delete",[["servingStep",""],a,_,c,X,$,V,J,ee,te,ne,oe,ie,_e,re,le,de,ce,se,ge,Oe,Ce,me,pe,ue,Me,fe,Te,Ee,Se,Ne,Le,be,Fe,xe,Re,ve,Ge,ke,De,Ie,$e,we,Ue,ze,Xe,Ve,We,je,He,qe,Ke,Ze,Je,et,tt,nt,ot,it,_t,at,rt,lt,ct,st,gt,Ot,Ct,mt,pt,ut,Pt,Mt,[1,"food-log-container"],[1,"page-subtitle"],[1,"day-bar"],["type","button","title",n,"aria-label","Previous day",1,"day-nav",3,"click"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke-width","2","stroke","currentColor"],["stroke-linecap","round","stroke-linejoin","round","d","M15.75 19.5L8.25 12l7.5-7.5"],[1,"day-center"],[1,"day-pretty"],["type","date",1,"day-input",3,"ngModelChange","ngModel","max"],["type","button","title",e,"aria-label","Next day",1,"day-nav",3,"click","disabled"],["stroke-linecap","round","stroke-linejoin","round","d","M8.25 4.5l7.5 7.5-7.5 7.5"],["type","button",1,"today-link"],[1,"loading-card"],[1,"modal-overlay"],["type","button",1,"today-link",3,"click"],[1,"spinner"],[1,"totals-card"],[1,"totals-top"],[1,"calories-block"],[1,"calories-value"],[1,"calories-unit"],[1,"calories-target"],["title",y,1,"streak-badge"],[1,"target-progress"],["type","button",1,"set-target-btn"],[1,"macro-bars"],[1,"macro-bar"],[1,"macro-bar-head"],[1,"macro-name"],[1,"macro-grams"],[1,"macro-track"],[1,"macro-fill","protein"],[1,"macro-fill","carbs"],[1,"macro-fill","fat"],[1,"macro-fill","fiber"],[1,"target-editor"],["type","button",1,"btn-add-food"],[1,"add-panel"],[1,"meals"],[1,"empty-day"],[1,"dietitian-bridge",3,"routerLink"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill","currentColor"],["d","M12 23c-3.866 0-7-3.134-7-7 0-2.42 1.35-4.36 2.5-5.9C8.6 8.6 9.5 7.5 9.5 6c0-.5.5-1 1-1 .3 0 .6.15.78.4C12.5 7 15 9.5 15 12c.6-.6 1-1.5 1-2.5.4.2 3 2.4 3 6.5 0 3.866-3.134 7-7 7z"],[1,"streak-count"],[1,"streak-label"],[1,"target-track"],[1,"target-fill"],[1,"target-meta"],[1,"target-over-label"],["type","button",1,"target-edit-link",3,"click"],["type","button",1,"set-target-btn",3,"click"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke-width","1.8","stroke","currentColor"],["stroke-linecap","round","stroke-linejoin","round","d","M12 6v6l4 2"],["cx","12","cy","12","r","9"],["for","targetInput"],[1,"target-editor-row"],["id","targetInput","type","number","min","500","max","10000","step","50","placeholder",ae,1,"form-input",3,"ngModelChange","ngModel"],["type","button",1,"btn-save",3,"click"],["type","button",1,"btn-ghost"],["type","button",1,"btn-cancel",3,"click"],["type","button",1,"btn-ghost",3,"click"],["type","button",1,"btn-add-food",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M12 4.5v15m7.5-7.5h-15"],[1,"add-panel-header"],["type","button","aria-label","Close",1,"close-btn",3,"click"],["fill-rule","evenodd","d","M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z","clip-rule","evenodd"],[1,"meal-select"],[1,"meal-select-label"],[1,"meal-chips"],["type","button",1,"meal-chip",3,"active"],[1,"tabs"],["type","button",1,"tab",3,"click"],[1,"country-row"],[1,"custom-form"],["type","button",1,"meal-chip",3,"click"],["for","foodCountry"],["id","foodCountry",1,"form-input","country-select",3,"ngModelChange","ngModel"],[3,"value"],[1,"search-row",3,"ngSubmit"],["type","text","name","searchQuery","placeholder",Pe,"autocomplete","off",1,"form-input",3,"ngModelChange","ngModel"],["type","submit",1,"btn-save",3,"disabled"],[1,"spinner","sm"],[1,"inline-loading"],[1,"empty-results"],[1,"results-list"],[1,"hint-note"],["type","button",1,"result-row"],["type","button",1,"result-row",3,"click"],[1,"result-thumb"],["loading","lazy",3,"src","alt"],[1,"thumb
1-placeholder"],[1,"result-body"],[1,"result-name"],[1,"result-brand"],[1,"result-macros"],[1,"source-badge","generic"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke-width","2","stroke","currentColor",1,"result-chevron"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke-width","1.5","stroke","currentColor"],["stroke-linecap","round","stroke-linejoin","round","d","M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909M3.75 19.5h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5z"],[4,"ngTemplateOutlet"],["type","text","name","barcodeInput","inputmode","numeric","placeholder",he,"autocomplete","off",1,"form-input",3,"ngModelChange","ngModel"],["type","button",1,"btn-scan"],["type","button",1,"btn-scan",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M3.75 4.875c0-.621.504-1.125 1.125-1.125h2.25M3.75 4.875V7.5m16.5-2.625c0-.621-.504-1.125-1.125-1.125h-2.25m3.375 1.125V7.5m0 9v2.625c0 .621-.504 1.125-1.125 1.125h-2.25m3.375-3.75H3.75m16.5 0V16.5m-16.5 0v2.625c0 .621.504 1.125 1.125 1.125h2.25M7.5 12h9"],[3,"scanned","closed"],[1,"form-group"],["for","customName"],["id","customName","type","text","name","customName","placeholder",ye,1,"form-input",3,"ngModelChange","ngModel"],[1,"form-grid"],["for","customCalories"],["id","customCalories","type","number","name","customCalories","min","0","step","1","placeholder","kcal",1,"form-input",3,"ngModelChange","ngModel"],["for","customServing"],["id","customServing","type","number","name","customServing","min","1","step","1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","customProtein"],["id","customProtein","type","number","name","customProtein","min","0","step","0.1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","customCarbs"],["id","customCarbs","type","number","name","customCarbs","min","0","step","0.1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","customFat"],["id","customFat","type","number","name","customFat","min","0","step","0.1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","customFiber"],["id","customFiber","type","number","name","customFiber","min","0","step","0.1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","customNotes"],["id","customNotes","type","text","name","customNotes","placeholder",Ae,1,"form-input",3,"ngModelChange","ngModel"],[1,"panel-actions"],["type","button",1,"btn-save",3,"click","disabled"],[1,"meal-group"],[1,"meal-group-head"],[1,"meal-title"],[1,"meal-kcal"],[1,"entry-list"],[1,"entry-card",3,"editing"],[1,"entry-card"],[1,"entry-edit"],[1,"entry-main"],[1,"entry-edit-name"],[1,"entry-edit-grid"],["type","number","min","1","step","1",1,"form-input",3,"ngModelChange","id","ngModel"],[1,"form-input",3,"ngModelChange","id","ngModel"],["type","text","placeholder",Be,1,"form-input",3,"ngModelChange","id","ngModel"],[1,"entry-edit-actions"],["type","button",1,"btn-cancel","sm",3,"click"],["type","button",1,"btn-save","sm",3,"click","disabled"],[1,"entry-thumb"],[1,"entry-info"],[1,"entry-name"],[1,"entry-tag"],[1,"entry-sub"],[1,"entry-dot"],[1,"entry-macros"],[1,"entry-notes"],[1,"entry-actions"],["type","button","title",Qe,1,"icon-btn",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10"],["type","button","title",Ye,1,"icon-btn","danger",3,"click"],["stroke-linecap","round","stroke-linejoin","round","d","M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"],["loading","lazy",3,"error","src","alt"],[1,"empty-icon"],["stroke-linecap","round","stroke-linejoin","round","d","M21 11.25v8.25a1.5 1.5 0 01-1.5 1.5H5.25a1.5 1.5 0 01-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 109.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1114.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z"],[1,"bridge-icon"],["stroke-linecap","round","stroke-linejoin","round","d","M7.217 10.9
107a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"],[1,"bridge-body"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","stroke-width","2","stroke","currentColor",1,"bridge-arrow"],[1,"serving-step"],["type","button",1,"back-link",3,"click"],[1,"serving-food"],[1,"serving-food-info"],["for","servingGrams"],["id","servingGrams","type","number","min","1","step","1","placeholder","g",1,"form-input",3,"ngModelChange","ngModel"],["for","pickNotes"],["id","pickNotes","type","text","placeholder",dt,1,"form-input",3,"ngModelChange","ngModel"],[1,"modal-overlay",3,"click"],[1,"modal-content",3,"click"],[1,"modal-actions"],["type","button",1,"btn-delete",3,"click","disabled"]];},template:function(e,a){if(e&1){let _=f();o(0,"div",73)(1,"p",74),s(2,1),i(),o(3,"div",75)(4,"button",76),u("click",function(){return g(_),O(a.shiftDay(-1));}),E(),o(5,"svg",77),p(6,"path",78),i()(),A(),o(7,"div",79)(8,"span",80),P(9),i(),o(10,"input",81),u("ngModelChange",function(y){return g(_),O(a.onDateChange(y));}),i()(),o(11,"button",82),u("click",function(){return g(_),O(a.shiftDay(1));}),E(),o(12,"svg",77),p(13,"path",83),i()()(),C(14,nn,2,0,"button",84),C(15,on,4,0,"div",85),C(16,Oo,55,36),i(),B(17,fo,1,1,"ng-template",null,0,St),C(19,Eo,13,2,"div",86);}e&2&&(r(9),L(a.prettyDate()),r(),T("ngModel",a.selectedDate())("max",a.todayMax),r(),T("disabled",a.isToday()),r(3),m(a.isToday()?-1:14),r(),m(a.loading()?15:-1),r(),m(a.loading()?-1:16),r(3),m(a.showDeleteModal()?19:-1));},dependencies:[bt,Nt,Bt,It,Ut,zt,Rt,$t,wt,vt,Gt,Vt,Xt,Dt,kt,xt,Yt,Lt],styles:['.food-log-container[_ngcontent-%COMP%]{max-width:800px;margin:0 auto;padding-top:8px}.page-subtitle[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:0 0 20px;line-height:1.5}.day-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;background:#fff;border-radius:12px;padding:10px 12px;box-shadow:0 1px 3px #0000001a;margin-bottom:8px}.day-nav[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.day-nav[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#03a791;color:#03a791;background:#03a7910d}.day-nav[_ngcontent-%COMP%]:disabled{opacity:.4;cursor:not-allowed}.day-nav[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:20px;height:20px}.day-center[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.day-pretty[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#1f2937;text-align:center}.day-input[_ngcontent-%COMP%]{border:none;background:transparent;color:#6b7280;font-size:13px;text-align:center;cursor:pointer;-webkit-appearance:none}.today-link[_ngcontent-%COMP%]{display:block;margin:0 auto 16px;background:none;border:none;color:#03a791;font-size:13px;font-weight:600;cursor:pointer}.today-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.loading-card[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:48px;text-align:center;box-shadow:0 1px 3px #0000001a}.inline-loading[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:24px}.spinner[_ngcontent-%COMP%]{width:36px;height:36px;border:3px solid #e5e7eb;border-top-color:#03a791;border-radius:50%;animation:_ngcontent-%COMP%_spin .9s linear infinite;margin:0 auto 12px}.inline-loading[_ngcontent-%COMP%] .spinner[_ngcontent-%COMP%]{margin:0}.spinner.sm[_ngcontent-%COMP%]{width:16px;height:16px;border-width:2px;border-color:#fff6;border-top-color:#fff;margin:0}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.loading-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;margin:0}.totals-card[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000001a;margin-bottom:16px}.totals-top[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.calories-block[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:6px}.calories-value[_ngcontent-%COMP%]{font-size:40px;font-weight:700;line-height:1;color:#03a791}.calories-unit[_ngcontent-%COMP%]{font-size:16px;font-weight:600;color:#6b7280}.calories-target[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:#9ca3af}.streak-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;background:#f59e0b1a;color:#d97706;border-radius:999px;padding:6px 12px}.streak-badge[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:18px;height:18px}.streak-count[_ngcontent-%COMP%]{font-size:16px;font-weight:700}.streak-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500}.target-progress[_ngcontent-%COMP%]{margin-top:16px}.target-track[_ngcontent-%COMP%]{height:10px;border-radius:5px;background:#f0f1f3;overflow:hidden}.target-fill[_ngcontent-%COMP%]{height:100%;background:linear-gradient(90deg,#03a791,#02d1ac);border-radius:5px;transition:width .3s ease}.target-fill.over[_ngcontent-%COMP%]{background:linear-gradient(90deg,#f59e0b,#ef4444)}.target-meta[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font-size:13px;color:#6b7280}.target-over-label[_ngcontent-%COMP%]{color:#dc2626;font-weight:600}.target-edit-link[_ngcontent-%COMP%]{background:none;border:none;color:#03a791;font-size:13px;font-weight:600;cursor:pointer;padding:0}.target-edit-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.set-target-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:none;border:none;color:#03a791;font-size:14px;font-weight:600;cursor:pointer;padding:0}.set-target-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:18px;height:18px}.set-target-btn[_ngcontent-%COMP%]:hover{text-decoration:underline}.macro-bars[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 20px;margin-top:20px;padding-top:16px;border-top:1px solid #f0f1f3}.macro-bar-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
1.macro-name[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#6b7280}.macro-grams[_ngcontent-%COMP%]{font-size:14px;font-weight:700;color:#1f2937}.macro-track[_ngcontent-%COMP%]{height:8px;border-radius:4px;background:#f0f1f3;overflow:hidden}.macro-fill[_ngcontent-%COMP%]{height:100%;border-radius:4px;transition:width .3s ease}.macro-fill.protein[_ngcontent-%COMP%]{background:#03a791}.macro-fill.carbs[_ngcontent-%COMP%]{background:#3b82f6}.macro-fill.fat[_ngcontent-%COMP%]{background:#f59e0b}.macro-fill.fiber[_ngcontent-%COMP%]{background:#8b5cf6}.target-editor[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:16px 20px;box-shadow:0 1px 3px #0000001a;margin-bottom:16px}.target-editor[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:8px}.target-editor-row[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.target-editor-row[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]{flex:1;min-width:120px}.form-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#374151}.form-input[_ngcontent-%COMP%]{padding:11px 13px;border:1px solid #d1d5db;border-radius:8px;font-size:16px;color:#1f2937;background:#fff;transition:border-color .2s,box-shadow .2s;-webkit-appearance:none;width:100%}.form-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#03a791;box-shadow:0 0 0 3px #03a7911a}.form-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}select.form-input[_ngcontent-%COMP%]{cursor:pointer}.btn-save[_ngcontent-%COMP%], .btn-cancel[_ngcontent-%COMP%], .btn-delete[_ngcontent-%COMP%], .btn-ghost[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;border:none;min-height:44px}.btn-save.sm[_ngcontent-%COMP%], .btn-cancel.sm[_ngcontent-%COMP%]{padding:8px 14px;font-size:14px;min-height:38px}.btn-save[_ngcontent-%COMP%]{background:linear-gradient(135deg,#03a791,#028576);color:#fff}.btn-save[_ngcontent-%COMP%]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #03a7914d}.btn-save[_ngcontent-%COMP%]:disabled{opacity:.7;cursor:not-allowed}.btn-cancel[_ngcontent-%COMP%]{background:#fff;color:#374151;border:1px solid #d1d5db}.btn-cancel[_ngcontent-%COMP%]:hover{background:#f9fafb}.btn-ghost[_ngcontent-%COMP%]{background:transparent;color:#6b7280;border:1px solid transparent}.btn-ghost[_ngcontent-%COMP%]:hover{color:#dc2626}.btn-delete[_ngcontent-%COMP%]{background:#dc2626;color:#fff}.btn-delete[_ngcontent-%COMP%]:hover:not(:disabled){background:#b91c1c}.btn-delete[_ngcontent-%COMP%]:disabled{opacity:.7;cursor:not-allowed}.btn-add-food[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px;border:2px dashed #d1d5db;border-radius:12px;background:transparent;color:#6b7280;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;margin-bottom:20px}.btn-add-food[_ngcontent-%COMP%]:hover{border-color:#03a791;color:#03a791;background:#03a7910a}.btn-add-food[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:20px;height:20px}.add-panel[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px}.add-panel-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.add-panel-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:17px;font-weight:600;color:#1f2937;margin:0}.close-btn[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:8px;border:none;background:transparent;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.close-btn[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#374151}.close-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:18px;height:18px}.meal-select[_ngcontent-%COMP%]{margin-bottom:16px}.meal-select-label[_ngcontent-%COMP%]{display:block;font-size:13px;font-weight:500;color:#374151;margin-bottom:8px}.meal-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.meal-chip[_ngcontent-%COMP%]{padding:8px 16px;border-radius:999px;border:1px solid #d1d5db;background:#fff;color:#6b7280;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.meal-chip[_ngcontent-%COMP%]:hover{border-color:#03a791;color:#03a791}.meal-chip.active[_ngcontent-%COMP%]{background:#03a791;border-color:#03a791;color:#fff}.tabs[_ngcontent-%COMP%]{display:flex;gap:4px;background:#f3f4f6;border-radius:10px;padding:4px;margin-bottom:16px}.tab[_ngcontent-%COMP%]{flex:1;padding:9px 12px;border:none;background:transparent;color:#6b7280;font-size:14px;font-weight:600;border-radius:7px;cursor:pointer;transition:all .2s}.tab[_ngcontent-%COMP%]:hover{color:#374151}.tab.active[_ngcontent-%COMP%]{background:#fff;color:#03a791;box-shadow:0 1px 2px #00000014}.country-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.country-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#374151}.search-row[_ngcontent-%COMP%]{display:flex;gap:8px;margin-bottom:12px}.search-row[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]{flex:1}.btn-scan[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px;border:1px solid #03A791;border-radius:8px;background:#03a7910f;color:#03a791;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;margin-bottom:12px}
1.btn-scan[_ngcontent-%COMP%]:hover{background:#03a7911f}.btn-scan[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:18px;height:18px}.hint-note[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;line-height:1.5;margin:8px 0 0}.results-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-top:4px}.result-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;cursor:pointer;transition:all .2s}.result-row[_ngcontent-%COMP%]:hover{border-color:#03a791;background:#03a79108}.result-thumb[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:8px;overflow:hidden;flex-shrink:0;background:#f3f4f6;display:flex;align-items:center;justify-content:center}.result-thumb[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.thumb-placeholder[_ngcontent-%COMP%]{color:#9ca3af}.thumb-placeholder[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:24px;height:24px}.result-body[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.result-name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis}.result-brand[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-macros[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12px;color:#4b5563;margin-top:2px}.source-badge[_ngcontent-%COMP%]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:4px}.source-badge.generic[_ngcontent-%COMP%]{background:#8b5cf61f;color:#7c3aed}.result-chevron[_ngcontent-%COMP%]{width:18px;height:18px;color:#9ca3af;flex-shrink:0}.empty-results[_ngcontent-%COMP%]{text-align:center;padding:20px;color:#6b7280;font-size:14px}.empty-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.serving-step[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px}.back-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:#6b7280;font-size:13px;font-weight:600;cursor:pointer;padding:0;align-self:flex-start}.back-link[_ngcontent-%COMP%]:hover{color:#03a791}.back-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:16px;height:16px}.serving-food[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;background:#03a7910a;border:1px solid rgba(3,167,145,.18);border-radius:10px;padding:12px}.serving-food-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.custom-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px}.form-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.panel-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.meals[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:20px;margin-bottom:24px}.meal-group-head[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.meal-title[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#1f2937;margin:0}.meal-kcal[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#6b7280}.entry-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.entry-card[_ngcontent-%COMP%]{background:#fff;border-radius:10px;box-shadow:0 1px 3px #00000014;padding:12px 14px;transition:box-shadow .2s}.entry-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a}.entry-card.editing[_ngcontent-%COMP%]{border-left:4px solid #03A791}.entry-main[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.entry-thumb[_ngcontent-%COMP%]{width:44px;height:44px;border-radius:8px;overflow:hidden;flex-shrink:0;background:#f3f4f6;display:flex;align-items:center;justify-content:center;color:#9ca3af}.entry-thumb[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.entry-thumb[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:22px;height:22px}.entry-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
1.entry-name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:#1f2937;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.entry-tag[_ngcontent-%COMP%]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:4px;background:#8b5cf61f;color:#7c3aed}.entry-sub[_ngcontent-%COMP%]{font-size:13px;color:#4b5563}.entry-dot[_ngcontent-%COMP%]{margin:0 4px;color:#d1d5db}.entry-macros[_ngcontent-%COMP%]{display:flex;gap:12px;font-size:12px;color:#6b7280;margin-top:2px}.entry-notes[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;font-style:italic;margin-top:4px}.entry-actions[_ngcontent-%COMP%]{display:flex;gap:6px;flex-shrink:0}.icon-btn[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.icon-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:17px;height:17px}.icon-btn[_ngcontent-%COMP%]:hover{background:#03a7911a;border-color:#03a791;color:#03a791}.icon-btn.danger[_ngcontent-%COMP%]:hover{background:#ef44441a;border-color:#dc2626;color:#dc2626}.entry-edit[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.entry-edit-name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;color:#1f2937}.entry-edit-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.entry-edit-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:10px}.empty-day[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:48px 24px;text-align:center;box-shadow:0 1px 3px #0000001a;margin-bottom:24px}.empty-icon[_ngcontent-%COMP%]{width:72px;height:72px;border-radius:50%;background:#f3f4f6;color:#9ca3af;display:flex;align-items:center;justify-content:center;margin:0 auto 20px}.empty-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:36px;height:36px}.empty-day[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:#1f2937;margin:0 0 8px}.empty-day[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0 auto;max-width:340px}.dietitian-bridge[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,#03a79114,#03a79108);border:1px solid rgba(3,167,145,.2);border-radius:12px;padding:18px 20px;text-decoration:none;color:inherit;transition:all .2s}.dietitian-bridge[_ngcontent-%COMP%]:hover{border-color:#03a791;box-shadow:0 4px 12px #03a7911f}.bridge-icon[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;background:#03a791;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.bridge-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:24px;height:24px}.bridge-body[_ngcontent-%COMP%]{flex:1;min-width:0}.bridge-body[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;font-weight:600;color:#1f2937;margin:0 0 4px}.bridge-body[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0;line-height:1.5}.bridge-arrow[_ngcontent-%COMP%]{width:22px;height:22px;color:#9ca3af;flex-shrink:0}.dietitian-bridge[_ngcontent-%COMP%]:hover .bridge-arrow[_ngcontent-%COMP%]{color:#03a791}.modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content[_ngcontent-%COMP%]{background:#fff;border-radius:16px;padding:24px;max-width:400px;width:100%;box-shadow:0 20px 40px #0003}.modal-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:#1f2937;margin:0 0 12px}.modal-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0 0 24px;line-height:1.5}.modal-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px}@media(max-width:640px){.calories-value[_ngcontent-%COMP%]{font-size:34px}.macro-bars[_ngcontent-%COMP%]{grid-template-columns:1fr}.form-grid[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}.entry-edit-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}[data-theme="dark"][_nghost-%COMP%] .page-subtitle[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .page-subtitle[_ngcontent-%COMP%]{color:#94a3b8}
1[data-theme="dark"][_nghost-%COMP%] .day-bar[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .day-bar[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .loading-card[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .loading-card[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .totals-card[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .totals-card[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .target-editor[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .target-editor[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .add-panel[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .add-panel[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .entry-card[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-card[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .empty-day[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .empty-day[_ngcontent-%COMP%]{background:#1e293b;box-shadow:0 1px 3px #0000004d}[data-theme="dark"][_nghost-%COMP%] .day-nav[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .day-nav[_ngcontent-%COMP%]{background:#1e293b;border-color:#475569;color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .day-nav[_ngcontent-%COMP%]:hover:not(:disabled), [data-theme="dark"] [_nghost-%COMP%] .day-nav[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#03a791;color:#03a791;background:#03a79114}[data-theme="dark"][_nghost-%COMP%] .day-pretty[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .day-pretty[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .day-input[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .day-input[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .loading-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .loading-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .spinner[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .spinner[_ngcontent-%COMP%]{border-color:#475569;border-top-color:#03a791}[data-theme="dark"][_nghost-%COMP%] .calories-unit[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .calories-unit[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .calories-target[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .calories-target[_ngcontent-%COMP%]{color:#64748b}[data-theme="dark"][_nghost-%COMP%] .target-track[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .target-track[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .macro-track[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .macro-track[_ngcontent-%COMP%]{background:#334155}[data-theme="dark"][_nghost-%COMP%] .target-meta[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .target-meta[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .macro-bars[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .macro-bars[_ngcontent-%COMP%]{border-top-color:#334155}[data-theme="dark"][_nghost-%COMP%] .macro-name[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .macro-name[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .macro-grams[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .macro-grams[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .target-editor[_ngcontent-%COMP%] label[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .target-editor[_ngcontent-%COMP%] label[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .meal-select-label[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .meal-select-label[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .country-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .country-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#e2e8f0}[data-theme="dark"][_nghost-%COMP%] .form-input[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .form-input[_ngcontent-%COMP%]{background:#334155;border-color:#475569;color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .form-input[_ngcontent-%COMP%]:focus, [data-theme="dark"] [_nghost-%COMP%] .form-input[_ngcontent-%COMP%]:focus{border-color:#03a791;box-shadow:0 0 0 3px #03a79133}[data-theme="dark"][_nghost-%COMP%] .form-input[_ngcontent-%COMP%]::placeholder, [data-theme="dark"] [_nghost-%COMP%] .form-input[_ngcontent-%COMP%]::placeholder{color:#cbd5e1}[data-theme="dark"][_nghost-%COMP%] .btn-cancel[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .btn-cancel[_ngcontent-%COMP%]{background:#334155;color:#e2e8f0;border-color:#475569}[data-theme="dark"][_nghost-%COMP%] .btn-cancel[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .btn-cancel[_ngcontent-%COMP%]:hover{background:#3e4c5e}[data-theme="dark"][_nghost-%COMP%] .btn-add-food[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .btn-add-food[_ngcontent-%COMP%]{border-color:#475569;color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .btn-add-food[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .btn-add-food[_ngcontent-%COMP%]:hover{border-color:#03a791;color:#03a791;background:#03a79114}[data-theme="dark"][_nghost-%COMP%] .add-panel-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .add-panel-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .close-btn[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .close-btn[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .close-btn[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .close-btn[_ngcontent-%COMP%]:hover{background:#334155;color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .meal-chip[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .meal-chip[_ngcontent-%COMP%]{background:#334155;border-color:#475569;color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .meal-chip[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .meal-chip[_ngcontent-%COMP%]:hover{border-color:#03a791;color:#03a791}[data-theme="dark"][_nghost-%COMP%] .meal-chip.active[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .meal-chip.active[_ngcontent-%COMP%]{background:#03a791;border-color:#03a791;color:#fff}[data-theme="dark"][_nghost-%COMP%] .tabs[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .tabs[_ngcontent-%COMP%]{background:#0f172a}[data-theme="dark"][_nghost-%COMP%] .tab[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .tab[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .tab.active[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .tab.active[_ngcontent-%COMP%]{background:#1e293b;color:#03a791}[data-theme="dark"][_nghost-%COMP%] .hint-note[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .hint-note[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .empty-results[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .empty-results[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .result-row[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .result-row[_ngcontent-%COMP%]{background:#1e293b;border-color:#475569}[data-theme="dark"][_nghost-%COMP%] .result-row[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .result-row[_ngcontent-%COMP%]:hover{border-color:#03a791;background:#03a79114}[data-theme="dark"][_nghost-%COMP%] .result-thumb[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .result-thumb[_ngcontent-%COMP%]{background:#334155}[data-theme="dark"][_nghost-%COMP%] .entry-thumb[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-thumb[_ngcontent-%COMP%]{background:#334155;color:#64748b}
1[data-theme="dark"][_nghost-%COMP%] .result-name[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .result-name[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .result-brand[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .result-brand[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .result-macros[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .result-macros[_ngcontent-%COMP%]{color:#cbd5e1}[data-theme="dark"][_nghost-%COMP%] .serving-food[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .serving-food[_ngcontent-%COMP%]{background:#03a79114;border-color:#03a7914d}[data-theme="dark"][_nghost-%COMP%] .btn-scan[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .btn-scan[_ngcontent-%COMP%]{background:#03a7911a}[data-theme="dark"][_nghost-%COMP%] .meal-title[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .meal-title[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .meal-kcal[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .meal-kcal[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .entry-name[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-name[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .entry-edit-name[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-edit-name[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .entry-sub[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-sub[_ngcontent-%COMP%]{color:#cbd5e1}[data-theme="dark"][_nghost-%COMP%] .entry-macros[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-macros[_ngcontent-%COMP%], [data-theme="dark"][_nghost-%COMP%] .entry-notes[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-notes[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .entry-dot[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .entry-dot[_ngcontent-%COMP%]{color:#475569}[data-theme="dark"][_nghost-%COMP%] .icon-btn[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .icon-btn[_ngcontent-%COMP%]{background:#1e293b;border-color:#475569;color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover{background:#03a79126;border-color:#03a791;color:#03a791}[data-theme="dark"][_nghost-%COMP%] .icon-btn.danger[_ngcontent-%COMP%]:hover, [data-theme="dark"] [_nghost-%COMP%] .icon-btn.danger[_ngcontent-%COMP%]:hover{background:#ef444426;border-color:#dc2626;color:#dc2626}[data-theme="dark"][_nghost-%COMP%] .empty-icon[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .empty-icon[_ngcontent-%COMP%]{background:#334155;color:#cbd5e1}[data-theme="dark"][_nghost-%COMP%] .empty-day[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .empty-day[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .empty-day[_ngcontent-%COMP%] p[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .empty-day[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .dietitian-bridge[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .dietitian-bridge[_ngcontent-%COMP%]{background:linear-gradient(135deg,#03a79126,#03a7910d);border-color:#03a7914d}[data-theme="dark"][_nghost-%COMP%] .bridge-body[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .bridge-body[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .bridge-body[_ngcontent-%COMP%] p[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .bridge-body[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#94a3b8}[data-theme="dark"][_nghost-%COMP%] .modal-overlay[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .modal-overlay[_ngcontent-%COMP%]{background:#000000b3}
1[data-theme="dark"][_nghost-%COMP%] .modal-content[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .modal-content[_ngcontent-%COMP%]{background:#1e293b;box-shadow:0 20px 40px #0006}[data-theme="dark"][_nghost-%COMP%] .modal-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .modal-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{color:#f1f5f9}[data-theme="dark"][_nghost-%COMP%] .modal-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%], [data-theme="dark"] [_nghost-%COMP%] .modal-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#94a3b8}']});};export{Zt as FoodLogComponent};/**i18n:124ccf68d2f1268c4040d7fd92ec0e6a8c443ba8f9b9e552a35ffacd4fbcb105*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.