:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--fog:#dce6ee;--ink:#15202b;--muted:#5b6b7a;--porcelain:#f7f9fb;--line:#c5d2dc;--protein:#0b7a74;--protein-soft:#d5ecea;--fiber:#3b4f8a;--fiber-soft:#dce3f2;--fasting:#3d5278;--fasting-soft:#d7deea;--carbs:#8a6a3d;--fat:#6b5a4a;--danger:#b4232c;--display:"Fraunces", "Iowan Old Style", Georgia, serif;--sans:"Sora", "Segoe UI", Helvetica, sans-serif;font-family:var(--sans);color:var(--ink);background:var(--fog);font-weight:400;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(1200px 480px at 50% -80px, #eef4f8 0%, transparent 70%), var(--fog);margin:0}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--protein);outline-offset:3px}.app{width:min(520px,100%);min-height:100dvh;padding:24px 18px calc(104px + env(safe-area-inset-bottom));margin:0 auto}.app.wide{padding-bottom:28px}.page{gap:18px;display:grid}.top{justify-content:space-between;align-items:center;gap:12px;display:flex}.top h1,.page h1,.date-nav h1{font-family:var(--display);letter-spacing:-.03em;margin:0;font-size:2rem;font-weight:560;line-height:1.15}.lede,.muted,.status,.error{color:var(--muted);margin:0;font-size:.95rem}.error{color:var(--danger)}.card{background:var(--porcelain);border:1px solid var(--line);border-radius:10px;padding:16px 16px 15px}.goal-stack{gap:18px;display:grid}.goal{gap:8px;display:grid}.goal-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.goal-label{font-size:.92rem;font-weight:600}.goal-value{font-variant-numeric:tabular-nums;font-size:.92rem}.goal.protein .goal-label,.goal.protein .goal-value,.goal-label.protein{color:var(--protein)}.goal.fiber .goal-label,.goal.fiber .goal-value,.goal-label.fiber{color:var(--fiber)}.goal-label.fasting{color:var(--fasting)}.goal.calories .goal-label,.goal.calories .goal-value,.goal-label.calories,.goal-label.carbs,.goal-label.fat,.cal-plain{color:var(--muted);font-size:.9rem}.goal-label.carbs{color:var(--carbs)}.goal-label.fat{color:var(--fat)}.other-macros{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding-top:2px;display:grid}.other-macros-two{grid-template-columns:repeat(2,minmax(0,1fr))}.other-macros span{color:var(--muted);gap:1px;display:grid}.other-macros strong{font-variant-numeric:tabular-nums;color:var(--ink);font-size:1.05rem;font-weight:600}.other-macros em{font-size:.75rem;font-style:normal;font-weight:600}.track{background:var(--protein-soft);border-radius:3px;height:12px;overflow:hidden}.goal.fiber .track{background:var(--fiber-soft)}.goal.calories .track{background:#d9e1e8;height:7px}.fill{background:var(--protein);width:0;height:100%}.goal.fiber .fill{background:var(--fiber)}.goal.calories .fill{background:#7d8b97}.date-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.date-nav h1{text-align:center;flex:1}.icon-btn,.btn,.btn-secondary,.btn-danger,.linkish{background:var(--ink);color:#f4f7fa;cursor:pointer;border:1px solid #0000;border-radius:8px;min-height:48px;padding:0 16px;font-weight:500}.icon-btn{background:var(--porcelain);width:44px;color:var(--ink);border-color:var(--line);font-family:var(--display);padding:0;font-size:1.35rem}.btn-secondary,.linkish{background:var(--porcelain);color:var(--ink);border-color:var(--line)}.btn-danger{color:var(--danger);background:0 0;border-color:#e3b8bb}.linkish{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn:disabled,.btn-secondary:disabled,.icon-btn:disabled{opacity:.5;cursor:default}.row-actions{gap:10px;display:grid}.row-actions.two{grid-template-columns:1fr 1fr}.meal-list{gap:8px;display:grid}.meal-card{grid-template-columns:auto 1fr;align-items:baseline;gap:2px 14px;padding:14px 16px;text-decoration:none;display:grid}.meal-card time{color:var(--fiber);grid-area:1/1/4;width:5.6rem;font-size:.78rem;font-weight:600}.meal-card strong{font-size:1.02rem;font-weight:600}.meal-card span{color:var(--muted);font-size:.86rem}.field{gap:6px;display:grid}.field span,.field-label{color:var(--muted);font-size:.8rem;font-weight:600}.field em,.when-fold em,.extras em{color:#8a9aa8;margin-left:6px;font-style:normal;font-weight:500}input[type=text],input[type=email],input[type=number],input[type=date],input[type=time],input[type=search],select,textarea,.otp-input{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;min-height:48px;padding:12px 14px}.otp-input{letter-spacing:.28em;text-align:center;font-variant-numeric:tabular-nums;font-size:1.35rem}textarea{resize:vertical;min-height:96px}.photo{gap:10px;display:grid}.photo input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.photo-btn{min-height:124px;color:var(--muted);cursor:pointer;text-align:center;background:#eef3f7;border:1px dashed #9aafbd;border-radius:10px;justify-content:center;align-items:center;padding:16px;display:flex}.photo img{object-fit:cover;border-radius:10px;width:100%;max-height:240px}.editor-items{gap:12px;display:grid}.item-card{border:1px solid var(--line);background:#fff;border-radius:10px;gap:10px;padding:12px;display:grid}.item-card .text-back{color:var(--danger);justify-self:start;min-height:36px;font-weight:500}.item-actions{flex-wrap:wrap;gap:4px 16px;display:flex}.item-card .text-back.combine,.combine-all{color:var(--fiber);text-align:left}.combine-all{justify-self:start;min-height:36px}.item-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.portion{gap:8px;display:grid}.portion-row{grid-template-columns:1fr 1.15fr;gap:8px;display:grid}.portion-chips{flex-wrap:wrap;gap:6px;display:flex}.portion-chip{border:1px solid var(--line);min-height:36px;color:var(--ink);background:#fff;border-radius:999px;padding:0 12px;font-size:.88rem;font-weight:600}.portion-chip.on{background:var(--protein-soft);color:var(--protein);border-color:#9ec9c5}.portion-eq{color:var(--muted);margin:0;font-size:.86rem}.check{align-items:center;gap:10px;min-height:48px;display:flex}.check input{width:20px;height:20px}.nav{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f9fbeb;border-radius:14px;grid-template-columns:1fr 1fr 1fr 1fr;gap:4px;width:min(480px,100% - 24px);padding:6px;display:grid;position:fixed;transform:translate(-50%)}.nav a{min-height:52px;color:var(--muted);letter-spacing:.01em;border-radius:10px;place-items:center;gap:2px;font-size:.72rem;font-weight:600;text-decoration:none;display:grid}.nav a.active{background:var(--ink);color:#f4f7fa}.nav-ico{width:18px;height:18px}.banner{color:#334554;background:#e4edf3;border-radius:8px;padding:12px 14px;font-size:.9rem}.assumptions{color:var(--muted);background:#e8eef3;border-radius:8px;gap:4px;padding:12px 14px;font-size:.9rem;display:grid}.saved-row{gap:10px;display:grid}.saved-main{text-align:left;min-height:0;color:inherit;cursor:pointer;background:0 0;border:0;gap:4px;padding:0;display:grid}.login{place-items:center;min-height:100dvh;padding:32px 18px;display:grid}.login-card{gap:20px;width:min(420px,100%);display:grid}.login-mark{width:56px;height:56px}.login h1{font-family:var(--display);letter-spacing:-.04em;margin:8px 0 0;font-size:2.6rem;font-weight:560}.totals-line{color:var(--muted);gap:2px;font-size:.92rem;display:grid}.lookup{gap:10px;display:grid}.hit-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.hit{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;gap:2px;width:100%;min-height:52px;padding:10px 12px;display:grid}.hit span{color:var(--muted);font-size:.85rem}.scan-stage{background:#111;border-radius:10px;position:relative;overflow:hidden}.scan-video{aspect-ratio:4/3;object-fit:cover;background:#111;width:100%;min-height:180px;display:block}.scan-hint{color:#fff;text-align:center;text-shadow:0 1px 4px #000000a6;margin:0;font-size:.85rem;position:absolute;bottom:12px;left:12px;right:12px}.file-btn{position:relative}.file-btn input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.range-toggle,.period-toggle{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.period-toggle{grid-template-columns:1fr 1fr 1fr 1fr}.period-toggle .btn,.period-toggle .btn-secondary,.range-toggle .btn,.range-toggle .btn-secondary{padding:0 8px;font-size:.82rem}.when{gap:10px;display:grid}.when-grid .duration-field{grid-column:1/-1;gap:8px;display:grid}.duration-presets{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.duration-presets .btn,.duration-presets .btn-secondary{min-height:40px;padding:0 8px;font-size:.82rem}.last-ate{border-left:3px solid var(--protein);gap:2px;padding:14px 16px;display:grid}.last-ate-label{font-family:var(--display);letter-spacing:-.02em;margin:0;font-size:1.35rem;font-weight:560}.fasting-card{gap:8px}.fasting-card .composer-kicker{margin:0}.fast-clock{font-variant-numeric:tabular-nums;align-items:baseline;gap:10px;margin:2px 0 0;display:flex}.fast-unit{align-items:baseline;gap:3px;display:inline-flex}.fast-unit strong{font-family:var(--display);letter-spacing:-.04em;font-size:2.35rem;font-weight:560;line-height:1}.fast-unit em{color:var(--muted);font-size:.85rem;font-style:normal;font-weight:600}.fasting-empty .btn{justify-self:start;margin-top:4px}.day-rhythm{gap:8px;margin-top:8px;display:grid}.day-rhythm-track{background:var(--fasting-soft);border-radius:999px;height:28px;position:relative;overflow:hidden}.day-rhythm-track.compact{height:14px}.day-rhythm-eat{background:var(--protein);border-radius:999px;min-width:7px;position:absolute;top:5px;bottom:5px}.day-rhythm-track.compact .day-rhythm-eat{min-width:5px;top:2px;bottom:2px}.day-rhythm-now{background:var(--ink);z-index:2;width:2px;position:absolute;top:0;bottom:0;transform:translate(-50%)}.day-rhythm-future{background:color-mix(in srgb, var(--porcelain) 48%, transparent);pointer-events:none;position:absolute;top:0;bottom:0;right:0}.day-rhythm-axis{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;font-size:.68rem;display:flex}.day-rhythm-meta{gap:4px;display:grid}.day-rhythm-caption{color:var(--muted);margin:0;font-size:.86rem}.day-rhythm-legend{gap:14px;margin:0;font-size:.72rem;display:flex}.day-rhythm-legend span{align-items:center;gap:6px;display:inline-flex}.day-rhythm-swatch{background:var(--fasting-soft);border-radius:999px;width:8px;height:8px;display:inline-block;box-shadow:inset 0 0 0 1px #15202b14}.day-rhythm-swatch.eat{background:var(--protein)}.rhythm-chart{gap:7px;display:grid}.rhythm-chart-axis,.rhythm-chart-row{grid-template-columns:2.1rem minmax(0,1fr) 1.2rem;align-items:center;gap:8px;display:grid}.rhythm-chart-row{min-width:0;text-decoration:none}.rhythm-chart-axis span,.rhythm-chart-row>span{color:var(--muted);font-size:.68rem}.rhythm-chart-row .chart-num{text-align:right;font-variant-numeric:tabular-nums}.fasting-chart-card .day-rhythm-legend{margin-top:2px}.empty{text-align:center;padding:28px 8px 8px}.empty p{color:var(--muted);margin:0}.chart-card{gap:12px;display:grid}.chart{align-items:end;gap:4px;min-height:160px;display:grid}.chart-col{text-align:center;grid-template-rows:120px auto auto;gap:4px;min-width:0;text-decoration:none;display:grid}.chart-col span{color:var(--muted);font-size:.68rem;overflow:hidden}.chart-num{font-variant-numeric:tabular-nums}.chart-track{background:#d7e0e8;border-radius:3px 3px 2px 2px;height:120px;position:relative;overflow:hidden}.chart-fill{position:absolute;bottom:0;left:16%;right:16%}.chart-fill.protein{background:var(--protein)}.chart-fill.fiber{background:var(--fiber)}.chart-fill.calories{background:#7d8b97}.chart-fill.carbs{background:var(--carbs)}.chart-fill.fat{background:var(--fat)}.chart-fill.fasting{background:var(--fasting)}.fasting-chart-card{gap:14px}.fast-chart{grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;display:grid}.fast-axis{height:168px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;flex-direction:column;justify-content:space-between;font-size:.62rem;line-height:1;display:flex}.fast-days{gap:4px;min-width:0;display:grid}.fast-col{grid-template-rows:168px auto auto}.fast-col .chart-num{white-space:nowrap}.fast-track{background:var(--fasting-soft);height:168px}.fast-midnight{border-top:1px dashed #8a9bb0;position:absolute;top:33.333%;left:0;right:0}.fast-band{background:linear-gradient(180deg, #5b7196 0%, var(--fasting) 100%);border-radius:999px;position:absolute;left:14%;right:14%;box-shadow:inset 0 0 0 1px #15202b14}.fast-band.in-progress{opacity:.88;background:linear-gradient(#7f93b3 0%,#4d6488 100%)}.chart-goal-line{border-top:1px dashed #6c7c89;position:absolute;left:0;right:0}.editor{gap:16px;display:grid}.add-meal{gap:16px}.review-top{justify-content:space-between;align-items:center;display:flex}.text-back,.text-action{color:var(--fiber);cursor:pointer;text-align:left;background:0 0;border:0;min-height:44px;padding:0;font-weight:600}.text-action{text-align:center;color:var(--ink);text-underline-offset:3px;text-decoration:underline}.review-head,.composer{gap:10px;display:grid}.composer{background:linear-gradient(#fffcf7f5 0%,#f7f9fbf0 100%);border:1px solid #d3c4ae;border-radius:18px;padding:22px 18px 20px;position:relative;box-shadow:0 18px 40px -28px #2e201073,inset 0 1px #fffc}.composer:before{content:"";background:var(--protein);border-radius:0 2px 2px 0;width:3px;position:absolute;inset:10px auto 10px 0}.composer-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--protein);margin:0;font-size:.72rem;font-weight:600}.composer h1,.review-head h1{max-width:16ch}.plate-note textarea{background:#fffdf8;border-color:#d8c9b4;min-height:120px}.method-row{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.saved-shelf{background:linear-gradient(#d5ecea8c 0%,#fffcf7b8 100%);border:1px solid #b7d4d1;border-radius:14px;gap:10px;padding:14px 14px 12px;animation:.42s both rise;display:grid}.saved-shelf-head{gap:4px;display:grid}.saved-shelf .composer-kicker{color:var(--protein)}.saved-picker{gap:10px;display:grid}.saved-hits{max-height:220px;padding-right:2px;overflow:auto}.saved-hit{background:#ffffffe0;border-color:#c5d8d5}.saved-hit strong{font-family:var(--display);letter-spacing:-.02em;font-size:1.05rem;font-weight:560}.saved-keep{background:var(--protein-soft);border:1px solid #b7d4d1;border-radius:12px;gap:10px;padding:12px 14px;display:grid}.method-tile{min-height:92px;color:var(--ink);cursor:pointer;background:#ffffff8c;border:1px dashed #b7c4ce;border-radius:12px;justify-items:center;gap:4px;padding:12px 8px 10px;display:grid}.method-tile svg{width:22px;height:22px;color:var(--fiber)}.method-tile strong{font-size:.86rem;font-weight:600}.method-tile span{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;font-size:.68rem}.method-tile.on{border-style:solid;border-color:var(--protein);background:var(--protein-soft)}.helper-panel,.add-food-panel{border:1px solid var(--line);background:#ffffffb8;border-radius:12px;gap:10px;padding:12px;display:grid}.helper-panel.nested{background:0 0;border:0;border-radius:0;padding:0}.helper-copy,.hint{color:var(--muted);margin:0;font-size:.88rem}.capture-actions{gap:10px;display:grid}.continue-banner{text-align:left;background:var(--protein-soft);cursor:pointer;border:1px solid #b7d4d1;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:64px;padding:12px 14px;display:flex}.continue-banner strong,.continue-meta{display:block}.continue-meta{color:var(--muted);font-size:.86rem;font-weight:400}.continue-go{color:var(--protein);white-space:nowrap;font-weight:600}.when-fold,.extras{border:1px solid var(--line);background:#fff;border-radius:10px;padding:4px 12px}.when-fold summary,.extras summary{cursor:pointer;justify-content:space-between;align-items:center;gap:10px;min-height:48px;font-size:.9rem;list-style:none;display:flex}.when-fold summary::-webkit-details-marker{display:none}.extras summary::-webkit-details-marker{display:none}.when-fold[open],.extras[open]{padding-bottom:12px}.when-fold .when,.extras .item-grid{margin-top:8px}.tracked-grid input{font-weight:600}.composer,.method-tile,.continue-banner{animation:.42s both rise}.method-tile:nth-child(2){animation-delay:70ms}.method-tile:nth-child(3){animation-delay:.14s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
