:root{--basil: #2f6b4f;--basil-strong: #24553f;--basil-soft: #e3efe8;--ink: #18222b;--ink-2: #4a5761;--ink-3: #6b7780;--paper: #f5f7f6;--surface: #ffffff;--surface-2: #eef2f0;--line: #dde3e0;--protein: #3563c9;--carbs: #c98a10;--fat: #b8406f;--over: #c8462e;--warn-bg: #fdf3dc;--warn-ink: #7a5300;--m-breakfast: #d9a033;--m-lunch: #3f8f6a;--m-dinner: #3563c9;--m-snacks: #b8406f;--radius-lg: 18px;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(24, 34, 43, .06), 0 4px 16px rgba(24, 34, 43, .05);--font: "Avenir Next", "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--basil: #6cc29a;--basil-strong: #8fd5b3;--basil-soft: #1d3329;--ink: #e6ede9;--ink-2: #b4c0ba;--ink-3: #8c9993;--paper: #0f1714;--surface: #17211d;--surface-2: #1f2b26;--line: #2c3a34;--protein: #7c9ef0;--carbs: #e6b048;--fat: #e27aa4;--over: #f0806a;--warn-bg: #3a2f14;--warn-ink: #f2d38b;--m-lunch: #6cc29a;--m-dinner: #7c9ef0;--m-snacks: #e27aa4;--shadow: 0 1px 2px rgba(0, 0, 0, .3);color-scheme:dark}}:root[data-theme=dark]{--basil: #6cc29a;--basil-strong: #8fd5b3;--basil-soft: #1d3329;--ink: #e6ede9;--ink-2: #b4c0ba;--ink-3: #8c9993;--paper: #0f1714;--surface: #17211d;--surface-2: #1f2b26;--line: #2c3a34;--protein: #7c9ef0;--carbs: #e6b048;--fat: #e27aa4;--over: #f0806a;--warn-bg: #3a2f14;--warn-ink: #f2d38b;--m-lunch: #6cc29a;--m-dinner: #7c9ef0;--m-snacks: #e27aa4;--shadow: 0 1px 2px rgba(0, 0, 0, .3);color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased}body.no-scroll{overflow:hidden}h1,h2,h3{line-height:1.2;margin:0;letter-spacing:-.01em}h1{font-size:1.6rem;font-weight:650}h2{font-size:1.05rem;font-weight:600}p{margin:0 0 .75rem}a{color:var(--basil);text-underline-offset:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.small{font-size:.875rem}.block{display:block}.grow{flex:1;min-width:0}.center{text-align:center}.center-pad{display:grid;place-items:center;padding:3rem 1rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:-999px;top:8px;background:var(--surface);padding:8px 12px;border-radius:8px;z-index:100}.skip-link:focus{left:8px}:focus-visible{outline:2.5px solid var(--basil);outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .75rem;min-height:44px;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--basil);outline:none;box-shadow:0 0 0 3px var(--basil-soft)}input[aria-invalid=true],.has-error input{border-color:var(--over)}textarea.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.9rem;min-width:0}.field label,.fieldset legend,.radio-list legend{font-size:.85rem;font-weight:600;color:var(--ink-2)}.field-error,.form-error{color:var(--over);font-size:.85rem;margin:0}.field-hint{color:var(--ink-3);font-size:.8rem;margin:0}.fieldset{border:0;padding:0;margin:0 0 .5rem}.fieldset legend{margin-bottom:.5rem;font-size:.95rem;color:var(--ink)}.radio-list{border:0;padding:0;margin:0 0 1rem;display:grid;gap:.35rem}.radio-list label,.check{display:flex;align-items:center;gap:.6rem;min-height:40px}.radio-list input,.check input{width:20px;height:20px;min-height:0;accent-color:var(--basil)}.grid-2,.grid-3,.grid-4{display:grid;gap:0 1rem;grid-template-columns:1fr}@media(min-width:560px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(2,1fr)}.span-3{grid-column:1 / -1}}@media(min-width:900px){.grid-4{grid-template-columns:repeat(4,1fr)}}.grid-2.tight{grid-template-columns:1fr 1fr;gap:0 .5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:44px;padding:0 1.1rem;border-radius:999px;border:1.5px solid transparent;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,transform .1s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{width:100%}.btn-sm{min-height:34px;padding:0 .8rem;font-size:.875rem}.btn-primary{background:var(--basil);color:var(--surface)}.btn-primary:hover:not(:disabled){background:var(--basil-strong)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-secondary:hover:not(:disabled){border-color:var(--basil)}.btn-ghost{background:transparent;color:var(--basil)}.btn-ghost:hover{background:var(--basil-soft)}.btn-danger{background:var(--over);color:#fff}.btn-danger-ghost{background:transparent;color:var(--over)}.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:999px;border:0;background:transparent;color:var(--ink-2);cursor:pointer;flex:none}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon-btn.starred{color:var(--carbs)}.link-btn{background:none;border:0;padding:.25rem 0;color:var(--basil);font:inherit;font-size:.9rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--basil);animation:spin .8s linear infinite;display:inline-block}.spinner.small{width:16px;height:16px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.shell{min-height:100dvh}.sidebar{display:none}.content{padding:env(safe-area-inset-top) 0 calc(84px + env(safe-area-inset-bottom))}.page{padding:1rem 1rem 2rem;max-width:1120px;margin:0 auto}.page.narrow{max-width:760px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin:.5rem 0 1rem}.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;font-size:1.2rem;color:var(--ink);text-decoration:none;letter-spacing:-.02em}.brand.big{font-size:1.5rem;margin-bottom:1.5rem}.brand-mark{width:26px;height:26px;border-radius:50%;background:conic-gradient(var(--m-breakfast) 0 22%,transparent 22% 25%,var(--m-lunch) 25% 52%,transparent 52% 55%,var(--m-dinner) 55% 85%,transparent 85% 88%,var(--m-snacks) 88% 97%,transparent 97%);-webkit-mask:radial-gradient(circle,transparent 46%,#000 48%);mask:radial-gradient(circle,transparent 46%,#000 48%)}.tabbar{position:fixed;inset:auto 0 0;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:20}.tab{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.72rem;color:var(--ink-3);text-decoration:none;min-height:52px;justify-content:center}.tab.active{color:var(--basil);font-weight:600}.tab-add{justify-self:center;width:58px;height:58px;min-height:58px;border-radius:50%;background:var(--basil);color:var(--surface);margin-top:-22px;box-shadow:0 6px 18px color-mix(in srgb,var(--basil) 45%,transparent)}.mobile-only{display:block}@media(min-width:900px){.shell{display:grid;grid-template-columns:248px 1fr}.sidebar{display:flex;flex-direction:column;gap:1.5rem;position:sticky;top:0;height:100dvh;padding:1.5rem 1rem;border-right:1px solid var(--line);background:var(--surface)}.sidebar nav{display:flex;flex-direction:column;gap:2px}.side-link{display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;border-radius:10px;color:var(--ink-2);text-decoration:none;font-weight:500}.side-link:hover{background:var(--surface-2);color:var(--ink)}.side-link.active{background:var(--basil-soft);color:var(--basil-strong);font-weight:600}.content{padding:1rem 1.5rem 3rem}.tabbar,.mobile-only{display:none}h1{font-size:1.9rem}}.offline-bar{display:flex;align-items:center;gap:.5rem;background:var(--warn-bg);color:var(--warn-ink);padding:.55rem 1rem;font-size:.875rem;border-radius:var(--radius-sm);margin:.5rem 1rem 0}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.1rem;margin-bottom:1rem}.card-title{margin-bottom:.85rem}.card-title-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.85rem}.card-title-row .card-title{margin:0}.note{background:var(--surface-2);border-radius:var(--radius);padding:.7rem .9rem;font-size:.9rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:space-between}.note p{margin:0 0 .5rem;width:100%}.note-warn{background:var(--warn-bg);color:var(--warn-ink)}.note-error{background:color-mix(in srgb,var(--over) 12%,var(--surface));color:var(--over)}.empty{text-align:center;padding:2.5rem 1rem;display:grid;gap:.5rem;justify-items:center}.empty-title{font-weight:600;font-size:1.05rem;margin:0}.empty .muted{max-width:38ch}.badge{display:inline-flex;align-items:center;font-size:.72rem;font-weight:600;padding:.1rem .5rem;border-radius:999px;background:var(--surface-2);color:var(--ink-2)}.badge-good{background:var(--basil-soft);color:var(--basil-strong)}.badge-warn{background:var(--warn-bg);color:var(--warn-ink)}.badge-user{background:color-mix(in srgb,var(--protein) 14%,var(--surface));color:var(--protein)}.badges{display:flex;gap:.5rem;align-items:center;margin-bottom:.4rem}.row-end{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.inline-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin:.75rem 0}.inline-actions>input,.inline-actions>select{width:auto;flex:1 1 160px}.inline-actions .field{margin:0;flex:1 1 140px}.stack{display:grid;gap:.5rem;justify-items:start}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:1.5rem 1rem}.auth-card{width:100%;max-width:420px}.auth-card.wide{max-width:680px}.auth-card h1{margin-bottom:.5rem}.auth-card form{margin-top:1.25rem}.auth-foot{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line);text-align:center;color:var(--ink-3)}.steps{display:flex;gap:.5rem;list-style:none;padding:0;margin:0 0 1.25rem;font-size:.85rem;color:var(--ink-3)}.steps li{padding:.25rem .75rem;border-radius:999px;background:var(--surface-2)}.steps li.on{background:var(--basil);color:var(--surface)}.segmented{display:inline-flex;background:var(--surface-2);border-radius:999px;padding:3px;gap:2px;max-width:100%}.segmented button{border:0;background:transparent;font:inherit;font-size:.875rem;font-weight:500;color:var(--ink-2);padding:.45rem .9rem;border-radius:999px;min-height:38px;cursor:pointer;white-space:nowrap}.segmented button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--shadow)}.tabs-scroll{overflow-x:auto;margin:0 -1rem .75rem;padding:0 1rem;scrollbar-width:none}.tabs-scroll::-webkit-scrollbar{display:none}.chips{display:flex;gap:.5rem}.chip{border:1.5px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;padding:.4rem .9rem;font:inherit;font-size:.875rem;min-height:38px;cursor:pointer;white-space:nowrap}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.dash-grid{display:grid;gap:1rem}.dash-grid .card{margin:0}@media(min-width:900px){.dash-grid{grid-template-columns:minmax(300px,380px) 1fr}.meals-card{grid-column:2}.plate-card{grid-row:span 2;align-self:start}}.plate-card{display:grid;justify-items:center;gap:1rem}.plate{position:relative}.plate svg{display:block}.plate-track{stroke:var(--surface-2)}.plate-arc{transition:stroke-dasharray .6s cubic-bezier(.2,.7,.2,1)}.meal-breakfast{stroke:var(--m-breakfast);background:var(--m-breakfast)}.meal-lunch{stroke:var(--m-lunch);background:var(--m-lunch)}.meal-dinner{stroke:var(--m-dinner);background:var(--m-dinner)}.meal-snacks{stroke:var(--m-snacks);background:var(--m-snacks)}.plate-goal-mark{stroke:var(--ink)}.plate-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.plate-center strong{font-size:2.6rem;font-weight:650;letter-spacing:-.03em;line-height:1}.plate-center strong.over{color:var(--over)}.plate-center span{color:var(--ink-3);font-size:.9rem;margin-top:.3rem}.cal-figures{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;width:100%;margin:0;text-align:center}.cal-figures dt{font-size:.8rem;color:var(--ink-3)}.cal-figures dd{margin:0;font-weight:600;font-size:1.15rem}.meal-legend{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:.3rem 1.25rem;width:100%;font-size:.875rem}.meal-legend li{display:flex;align-items:center;gap:.45rem}.meal-legend .num{margin-left:auto}.dot{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}.macros{display:grid;gap:.95rem}@media(min-width:600px){.macros{grid-template-columns:1fr 1fr;gap:1rem 1.5rem}}.macro-top{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:.35rem}.macro-name{font-weight:600}.bar{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden}.bar span{display:block;height:100%;border-radius:99px;background:var(--ink-3);transition:width .5s ease}.macro-protein .bar span{background:var(--protein)}.macro-carbs .bar span{background:var(--carbs)}.macro-fat .bar span{background:var(--fat)}.macro-fiber .bar span{background:var(--basil)}.bar span.over{background:var(--over)!important}.meal-summary{list-style:none;padding:0;margin:0}.meal-summary li{display:flex;align-items:center;gap:.75rem;padding:.55rem 0;border-top:1px solid var(--line)}.meal-summary li:first-child{border-top:0}.date-nav{display:flex;align-items:center;gap:.25rem;margin:.25rem 0 1rem}.date-nav-center{flex:1;text-align:center;position:relative}.date-nav h1{font-size:1.35rem}.date-pick input{position:absolute;inset:0;opacity:0;cursor:pointer;min-height:0}.day-strip{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.8rem 1.1rem}.day-strip .big{font-size:1.4rem;font-weight:650}.day-strip-macros{display:flex;gap:.9rem;font-size:.9rem;color:var(--ink-2)}.chip-protein b{color:var(--protein)}.chip-carbs b{color:var(--carbs)}.chip-fat b{color:var(--fat)}.meal{padding:.5rem 0 .25rem}.meal-head{display:flex;align-items:center;gap:.6rem;padding:.4rem .5rem .4rem 1.1rem}.meal-head h2{flex:1}.entries{list-style:none;margin:0;padding:0}.entry{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name kcal" "sub kcal";gap:0 1rem;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:.65rem 1.1rem;font:inherit;color:inherit;cursor:pointer}.entry:hover:not(:disabled){background:var(--surface-2)}.entry:disabled{cursor:default;opacity:.7}.entry-name{grid-area:name;font-weight:500}.entry-sub{grid-area:sub;font-size:.85rem;color:var(--ink-3)}.entry-kcal{grid-area:kcal;align-self:center;font-weight:600}.add-line{display:flex;align-items:center;gap:.4rem;padding:.7rem 1.1rem;border-top:1px solid var(--line);color:var(--basil);font-weight:600;text-decoration:none;font-size:.9rem}.total-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem 1rem;margin:0}@media(min-width:700px){.total-grid{grid-template-columns:repeat(4,1fr)}}.total-grid dt{font-size:.8rem;color:var(--ink-3)}.total-grid dd{margin:0;font-weight:600}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.35rem;z-index:10;min-width:200px}.menu button{display:flex;gap:.6rem;align-items:center;width:100%;background:none;border:0;padding:.65rem .75rem;border-radius:8px;font:inherit;color:var(--ink);cursor:pointer;text-align:left}.menu button:hover{background:var(--surface-2)}.preview-line{margin:.25rem 0 1rem}.preview-line .big{font-size:1.5rem;font-weight:650}.sheet-backdrop{position:fixed;inset:0;z-index:1000!important;background:#0a100e73;display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:fade .15s ease}.sheet{background:var(--surface);width:100%;max-height:92dvh;border-radius:22px 22px 0 0;display:flex;flex-direction:column;animation:rise .22s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom)}@media(min-width:700px){.sheet-backdrop{align-items:center}.sheet{max-width:560px;border-radius:20px;max-height:86dvh}}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem .75rem .5rem 1.25rem}.sheet-body{padding:.25rem 1.25rem 1rem;overflow-y:auto}.sheet-foot{display:flex;justify-content:space-between;gap:.5rem;padding:.85rem 1.25rem;border-top:1px solid var(--line);flex-wrap:wrap}.sheet-foot:has(>:only-child){justify-content:flex-end}@keyframes rise{0%{transform:translateY(24px);opacity:0}}@keyframes fade{0%{opacity:0}}.search-bar{display:flex;align-items:center;gap:.5rem;background:var(--surface);border:1.5px solid var(--line);border-radius:999px;padding:0 .35rem 0 1rem;margin:.9rem 0;color:var(--ink-3)}.search-bar:focus-within{border-color:var(--basil);box-shadow:0 0 0 3px var(--basil-soft)}.search-bar input{border:0;box-shadow:none!important;background:transparent;padding-left:0;min-height:48px}.result-group{margin-bottom:1.25rem}.group-title{font-size:.8rem;font-weight:600;color:var(--ink-3);margin:0 0 .4rem .25rem}.food-list,.link-list ul{list-style:none;padding:0;margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.food-row{display:flex;align-items:center;gap:.25rem;border-top:1px solid var(--line);padding-right:.35rem}.food-row:first-child{border-top:0}.food-row-main{flex:1;min-width:0;text-align:left;background:none;border:0;padding:.7rem 0 .7rem 1rem;font:inherit;color:inherit;cursor:pointer}.food-row-main:hover .food-row-name{color:var(--basil)}.food-row-name{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.food-row-sub{display:flex;flex-wrap:wrap;gap:.1rem .5rem;font-size:.83rem;color:var(--ink-3);align-items:center}.food-row-sub span:not(.badge)+span:not(.badge):before{content:"\b7";margin-right:.5rem}.food-row-kcal{font-weight:600;white-space:nowrap}.food-row-kcal small{font-weight:400;color:var(--ink-3)}.quick-add{color:var(--basil)}.quick-add:hover{background:var(--basil-soft);color:var(--basil-strong)}.link-list{list-style:none;padding:0;margin:0 0 1rem}.link-list a{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;color:var(--ink);text-decoration:none;border-top:1px solid var(--line)}.link-list li:first-child a,.link-list>a:first-child{border-top:0}.link-list a span:first-of-type{flex:1}nav.link-list{padding:0;overflow:hidden}ul.link-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.scanner{position:relative;border-radius:var(--radius);overflow:hidden;background:#000;aspect-ratio:4 / 3;margin-bottom:.75rem}.scanner video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;inset:30% 12%;border:3px solid rgba(255,255,255,.85);border-radius:12px}.detail-grid{display:grid;gap:1rem}.detail-grid .card{margin:0}@media(min-width:900px){.detail-grid{grid-template-columns:1.3fr 1fr;align-items:start}.add-panel{position:sticky;top:1rem}}.serving-picker{display:flex;gap:.75rem}.serving-picker .field:first-child{width:110px;flex:none}.nutrition-cal{display:flex;justify-content:space-between;align-items:baseline;border-bottom:3px solid var(--ink);padding:.5rem 0}.nutrition-cal span{font-weight:600}.nutrition-cal strong{font-size:2rem;font-weight:700}.nutrition-macros{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin:.9rem 0}.macro-chip{border-radius:var(--radius);padding:.6rem;text-align:center;background:var(--surface-2)}.macro-chip strong{display:block;font-size:1.2rem}.macro-chip span{font-size:.8rem;color:var(--ink-3)}.chip-protein.macro-chip strong{color:var(--protein)}.chip-carbs.macro-chip strong{color:var(--carbs)}.chip-fat.macro-chip strong{color:var(--fat)}.nutrition-list{margin:0}.nutrition-list div{display:flex;justify-content:space-between;padding:.45rem 0;border-top:1px solid var(--line);font-size:.92rem}.nutrition-list .indent dt{padding-left:1rem;color:var(--ink-2)}.nutrition-list dd{margin:0}.nutrition-list dd.na{color:var(--ink-3);font-style:italic}.add-buttons{display:grid;gap:.5rem}.source-box{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--line)}.source-box p{margin:0 0 .3rem}.restaurant-grid{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}@media(min-width:640px){.restaurant-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}.restaurant-card{display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink);text-decoration:none}.restaurant-card:hover{border-color:var(--basil)}.restaurant-initial{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--basil-soft);color:var(--basil-strong);font-weight:700;font-size:1.15rem}.meal-cards{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}@media(min-width:760px){.meal-cards{grid-template-columns:1fr 1fr}}.meal-card-link{display:grid;gap:.3rem;color:var(--ink);text-decoration:none;margin:0}.meal-card-link:hover{border-color:var(--basil)}.meal-items{list-style:none;padding:0;margin:0 0 .5rem}.meal-items li{display:flex;gap:.5rem;align-items:center;padding:.6rem 0;border-top:1px solid var(--line)}.meal-items .serving-picker{margin-top:.4rem}.meal-items .field{margin-bottom:0}.meal-total{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:.8rem 0;border-top:2px solid var(--ink);margin-top:.5rem;font-weight:600}.picker{position:relative}.picker-results{list-style:none;padding:.25rem;margin:-.5rem 0 .75rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.picker-results button{display:flex;flex-direction:column;align-items:flex-start;width:100%;background:none;border:0;padding:.55rem .75rem;border-radius:8px;font:inherit;color:inherit;text-align:left;cursor:pointer}.picker-results button:hover{background:var(--surface-2)}.picker-results li.muted{padding:.55rem .75rem}.stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin:0 0 1rem}@media(min-width:900px){.stats{grid-template-columns:repeat(4,1fr)}}.stats .card{margin:0;padding:.9rem 1rem}.stats dt{font-size:.8rem;color:var(--ink-3)}.stats dd{margin:.2rem 0 0;font-size:1.5rem;font-weight:650}.stats small{font-size:.85rem;color:var(--ink-3);font-weight:500}.chart{width:100%;height:auto;display:block;margin:.25rem 0 .75rem}.chart .grid{stroke:var(--line);stroke-dasharray:3 4}.chart .axis{fill:var(--ink-3);font-size:11px;font-family:var(--font)}.bar-calories{fill:var(--basil)}.bar-protein{fill:var(--protein)}.bar-carbs{fill:var(--carbs)}.bar-fat{fill:var(--fat)}.chart rect.over{fill:var(--over)}.goal-line{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:6 4}.weight-line{stroke:var(--protein);stroke-width:2.5;stroke-linejoin:round}.weight-dot{fill:var(--surface);stroke:var(--protein);stroke-width:2}.weight-list{list-style:none;padding:0;margin:0}.weight-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);padding-left:.25rem}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:1.5rem}.cal-head{font-size:.75rem;color:var(--ink-3);text-align:center;padding:.25rem 0}.cal-day{aspect-ratio:1;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:4px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;font:inherit;color:var(--ink);cursor:pointer}.cal-day.ok{background:var(--basil-soft);border-color:transparent}.cal-day.over{background:color-mix(in srgb,var(--over) 14%,var(--surface));border-color:transparent}.cal-day.today{outline:2px solid var(--ink);outline-offset:-2px}.cal-num{font-size:.8rem;font-weight:600}.cal-kcal{font-size:.72rem;line-height:1.1}.cal-kcal small{display:none}@media(min-width:700px){.cal-day{aspect-ratio:auto;min-height:76px;padding:8px}.cal-kcal{font-size:.85rem}.cal-kcal small{display:inline;color:var(--ink-3)}}.history-list{list-style:none;padding:0;margin:0}.history-list a{display:flex;justify-content:space-between;padding:.7rem .25rem;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.over-text{color:var(--over)}.pref-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding:.6rem 0;border-top:1px solid var(--line)}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th,.table td{text-align:left;padding:.6rem .8rem;border-top:1px solid var(--line);vertical-align:middle}.table th{font-size:.78rem;color:var(--ink-3);font-weight:600;border-top:0}.table .num{text-align:right}.report-list{list-style:none;padding:0;margin:1rem 0 0}blockquote{margin:.5rem 0;padding:.5rem .75rem;border-left:3px solid var(--line);color:var(--ink-2)}.toasts{position:fixed;left:50%;transform:translate(-50%);bottom:calc(96px + env(safe-area-inset-bottom));display:grid;gap:.5rem;z-index:60;width:min(92vw,440px)}@media(min-width:900px){.toasts{bottom:1.5rem}}.toast{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:var(--ink);color:var(--paper);padding:.75rem 1rem;border-radius:var(--radius);box-shadow:var(--shadow);animation:rise .2s ease;font-size:.92rem}.toast .link-btn{color:var(--paper);font-weight:600}.toast-error{background:var(--over);color:#fff}.howto{padding-left:1.2rem;margin:0 0 1rem;display:grid;gap:.35rem}.file-btn{position:relative;margin-bottom:1rem}.preview-table{max-height:260px;overflow:auto;margin-bottom:1rem}.admin-tools{margin-top:-.25rem}.note ul{margin:0;padding-left:1.1rem}:root{--basil: #12a150;--basil-strong: #0b7d3d;--basil-soft: #dcf5e5;--ink: #161a2e;--ink-2: #464c66;--ink-3: #6c7290;--paper: #f4f6fb;--surface: #ffffff;--surface-2: #eef1f8;--line: #e3e7f0;--protein: #6366f1;--carbs: #f59e0b;--fat: #ec4899;--fiber: #10b981;--sugar: #f97316;--sodium: #0ea5e9;--over: #e5484d;--m-breakfast: #f59e0b;--m-lunch: #10b981;--m-dinner: #6366f1;--m-snacks: #ec4899;--hero: linear-gradient(140deg, #312e81 0%, #4c1d95 55%, #86198f 115%);--cta: linear-gradient(135deg, #16b35a 0%, #0ea5a0 100%);--wash: radial-gradient(1100px 520px at 0% -12%, #e0e7ff 0, transparent 62%), radial-gradient(900px 460px at 100% -6%, #fce7f3 0, transparent 58%), radial-gradient(800px 420px at 60% 110%, #dcfce7 0, transparent 60%);--shadow: 0 1px 2px rgba(22, 26, 46, .05), 0 8px 24px rgba(49, 46, 129, .07)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--basil: #34d27b;--basil-strong: #6ee7a3;--basil-soft: #133524;--ink: #eceffa;--ink-2: #bcc2dc;--ink-3: #8f96b5;--paper: #0d1120;--surface: #151a2e;--surface-2: #1d2340;--line: #283055;--protein: #a5b4fc;--carbs: #fcd34d;--fat: #f9a8d4;--fiber: #6ee7b7;--sugar: #fdba74;--sodium: #7dd3fc;--over: #ff7b7f;--m-breakfast: #fbbf24;--m-lunch: #34d399;--m-dinner: #a5b4fc;--m-snacks: #f9a8d4;--wash: radial-gradient(1100px 520px at 0% -12%, #1e1b4b 0, transparent 62%), radial-gradient(900px 460px at 100% -6%, #3b0a2f 0, transparent 58%);--shadow: 0 1px 2px rgba(0, 0, 0, .35)}}:root[data-theme=dark]{--basil: #34d27b;--basil-strong: #6ee7a3;--basil-soft: #133524;--ink: #eceffa;--ink-2: #bcc2dc;--ink-3: #8f96b5;--paper: #0d1120;--surface: #151a2e;--surface-2: #1d2340;--line: #283055;--protein: #a5b4fc;--carbs: #fcd34d;--fat: #f9a8d4;--fiber: #6ee7b7;--sugar: #fdba74;--sodium: #7dd3fc;--over: #ff7b7f;--m-breakfast: #fbbf24;--m-lunch: #34d399;--m-dinner: #a5b4fc;--m-snacks: #f9a8d4;--wash: radial-gradient(1100px 520px at 0% -12%, #1e1b4b 0, transparent 62%), radial-gradient(900px 460px at 100% -6%, #3b0a2f 0, transparent 58%);--shadow: 0 1px 2px rgba(0, 0, 0, .35)}body{background:var(--wash),var(--paper);background-attachment:fixed}.card{border-color:color-mix(in srgb,var(--line) 70%,transparent);box-shadow:var(--shadow)}.btn-primary{background:var(--cta);color:#fff;box-shadow:0 4px 14px color-mix(in srgb,var(--basil) 35%,transparent)}.btn-primary:hover:not(:disabled){background:var(--cta);filter:brightness(1.06)}.tab-add{background:var(--cta);color:#fff;box-shadow:0 8px 22px color-mix(in srgb,#0ea5a0 45%,transparent)}.brand-mark{width:30px;height:30px}.sidebar{background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.side-link svg{transition:color .15s}.side-link.active{background:color-mix(in srgb,var(--protein) 12%,var(--surface));color:var(--protein)}.ic-home svg{color:var(--m-lunch)}.ic-diary svg{color:var(--m-breakfast)}.ic-search svg{color:var(--sodium)}.ic-store svg{color:var(--m-snacks)}.ic-apple svg{color:var(--over)}.ic-bowl svg{color:var(--sugar)}.ic-chart svg{color:var(--protein)}.ic-settings svg{color:var(--ink-3)}.ic-shield svg{color:#8b5cf6}.tab.active{color:var(--protein)}.segmented{background:color-mix(in srgb,var(--protein) 8%,var(--surface-2))}.segmented button.on{color:var(--protein)}.chip.on{background:var(--protein);border-color:var(--protein);color:#fff}.steps li.on{background:var(--protein)}.plate-card.hero{background:var(--hero);border:0;color:#fff;box-shadow:0 18px 40px #4c1d9547}.hero{--m-breakfast: #fcd34d;--m-lunch: #5eead4;--m-dinner: #a5b4fc;--m-snacks: #f9a8d4}.hero .plate-track{stroke:#ffffff29}.hero .plate-goal-mark{stroke:#fff}.hero .plate-center span,.hero .cal-figures dt{color:#ffffffb8}.hero .plate-center strong.over{color:#fecaca}.hero .meal-legend .num{color:#fffc}.hero .cal-figures{background:#ffffff1a;border-radius:14px;padding:.65rem .25rem}.page-head .date-chip{display:inline-block;padding:.2rem .7rem;border-radius:999px;font-size:.85rem;font-weight:600;background:color-mix(in srgb,var(--protein) 12%,var(--surface));color:var(--protein);margin-bottom:.35rem}.bar{height:10px}.macro-protein .bar{background:color-mix(in srgb,var(--protein) 16%,transparent)}.macro-carbs .bar{background:color-mix(in srgb,var(--carbs) 18%,transparent)}.macro-fat .bar{background:color-mix(in srgb,var(--fat) 16%,transparent)}.macro-fiber .bar{background:color-mix(in srgb,var(--fiber) 16%,transparent)}.macro-fiber .bar span{background:var(--fiber)}.macro-sugar .bar{background:color-mix(in srgb,var(--sugar) 16%,transparent)}.macro-sugar .bar span{background:var(--sugar)}.macro-sodium .bar{background:color-mix(in srgb,var(--sodium) 16%,transparent)}.macro-sodium .bar span{background:var(--sodium)}.macro-name:before{content:"";display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:.45rem;vertical-align:1px;background:currentColor}.macro-protein .macro-name:before{background:var(--protein)}.macro-carbs .macro-name:before{background:var(--carbs)}.macro-fat .macro-name:before{background:var(--fat)}.macro-fiber .macro-name:before{background:var(--fiber)}.macro-sugar .macro-name:before{background:var(--sugar)}.macro-sodium .macro-name:before{background:var(--sodium)}.meal{overflow:hidden;padding-top:0}.meal .meal-head{padding-top:.75rem;padding-bottom:.65rem;border-top:5px solid var(--mc);background:color-mix(in srgb,var(--mc) 9%,var(--surface))}.m-breakfast{--mc: var(--m-breakfast)}.m-lunch{--mc: var(--m-lunch)}.m-dinner{--mc: var(--m-dinner)}.m-snacks{--mc: var(--m-snacks)}.meal .add-line{color:color-mix(in srgb,var(--mc) 75%,var(--ink))}.meal-summary li .dot,.meal-head .dot{width:12px;height:12px}.day-strip{background:color-mix(in srgb,var(--protein) 6%,var(--surface))}.food-row-kcal{background:color-mix(in srgb,var(--m-breakfast) 14%,var(--surface));padding:.15rem .55rem;border-radius:999px}.macro-chip{background:color-mix(in srgb,currentColor 0%,var(--surface-2))}.chip-protein.macro-chip{background:color-mix(in srgb,var(--protein) 12%,var(--surface))}.chip-carbs.macro-chip{background:color-mix(in srgb,var(--carbs) 14%,var(--surface))}.chip-fat.macro-chip{background:color-mix(in srgb,var(--fat) 12%,var(--surface))}.nutrition-cal{border-bottom-color:var(--protein)}.nutrition-cal strong{color:var(--protein)}.stats .card{border:0}.tint-1{background:color-mix(in srgb,var(--protein) 12%,var(--surface))}.tint-1 dd{color:var(--protein)}.tint-2{background:color-mix(in srgb,var(--m-lunch) 13%,var(--surface))}.tint-2 dd{color:color-mix(in srgb,var(--m-lunch) 80%,var(--ink))}.tint-3{background:color-mix(in srgb,var(--m-snacks) 12%,var(--surface))}.tint-3 dd{color:var(--m-snacks)}.tint-4{background:color-mix(in srgb,var(--m-breakfast) 15%,var(--surface))}.tint-4 dd{color:color-mix(in srgb,var(--m-breakfast) 75%,var(--ink))}.bar-calories{fill:url(#calGrad)}.goal-line{stroke:var(--over)}.restaurant-initial,.avatar{background:hsl(var(--h, 150) 85% 92%);color:hsl(var(--h, 150) 55% 32%)}:root[data-theme=dark] .restaurant-initial,:root[data-theme=dark] .avatar{background:hsl(var(--h, 150) 45% 22%);color:hsl(var(--h, 150) 80% 80%)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .restaurant-initial,:root:not([data-theme=light]) .avatar{background:hsl(var(--h, 150) 45% 22%);color:hsl(var(--h, 150) 80% 80%)}}.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-weight:700;flex:none}.people{list-style:none;padding:0;margin:0}.person{display:flex;gap:.85rem;align-items:flex-start;padding:.9rem 0;border-top:1px solid var(--line);flex-wrap:wrap}.person:first-child{border-top:0}.person .badge{margin-left:.4rem}.person-actions{display:flex;gap:.35rem;flex-wrap:wrap}.chip-list{list-style:none;padding:0;margin:.25rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem}.pill{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .4rem .3rem .8rem;border-radius:999px;background:var(--surface-2);font-size:.875rem}.pill-x{border:0;background:none;font-size:1.1rem;line-height:1;color:var(--ink-3);cursor:pointer;width:26px;height:26px;border-radius:50%}.pill-x:hover{background:var(--line)}.quick-links{display:grid;gap:.75rem;margin-bottom:1rem}@media(min-width:760px){.quick-links{grid-template-columns:repeat(3,1fr)}}.quick-link{display:grid;gap:.2rem;text-decoration:none;color:var(--ink);margin:0}.quick-link:hover{outline:2px solid var(--protein)}.admin-btn{color:#7c3aed;border-color:color-mix(in srgb,#7c3aed 35%,var(--line));flex:none}.admin-btn svg{color:#7c3aed}.admin-card{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:#fff;background:var(--hero);border:0}.admin-card .small{color:#ffffffc7}.page-head{flex-wrap:wrap}.topbar{display:flex;justify-content:flex-end;padding:.6rem 1rem 0;max-width:1120px;margin:0 auto}.admin-top{display:inline-flex;align-items:center;gap:.4rem;min-height:40px;padding:0 .95rem;border-radius:999px;cursor:pointer;font:inherit;font-weight:650;font-size:.9rem;color:#fff;border:0;background:linear-gradient(135deg,#7c3aed,#db2777);box-shadow:0 4px 14px #7c3aed59}.admin-top:hover{filter:brightness(1.08)}.server-check{margin-top:1rem;padding:.75rem .9rem;border-radius:var(--radius);background:var(--surface-2)}.server-check p{margin:.25rem 0 0}.nono{font-size:1.6rem;font-weight:750;margin:.25rem 0 .75rem}.auth-shell{background:var(--hero)}.auth-card{background:var(--surface);padding:2rem 1.5rem;border-radius:24px;box-shadow:0 24px 60px #140a3c59}body{background:var(--page-bg, var(--wash)),var(--paper);background-attachment:fixed;font-family:var(--font)}.hero{--m-breakfast: var(--hm-breakfast, #fcd34d);--m-lunch: var(--hm-lunch, #5eead4);--m-dinner: var(--hm-dinner, #a5b4fc);--m-snacks: var(--hm-snacks, #f9a8d4)}.plate-track,.plate-arc{stroke-width:var(--ring-w, 19px)}.food-list,.restaurant-card{border-radius:var(--radius-lg)}.btn,.segmented,.segmented button,.chip,.search-bar,.pill{border-radius:max(var(--radius-sm),6px)}.tab-add{border-radius:50%}.cards-glass .card:not(.hero):not(.admin-card):not([class*=tint-]),.cards-glass .food-list,.cards-glass .restaurant-card,.cards-glass .search-bar,.cards-glass .sidebar,.cards-glass .tabbar{background:color-mix(in srgb,var(--surface) 68%,transparent);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}.cards-outline .card:not(.hero):not(.admin-card),.cards-outline .food-list,.cards-outline .restaurant-card{box-shadow:none;border:2px solid var(--line)}.density-compact .page{padding-top:.5rem}.density-compact .card{padding:.75rem .9rem;margin-bottom:.6rem}.density-compact .entry{padding:.45rem 1rem}.density-compact .food-row-main{padding:.45rem 0 .45rem .9rem}.density-compact .meal .meal-head{padding-top:.5rem;padding-bottom:.45rem}.density-compact .macros{gap:.6rem 1.25rem}.bg-text-light .page>.page-head,.bg-text-light .page>.page-head .muted,.bg-text-light .page>.page-head a:not(.btn),.bg-text-light .date-nav h1,.bg-text-light .date-nav .icon-btn,.bg-text-light .group-title,.bg-text-light .page>.small,.bg-text-light .results>.small,.bg-text-light .page>.empty,.bg-text-light .page>.empty .muted,.bg-text-light .history-list a{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.45)}.bg-text-dark .page>.page-head,.bg-text-dark .page>.page-head .muted,.bg-text-dark .date-nav h1,.bg-text-dark .date-nav .icon-btn,.bg-text-dark .group-title,.bg-text-dark .page>.small,.bg-text-dark .page>.empty,.bg-text-dark .history-list a{color:#161a2e}.appearance-grid{display:grid;gap:1rem}@media(min-width:1000px){.appearance-grid{grid-template-columns:1fr 320px;align-items:start}.preview-col{position:sticky;top:1rem}}@media(max-width:999px){.preview-col{order:-1;display:grid;grid-template-columns:150px 1fr;gap:.75rem}.preview-col .card{margin:0}.preview-col .note{grid-column:1 / -1}}.preview-hero{display:grid;place-items:center;padding:.75rem}@media(max-width:999px){.preview-hero .plate{transform:scale(.72);margin:-25px}}.macros.single{grid-template-columns:1fr}.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:.65rem;margin-bottom:.5rem}.theme-swatch{position:relative;height:96px;border:2px solid var(--line);padding:10px;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;text-align:left;overflow:hidden}.theme-swatch.on{outline:3px solid var(--basil);outline-offset:2px}.sw-hero{display:flex;gap:4px;align-items:center;padding:6px 8px;border-radius:8px}.sw-hero i{width:10px;height:10px;border-radius:50%}.sw-btn{position:absolute;right:10px;bottom:12px;width:26px;height:12px;border-radius:6px}.sw-name{font-weight:700;font-size:.9rem;color:#161a2e;background:#ffffffbf;align-self:flex-start;padding:1px 6px;border-radius:6px}.control-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.6rem 1rem;margin:.85rem 0}.color-field{display:flex;align-items:center;gap:.6rem;padding:.35rem .5rem .35rem .35rem;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.color-field input{width:38px;height:38px;min-height:0;padding:0;border:0;border-radius:8px;background:none;cursor:pointer;flex:none}.color-field input::-webkit-color-swatch-wrapper{padding:0}.color-field input::-webkit-color-swatch{border:1px solid rgba(0,0,0,.1);border-radius:8px}.color-field span{flex:1;font-size:.9rem;font-weight:500}.color-field code{font-size:.75rem;color:var(--ink-3)}.slider-field{display:grid;gap:.2rem;margin-bottom:.9rem}.slider-top{display:flex;justify-content:space-between;font-size:.9rem;font-weight:500}.slider-field input{padding:0;min-height:32px;border:0;background:none;accent-color:var(--basil);box-shadow:none!important}.card-title.spaced{margin-top:1rem}.pref-link{color:var(--ink);text-decoration:none}.pref-link span{display:inline-flex;align-items:center;gap:.45rem}.ic-palette svg{color:#d946ef}
