:root{--bg: #0b0f14;--bg-elev: #131a22;--bg-elev-2: #1a232d;--line: #223040;--text: #e8eef5;--muted: #8ba0b5;--faint: #5d7085;--kcal: #8ef04a;--protein: #4aa8f0;--carbs: #f0b64a;--fat: #c98cf5;--danger: #f4685e;--line-strong: #38516b;--danger-text: #ffbdb8;--on-accent: #08130a;--radius: 16px;--radius-sm: 10px;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark}:root[data-theme=light]{--bg: #f3f5f8;--bg-elev: #ffffff;--bg-elev-2: #edf1f5;--line: #dbe2ea;--line-strong: #b4c1cf;--text: #15202b;--muted: #536375;--faint: #8494a5;--kcal: #2a8217;--protein: #1f74c7;--carbs: #a86c00;--fat: #8248c9;--danger: #d1372c;--danger-text: #a3241b;--on-accent: #ffffff;--shadow: 0 8px 24px rgba(20, 32, 44, .12);color-scheme:light}:root[data-theme=pink]{--bg: #fff3f8;--bg-elev: #ffffff;--bg-elev-2: #fde6f0;--line: #f5d0e0;--line-strong: #e7a4c2;--text: #3b1328;--muted: #87526d;--faint: #b5859d;--kcal: #d0307f;--protein: #3b7bd4;--carbs: #c27400;--fat: #8a46cf;--danger: #cf3a2f;--danger-text: #a2231b;--on-accent: #ffffff;--shadow: 0 8px 24px rgba(120, 28, 72, .13);color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,system-ui,sans-serif;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:16px}a{color:var(--kcal)}.app{min-height:100%;display:flex;flex-direction:column;padding-bottom:calc(76px + var(--safe-bottom))}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:14px 16px 12px;background:linear-gradient(var(--bg) 70%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar .grow{flex:1;min-width:0}.topbar .sub{color:var(--muted);font-size:12.5px;margin-top:2px}.page{padding:0 16px 24px;display:flex;flex-direction:column;gap:14px;width:100%;max-width:860px;margin:0 auto}.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;gap:4px;padding:6px 8px calc(6px + var(--safe-bottom));background:color-mix(in srgb,var(--bg-elev) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line)}.nav button{flex:1;max-width:140px;background:none;border:0;border-radius:12px;padding:8px 4px 6px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;cursor:pointer}.nav button.active{color:var(--text);background:var(--bg-elev-2)}.nav svg{width:21px;height:21px}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.card.tight{padding:12px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.muted{color:var(--muted)}.small{font-size:12.5px}.center{text-align:center}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:10px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero{display:flex;align-items:center;gap:18px}.ring{flex:0 0 auto;position:relative;width:132px;height:132px}.ring svg{transform:rotate(-90deg);width:100%;height:100%}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.ring-value{font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.ring-unit{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.macro-list{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}.macro{display:flex;flex-direction:column;gap:5px}.macro-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13px}.macro-name{display:flex;align-items:center;gap:6px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;flex:none}.macro-value{font-variant-numeric:tabular-nums}.macro-value b{font-weight:650}.bar{height:7px;border-radius:4px;background:var(--bg-elev-2);overflow:hidden}.bar span{display:block;height:100%;border-radius:4px;transition:width .35s ease}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}.stat-row>div{background:var(--bg-elev-2);border-radius:var(--radius-sm);padding:10px 6px}.stat-row .v{font-size:16px;font-weight:650;font-variant-numeric:tabular-nums}.stat-row .k{font-size:11px;color:var(--muted);margin-top:2px}.meal-group+.meal-group{margin-top:14px}.meal-head{display:flex;justify-content:space-between;align-items:baseline;padding:0 2px 6px;font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.entry{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg-elev-2);border:1px solid transparent;width:100%;text-align:left;cursor:pointer}.entry+.entry{margin-top:6px}.entry:active{border-color:var(--line)}.entry .time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;width:40px;flex:none}.entry .name{font-size:14px}.entry .meta{font-size:12px;color:var(--muted)}.entry .kcal{font-variant-numeric:tabular-nums;font-weight:650;flex:none}.macro-chips{display:flex;gap:8px;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}.empty{text-align:center;padding:26px 12px;color:var(--muted);font-size:13.5px}.btn{border:1px solid var(--line);background:var(--bg-elev-2);color:var(--text);border-radius:12px;padding:10px 14px;cursor:pointer;font-size:14px;font-weight:550;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s ease}.btn:active{filter:brightness(1.25)}a.btn{text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--kcal);border-color:var(--kcal);color:var(--on-accent)}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent)}.btn.sm{padding:7px 10px;font-size:13px;border-radius:10px}.btn.block{width:100%}.icon-btn{width:38px;height:38px;flex:none;padding:0;border-radius:11px}.fab{position:fixed;right:18px;bottom:calc(84px + var(--safe-bottom));z-index:25;width:56px;height:56px;border-radius:50%;border:0;background:var(--kcal);color:var(--on-accent);font-size:30px;line-height:1;box-shadow:0 8px 24px color-mix(in srgb,var(--kcal) 28%,transparent);cursor:pointer}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12px;color:var(--muted)}input[type=text],input[type=number],input[type=password],input[type=time],input[type=date],input[type=search],select,textarea{width:100%;background:var(--bg-elev-2);border:1px solid var(--line);border-radius:11px;padding:11px 12px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus,select:focus,textarea:focus{border-color:var(--line-strong)}textarea{resize:vertical;min-height:66px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.segmented{display:flex;gap:4px;background:var(--bg-elev-2);border:1px solid var(--line);border-radius:12px;padding:4px;overflow-x:auto;scrollbar-width:none}.segmented::-webkit-scrollbar{display:none}.segmented button{flex:1;white-space:nowrap;border:0;background:none;color:var(--muted);border-radius:9px;padding:8px 10px;font-size:13px;cursor:pointer}.segmented button.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow)}.chip{border:1px solid var(--line);background:var(--bg-elev-2);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;white-space:nowrap}.chip.active{border-color:var(--kcal);color:var(--kcal)}.meal-picker{display:grid;grid-template-columns:1fr 1fr;gap:6px}.meal-picker button{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--bg-elev-2);border-radius:10px;padding:9px 10px;font-size:13px;color:var(--muted);text-align:left;cursor:pointer}.meal-picker button.active{border-color:var(--kcal);color:var(--text);background:color-mix(in srgb,var(--kcal) 8%,transparent)}.journal-empty{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin-bottom:12px;border-radius:var(--radius-sm);border:1px dashed var(--line)}.meal-section{padding:10px 0 12px}.meal-section+.meal-section{border-top:1px solid var(--line)}.meal-section:first-child{padding-top:0}.meal-section:last-child{padding-bottom:0}.meal-section-head{display:flex;align-items:center;gap:8px}.meal-section:not(.empty) .meal-section-head{margin-bottom:8px}.meal-title{flex:1;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:650}.meal-section.empty .meal-title{color:var(--muted);font-weight:500}.meal-kcal{font-size:13px;font-weight:650;font-variant-numeric:tabular-nums}.meal-add{width:30px;height:30px;padding:0;border-radius:9px;font-size:18px;line-height:1;flex:none}.meal-sub{display:flex;justify-content:flex-end;gap:10px;padding:6px 2px 0;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}.plan-cta{padding:13px 14px;border-style:dashed;color:var(--kcal);font-size:15px}.plan-left{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg-elev-2)}.plan-left b{font-size:18px}.plan-toggle{display:flex;align-items:flex-start;gap:12px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer}.plan-toggle.bare{padding:0;border:0}.plan-toggle input{width:20px;height:20px;margin-top:1px;flex:none;accent-color:var(--kcal)}.plan-toggle .grow{display:flex;flex-direction:column;gap:2px}.plan-card{padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev-2)}.plan-card .chip{background:var(--bg-elev)}.plan-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.plan-card input.grams,.snack-line input.grams{width:80px;flex:none;text-align:right}.picked{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--kcal);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--kcal) 6%,transparent)}.plan-items,.planned-items{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13.5px}.snack-line{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:var(--radius-sm);background:var(--bg-elev)}.snack-line select{width:auto;flex:1}.plan-proj{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center}.plan-proj .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.plan-proj .v{font-size:16px;font-weight:650;font-variant-numeric:tabular-nums}.plan-proj .v .muted{font-size:12px;font-weight:400}.plan-proj .d{font-size:11.5px;color:var(--muted)}.plan-proj .d.good{color:var(--kcal)}.plan-proj .d.bad{color:var(--danger)}.plan-proj.compact{margin-top:8px}.planned{display:flex;flex-direction:column;gap:8px;margin-top:6px;padding:10px 12px;border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--protein) 5%,transparent)}.planned-head{display:flex;align-items:baseline;gap:8px;font-size:14px;font-weight:600}.planned-tag{padding:1px 6px;border-radius:6px;background:color-mix(in srgb,var(--protein) 16%,transparent);color:var(--protein);font-size:10.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;vertical-align:1px}.label-pick{padding:16px 14px;font-size:15px}.label-photo{display:block;width:100%;max-height:46vh;object-fit:contain;margin-top:8px;border-radius:var(--radius-sm);border:1px solid var(--line);background:#05080b}.label-photo-wrap summary{cursor:pointer}.weight-row{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:transparent;text-align:left;font-size:14px;cursor:pointer}.weight-cta{color:var(--kcal);font-weight:600}.weight-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.weight-now{font-size:40px;font-weight:700;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}.weight-now span{margin-left:4px;font-size:15px;font-weight:500;color:var(--muted)}.weight-trend{text-align:right}.weight-trend .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.weight-trend .v{font-size:20px;font-weight:650;color:var(--protein);font-variant-numeric:tabular-nums}.stat-row .v.good{color:var(--kcal)}.stat-row .v.bad{color:var(--danger)}.chart-legend{display:flex;gap:12px}.chart-legend span{display:inline-flex;align-items:center;gap:5px}.weight-chart{width:100%;height:auto;display:block;overflow:visible}.weight-chart .axis{font-size:10px;fill:var(--muted);font-variant-numeric:tabular-nums}.weight-chart .axis.goal{fill:var(--kcal)}.entry{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.action-list{display:flex;flex-direction:column;gap:8px}.action-list button{display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-elev-2);cursor:pointer}.action-list button b{display:block;font-size:15px}.action-list button small{display:block;margin-top:2px;font-size:12.5px;color:var(--muted)}.action-list button.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 6%,transparent)}.action-list button.danger small{color:color-mix(in srgb,var(--danger-text) 75%,transparent)}.action-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--bg-elev);font-size:18px}.hold-tip{margin-top:12px}.toast{position:fixed;left:16px;right:16px;bottom:calc(150px + var(--safe-bottom));z-index:35;display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 32px);margin-inline:auto;padding:10px 10px 10px 16px;border:1px solid var(--line-strong);border-radius:14px;background:var(--bg-elev-2);box-shadow:var(--shadow);font-size:13.5px;animation:fade .2s ease}@media(min-width:760px){.toast{bottom:32px}}.recipe-line{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;background:var(--bg-elev-2);border-radius:var(--radius-sm)}.recipe-line+.recipe-line{margin-top:6px}.recipe-line{flex-wrap:wrap}.recipe-role{flex-basis:100%}.recipe-role select{padding:7px 10px;font-size:13px;color:var(--muted)}.recipe-role select.has-role{color:var(--protein);border-color:color-mix(in srgb,var(--protein) 45%,transparent)}.addition-line{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bg-elev)}.addition-line+.addition-line{margin-top:6px}.addition-line .segmented{flex:1}.cook-ratio{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px}.cook-ratio input.grams{width:72px;flex:none;text-align:right}.badge.planner{background:color-mix(in srgb,var(--protein) 14%,transparent);color:var(--protein)}.recipe-line input.grams{width:72px;flex:none;padding:8px;text-align:right}.badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;background:color-mix(in srgb,var(--kcal) 12%,transparent);color:var(--kcal);font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;vertical-align:1px}.scanner{position:relative;width:100%;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;background:#05080b;border:1px solid var(--line)}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scanner-frame{position:absolute;top:26%;right:12%;bottom:26%;left:12%;border:2px solid color-mix(in srgb,var(--kcal) 90%,transparent);border-radius:12px;box-shadow:0 0 0 100vmax #04070a73;pointer-events:none}.scanner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#04070ab8;color:var(--muted);font-size:13px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#04070a99;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease}.sheet{width:100%;max-width:560px;max-height:92vh;overflow-y:auto;background:var(--bg-elev);border:1px solid var(--line);border-radius:22px 22px 0 0;padding:8px 16px calc(20px + var(--safe-bottom));animation:rise .22s cubic-bezier(.2,.8,.3,1);-webkit-overflow-scrolling:touch}.sheet-handle{width:40px;height:4px;border-radius:2px;background:var(--line);margin:6px auto 12px}.sheet h2{margin-bottom:12px}@keyframes rise{0%{transform:translateY(24px);opacity:.4}}@keyframes fade{0%{opacity:0}}.chart{width:100%;height:132px;display:block;overflow:visible}.day-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:11px 2px;cursor:pointer;color:inherit}.day-row:last-child{border-bottom:0}.day-progress{width:46px;flex:none;height:5px;border-radius:3px;background:var(--bg-elev-2);overflow:hidden}.banner{border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;border:1px solid}.banner.error{color:var(--danger-text);border-color:color-mix(in srgb,var(--danger) 40%,transparent);background:color-mix(in srgb,var(--danger) 10%,transparent)}.banner.info{color:var(--muted);border-color:var(--line);background:var(--bg-elev-2)}.spinner{width:16px;height:16px;border:2px solid color-mix(in srgb,var(--text) 25%,transparent);border-top-color:var(--text);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login .card{width:100%;max-width:340px;text-align:center}.login img{width:62px;height:62px;margin-bottom:12px}@media(min-width:760px){.app{padding-bottom:32px}.topbar{max-width:860px;width:100%;margin:0 auto}.nav{position:sticky;top:0;bottom:auto;border-top:0;border-bottom:1px solid var(--line);padding:8px;order:-1}.nav button{flex-direction:row;gap:8px;font-size:13px;max-width:160px;padding:9px 12px}.fab{bottom:28px;right:28px}.hero{gap:28px}.ring{width:160px;height:160px}}.theme-picks{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.theme-pick{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 6px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-elev-2);font-size:13px;cursor:pointer}.theme-pick.active{border-color:var(--kcal);box-shadow:0 0 0 1px var(--kcal)}.theme-pick .swatch{position:relative;width:40px;height:40px;border-radius:50%;border:1px solid var(--line-strong);overflow:hidden}.theme-pick .swatch span{position:absolute;right:0;bottom:0;width:50%;height:50%}
