*{box-sizing:border-box}:root{--bg: #f8fafc;--card: #ffffff;--ink: #111827;--muted: #6b7280;--line: #e5e7eb;--accent: #2563eb;--accent-ink: #ffffff;--error: #dc2626;--ok: #16a34a;--swipe-bg: #f1f1f5}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:430px;margin:0 auto;padding:20px 16px calc(32px + env(safe-area-inset-bottom))}.page.center{min-height:80vh;display:flex;flex-direction:column;justify-content:center;text-align:center;gap:8px;color:var(--muted)}.page.center h1{color:var(--ink)}header{margin-bottom:16px}.logo{display:block;width:100%;height:auto;margin-bottom:14px;border-radius:14px}h1{font-size:1.5rem;margin:0 0 2px}.subtitle{margin:0;color:var(--muted);font-size:.95rem}.tab-toggle{display:flex;gap:4px;margin-top:12px;padding:4px;border-radius:12px;background:var(--line)}.tab-toggle button{flex:1;padding:8px 0;border:none;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.tab-toggle button.selected{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #0000001f}.week-pager{display:flex;align-items:center;gap:8px;margin-bottom:10px}.pager-arrow{width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:1.4rem;line-height:1;cursor:pointer}.pager-arrow:disabled{opacity:.3;cursor:default}.pager-title{flex:1;text-align:center;display:flex;flex-direction:column}.pager-title strong{font-size:1rem}.pager-title span{font-size:.8rem;color:var(--muted)}.day-chips{display:flex;gap:5px;margin-bottom:12px}.day-chip{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 0;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:.7rem;cursor:pointer}.day-chip strong{font-size:.95rem;color:var(--ink)}.day-chip.is-today{border-color:var(--accent)}.day-chip.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.day-chip.selected strong{color:var(--accent-ink)}.day-chip:disabled{opacity:.35;cursor:default}.center-note{color:var(--muted);text-align:center;margin-top:24px}.notes-card{background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;padding:12px 14px;margin-bottom:12px}.notes-card h2{margin:0 0 4px;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.notes-card p{margin:0;font-size:.9rem;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}.notes-card a{color:var(--accent);font-weight:600}.field-row{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px}.field-row.has-error{border-color:var(--error)}.field-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.field-head label{font-weight:600;font-size:.95rem;flex:1}.field-head input{width:7.5rem;padding:10px 12px;font-size:1.1rem;text-align:right;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink)}.field-head input:focus{outline:2px solid var(--accent);border-color:transparent}.field-meta{margin:8px 0 0;font-size:.8rem;color:var(--muted);display:flex;gap:14px}.field-meta strong{color:var(--ink);font-weight:600}.field-error{margin:6px 0 0;color:var(--error);font-size:.85rem}.toggle{width:52px;height:32px;border-radius:16px;border:none;padding:2px;background:var(--line);display:inline-flex;align-items:center;cursor:pointer;transition:background .15s ease}.toggle .knob{width:28px;height:28px;border-radius:50%;background:var(--card);box-shadow:0 1px 3px #00000040;transition:transform .15s ease}.toggle.on{background:var(--ok)}.toggle.on .knob{transform:translate(20px)}.week-strip{display:flex;gap:4px;margin-top:10px}.week-strip .day{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:3px 0;border:none;border-radius:8px;background:var(--bg);font-family:inherit;font-size:.65rem;color:var(--muted);min-height:30px;cursor:pointer}.week-strip .day:disabled{opacity:.4;cursor:default}.week-strip .day.filled{background:#eff6ff;color:var(--accent)}.week-strip .day.today{outline:1.5px solid var(--accent)}.week-strip .day-letter{opacity:.7}.week-strip .day-value{font-weight:600;font-size:.7rem;min-height:.9rem}.save-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#1118278c;animation:save-fade-in .15s ease}.save-overlay.saved{pointer-events:none}.save-card{display:flex;flex-direction:column;align-items:center;gap:8px;width:min(280px,100%);padding:28px 24px;border-radius:18px;background:var(--card);color:var(--ink);text-align:center;box-shadow:0 10px 30px #00000040}.save-card strong{font-size:1.25rem}.save-card span{font-size:.95rem;color:var(--muted)}.save-spinner{width:44px;height:44px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);animation:save-spin .8s linear infinite}.save-overlay.error .save-spinner{border-top-color:var(--error)}.save-check{width:44px;height:44px;border-radius:50%;background:var(--ok);color:#fff;font-size:1.6rem;font-weight:700;line-height:44px}@keyframes save-spin{to{transform:rotate(360deg)}}@keyframes save-fade-in{0%{opacity:0}}.submit-error{color:var(--error);font-size:.9rem;margin:10px 2px 0}.food-day.is-loading{opacity:.5}.food-totals{display:flex;gap:8px;margin-bottom:12px}.food-totals div{flex:1;min-width:0;display:flex;flex-direction:column;padding:10px 10px 10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.food-totals strong{font-size:1.25rem;white-space:nowrap}.food-totals span{font-size:.8rem;color:var(--muted)}.meal-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px}.meal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.meal-title{flex:1;min-width:0}.meal-title .meal-macros{display:block;margin-top:2px;color:var(--muted);font-size:.85rem}.meal-head h2{flex:1;margin:0;font-size:.95rem}.meal-add{border:none;background:none;padding:4px 0 4px 6px;color:var(--accent);font:inherit;font-size:.85rem;font-weight:700;cursor:pointer}.meal-head span{font-size:.8rem;color:var(--muted)}.meal-empty{margin:6px 0 0;font-size:.85rem;color:var(--muted)}.food-list{list-style:none;margin:6px 0 0;padding:0}.food-line{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.food-line:last-child{padding-bottom:0}.food-text{display:flex;flex-direction:column;min-width:0}.food-name{font-size:.9rem;overflow-wrap:anywhere}.food-sub{font-size:.75rem;color:var(--muted)}.food-nums{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}.food-nums strong{font-size:.95rem}.food-nums span{font-size:.75rem;color:var(--muted)}.swipe-row{position:relative;overflow:hidden;border-top:1px solid var(--line)}.swipe-row.is-revealed{background:var(--swipe-bg)}.swipe-row .swipe-content{position:relative;border-top:none;background:var(--card);touch-action:pan-y;user-select:none;-webkit-user-select:none;transition:transform .2s ease}.swipe-row .swipe-content{padding-bottom:8px}.swipe-row:last-child .swipe-content{padding-bottom:0}.swipe-row .swipe-content:after{content:"";position:absolute;top:0;bottom:0;left:100%;width:16px;background:var(--card)}.swipe-row .swipe-content.dragging{transition:none}.swipe-delete{position:absolute;top:8px;right:8px;bottom:8px;width:84px;border:none;border-radius:12px;background:var(--error);color:#fff;font:inherit;font-size:.85rem;font-weight:700;cursor:pointer}.swipe-row:not(.is-revealed) .swipe-delete{visibility:hidden}.swipe-row.is-busy .swipe-content{opacity:.6}.food-line.untracked .food-name{color:var(--muted);font-style:italic}.food-error{margin-top:24px;text-align:center;color:var(--muted)}.food-error button{padding:10px 18px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;overflow-y:auto;background:var(--bg)}.sheet-body{max-width:430px;margin:0 auto;padding:20px 16px calc(32px + env(safe-area-inset-bottom))}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-head h2{margin:0;font-size:1.3rem}.sheet-close{width:44px;height:44px;flex-shrink:0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font-size:1.4rem;line-height:1;cursor:pointer}.food-search{width:100%;margin:14px 0 10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem}.food-search:focus{outline:2px solid var(--accent);border-color:transparent}.results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.result{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.tag{display:inline-block;margin-top:3px;padding:1px 7px;border-radius:6px;background:#fef3c7;color:#92400e;font-size:.7rem;font-weight:700}.portion{margin-top:14px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.portion h3{margin:8px 0 0;font-size:1.05rem}.portion-brand{margin:2px 0 0;color:var(--muted);font-size:.85rem}.portion-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;font-size:.9rem;font-weight:600}.portion-row select{flex:1;max-width:65%;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit;font-weight:400}.stepper{display:flex;align-items:center;gap:6px}.stepper button{width:44px;height:44px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font-size:1.3rem;cursor:pointer}.stepper input{width:5.5rem;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font-size:1.1rem;text-align:center}.stepper input:focus,.portion-row select:focus{outline:2px solid var(--accent);border-color:transparent}.portion-macros{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px;text-align:center}.portion-macros div{display:flex;flex-direction:column;padding:8px 0;border-radius:10px;background:var(--bg)}.portion-macros strong{font-size:1rem}.portion-macros span{color:var(--muted);font-size:.7rem}.primary-button{width:100%;margin-top:12px;padding:14px;border:none;border-radius:12px;background:var(--accent);color:var(--accent-ink);font:inherit;font-size:1rem;font-weight:700;cursor:pointer}.primary-button:disabled{opacity:.5;cursor:default}.link-button{padding:0;border:none;background:none;color:var(--accent);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.pending{margin-top:14px;padding:12px 14px;border:1px solid var(--accent);border-radius:14px;background:var(--card)}.pending .food-list{margin:0}.pending .food-line{align-items:center}.pending .food-line:first-child{border-top:none;padding-top:0}.remove{width:32px;height:32px;flex-shrink:0;border:none;border-radius:8px;background:var(--bg);color:var(--muted);font-size:1.1rem;cursor:pointer}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:60;transform:translate(-50%);padding:10px 16px;border-radius:12px;background:var(--ink);color:#fff;font-size:.9rem;font-weight:600;white-space:nowrap;pointer-events:none;animation:save-fade-in .15s ease}.sheet-modes{margin-top:14px}.describe{margin-top:12px}.describe-box{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem;line-height:1.4;resize:vertical}.describe-box:focus{outline:2px solid var(--accent);border-color:transparent}.describe-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;padding:max(12vh,calc(16px + env(safe-area-inset-top))) 16px 16px;background:#11182766}.describe-modal[hidden]{display:none}.describe-card{max-width:398px;margin:0 auto;padding:14px 16px 16px;border-radius:16px;background:var(--bg);box-shadow:0 12px 40px #11182740}.describe-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.describe-card .describe{margin-top:10px}.describe-hint{margin:6px 2px 0;color:var(--muted);font-size:.8rem}.read-preview{list-style:none;margin:12px 0 0;padding:0;animation:save-fade-in .15s ease}.read-preview li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid var(--line);font-size:.9rem}.claude-num{color:#7c3aed;font-size:.75rem;font-weight:600;white-space:nowrap}.pending .confirm-line{align-items:flex-start}.confirm-line.unsure{margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:10px;background:#fffbeb}.confirm-main{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:0;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.food-said{color:var(--muted);font-size:.75rem;font-style:italic}.check-note{color:#b45309;font-size:.75rem;font-weight:700}.confirm-actions{display:flex;flex-direction:column;align-items:center;gap:4px}.swap{padding:2px 0;border:none;background:none;color:var(--accent);font:inherit;font-size:.75rem;font-weight:700;cursor:pointer}.unmatched{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:10px 12px;border-radius:10px;background:#fffbeb;font-size:.85rem}.unmatched p{margin:0}.unmatched div{display:flex;gap:12px;flex-shrink:0}.link-button.muted{color:var(--muted)}.confirm-totals{display:flex;flex-direction:column;gap:2px;margin-top:10px;font-size:.85rem}.confirm-totals span+span{font-size:.8rem}.confirm-totals .claude-total{color:#7c3aed}.confirm-totals .label-total{color:#0f766e}.portion-note{margin:8px 0 0;color:var(--muted);font-size:.85rem;font-style:italic}.alternates{margin-top:14px}.sheet-section{margin:16px 0 8px;color:var(--muted);font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.scan{margin-top:12px}.scan-camera{position:relative;overflow:hidden;border-radius:14px;background:#000;aspect-ratio:4 / 3}.scan-camera video{width:100%;height:100%;object-fit:cover;display:block}.scan-guide{position:absolute;left:10%;right:10%;top:32%;bottom:32%;border:3px solid #fff;border-radius:12px;box-shadow:0 0 0 9999px #00000059;pointer-events:none}.scan-hint{position:absolute;left:0;right:0;bottom:10px;margin:0;color:#fff;font-size:.85rem;font-weight:600;text-align:center;text-shadow:0 1px 3px rgb(0 0 0 / .6)}.scan-message{margin:12px 0 0;color:var(--muted);font-size:.95rem}.scan-product{display:flex;flex-direction:column;gap:3px;margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card);animation:save-fade-in .15s ease}.label-num{color:#0f766e;font-size:.85rem;font-weight:600}.scan-manual{margin-top:16px}.scan-manual label[for]{display:block;margin-bottom:6px;color:var(--muted);font-size:.85rem;font-weight:600}.scan-manual-row{display:flex;gap:8px}.scan-manual-row input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem;letter-spacing:.04em}.scan-manual-row input:focus{outline:2px solid var(--accent);border-color:transparent}.secondary-button{padding:10px 14px;border:1px solid var(--accent);border-radius:10px;background:var(--card);color:var(--accent);font:inherit;font-size:.95rem;font-weight:700;cursor:pointer}.secondary-button:disabled{opacity:.5;cursor:default}.scan-photo{display:inline-block;margin-top:12px}.detail{margin-top:6px}.detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-head strong{font-size:1.05rem}.round-button{width:42px;height:42px;flex-shrink:0;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);font:inherit;font-size:1.3rem;line-height:1;cursor:pointer}.round-button.confirm{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:700}.round-button:disabled{opacity:.4;cursor:default}.detail-name{margin:16px 0 0;font-size:1.35rem;line-height:1.25}.detail-section{margin:20px 0 6px;color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.facts{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.facts-amount{display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:2px solid var(--ink)}.facts-amount span{flex:1;font-weight:600}.facts-amount input{width:4.5rem;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit;font-size:1.05rem;text-align:right}.facts-amount select{max-width:55%;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit;font-size:.95rem}.facts-amount input:focus,.facts-amount select:focus{outline:2px solid var(--accent);border-color:transparent}.facts-body{display:flex;align-items:center;gap:18px;padding-top:12px}.facts-cal{display:flex;flex-direction:column;align-items:center;min-width:6.5rem}.facts-cal strong{font-size:2.7rem;font-weight:800;line-height:1}.facts-cal span{margin-top:4px;color:var(--muted);font-size:.85rem}.facts-list{flex:1;margin:0}.facts-list div{display:flex;justify-content:space-between;gap:8px;padding:2px 0;font-size:.9rem}.facts-list dt{font-weight:600}.facts-list .sub dt{padding-left:14px;color:var(--muted);font-weight:400}.facts-list dd{margin:0;font-weight:600}.label-facts{border-color:#99f6e4;background:#f0fdfa}.sheet-head[hidden]{display:none}.facts-source{margin:6px 2px 0;color:#0f766e;font-size:.8rem;font-weight:600}.add-home{padding-bottom:76px}.sheet-back{margin-top:12px}.usual-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.usual-row{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 0;border:1px solid var(--line);border-radius:12px;background:var(--card)}.usual-row.is-busy{opacity:.6}.usual-open{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 0 8px 12px;border:none;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.usual-add{width:36px;height:36px;flex-shrink:0;border:none;border-radius:50%;background:var(--swipe-bg);color:var(--accent);font-size:1.4rem;font-weight:600;line-height:1;cursor:pointer}.add-tools{position:fixed;right:max(16px,calc(50% - 199px));bottom:calc(20px + env(safe-area-inset-bottom));z-index:55;display:flex;gap:4px;padding:6px;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:0 6px 20px #1118271f}.add-tools button{width:52px;height:44px;display:grid;place-items:center;border:none;border-radius:999px;background:none;cursor:pointer}.add-tools button:active{background:var(--swipe-bg)}.add-tools svg{width:24px;height:24px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.add-notice{position:fixed;right:max(16px,calc(50% - 199px));bottom:calc(80px + env(safe-area-inset-bottom));z-index:55;margin:0;padding:8px 12px;border-radius:10px;background:var(--ink);color:#fff;font-size:.85rem;font-weight:600}.estimate-note{display:block;margin-top:2px;color:#7c3aed;font-size:.75rem;font-weight:600}.create-food{display:block;margin:-2px 0 10px auto;font-size:.85rem}.form-card{margin-bottom:12px;padding:2px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.form-text{width:100%;padding:13px 0;border:none;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:1rem}.form-text:last-child,.form-row:last-child{border-bottom:none}.form-text:focus,.form-row input:focus{outline:none}.form-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.95rem}.form-row.sub>span:first-child{padding-left:16px;color:var(--muted)}.form-value{display:flex;align-items:center;gap:6px}.form-row input{width:90px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font:inherit;text-align:right}.form-row input.form-amount{width:56px}.form-row input.form-serving-unit{width:110px;text-align:left}.form-unit{min-width:12px;color:var(--muted);font-size:.85rem}.form-hint{margin:-4px 2px 8px;color:var(--muted);font-size:.8rem}.read-note{margin-top:-4px}.autofill{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--accent);font-weight:600;cursor:pointer}.autofill.is-busy{opacity:.6;cursor:default}.autofill svg{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.budget-card{margin-bottom:12px;padding:14px 16px 16px;border:1px solid var(--line);border-radius:18px;background:var(--card)}.budget-title{margin:0;font-size:1.05rem}.budget-top{display:grid;grid-template-columns:1fr 140px 1fr;align-items:center;margin:4px 0 6px}.budget-side{display:flex;flex-direction:column;align-items:center}.budget-side span{font-size:.9rem}.budget-side strong{font-size:1.6rem}.budget-gauge{position:relative;width:140px;height:128px}.budget-gauge svg{width:100%;height:100%}.budget-gauge circle{fill:none;stroke-width:12;stroke-linecap:round}.budget-track{stroke:var(--line)}.budget-arc{stroke:var(--ok)}.budget-arc.over{stroke:var(--error)}.budget-left{position:absolute;top:0;right:0;bottom:12px;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.budget-left strong{color:var(--ok);font-size:1.45rem;line-height:1.1}.budget-left.over strong{color:var(--error)}.budget-left span{font-size:.9rem}.budget-macros{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.budget-macro{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}.budget-macro strong{font-size:.9rem}.budget-bar{width:100%;height:8px;overflow:hidden;border-radius:999px;background:var(--line)}.budget-fill{display:block;height:100%;border-radius:999px}.budget-fill.protein{background:#7c3aed}.budget-fill.carbs{background:#7cc4e6}.budget-fill.fat{background:#e8bf5f}.budget-macro-nums{color:var(--muted);font-size:.85rem;white-space:nowrap}.budget-macro-nums b{color:var(--ink)}.sheet-actions{position:relative;display:flex;gap:8px}.sheet-menu{position:absolute;top:52px;right:0;z-index:65;width:260px;padding:6px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:0 10px 30px #11182726}.menu-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;cursor:pointer}.menu-toggle span{display:flex;flex-direction:column;gap:2px}.menu-toggle strong{font-size:.95rem}.menu-toggle small{color:var(--muted);font-size:.78rem}.menu-toggle input{width:44px;height:26px;flex-shrink:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .15s}.menu-toggle input:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s}.menu-toggle input:checked{background:var(--accent)}.menu-toggle input:checked:after{transform:translate(18px)}button.pager-title{border:0;background:none;padding:0;color:inherit;font:inherit;cursor:pointer}.cal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#11182766;animation:save-fade-in .2s ease-out}.cal-sheet{position:relative;width:100%;max-width:430px;max-height:92vh;overflow-y:auto;padding:10px 16px calc(24px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:var(--card);box-shadow:0 -8px 32px #11182733;animation:cal-up .25s ease-out}@keyframes cal-up{0%{transform:translateY(100%)}}.cal-grip{display:block;width:40px;height:5px;margin:0 auto 10px;border-radius:3px;background:var(--line)}.cal-head,.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:12px}.cal-head h2{margin:0;font-size:1.35rem}.cal-close{width:44px;height:44px;border:0;background:none;color:var(--accent);font-size:2rem;line-height:1;cursor:pointer}.cal-nav{margin:8px 0 12px}.cal-nav strong{font-size:1.1rem}.cal-nav-buttons{display:flex;align-items:center}.cal-nav-buttons button{min-width:44px;height:44px;border:0;background:none;color:var(--accent);font:inherit;font-size:1.6rem;line-height:1;cursor:pointer}.cal-nav-buttons .cal-today{font-size:1.05rem;font-weight:600}.cal-nav-buttons button:disabled{opacity:.3;cursor:default}.cal-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));row-gap:6px;transition:opacity .15s}.cal-grid.is-loading{opacity:.5}.cal-weekday{padding-bottom:6px;text-align:center;font-size:.8rem;font-weight:600}.cal-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0 4px;border:1.5px solid transparent;border-radius:10px;background:none;color:var(--ink);font:inherit;font-size:.85rem;cursor:pointer}.cal-day:disabled{cursor:default}.cal-day.is-other>span{color:var(--muted);opacity:.6}.cal-day.is-today>span{color:var(--accent);font-weight:700}.cal-day.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.cal-ring{width:100%;max-width:40px;aspect-ratio:1}.cal-ring circle{fill:none;stroke-width:4;stroke-linecap:round}.cal-track{stroke:var(--line)}.cal-under{stroke:var(--ok)}.cal-over{stroke:var(--error)}.cal-ring .cal-check circle{fill:var(--line);stroke:none}.cal-ring .cal-check.is-under circle{fill:var(--ok)}.cal-check path{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.cal-check.is-under path{stroke:#fff}.cal-week{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ok);font-size:.7rem;font-weight:700;text-transform:uppercase}.cal-week strong{padding:1px 5px;border-radius:5px;background:var(--ok);color:#fff;font-size:.78rem}.cal-week.is-over{color:var(--error)}.cal-week.is-over strong{background:var(--error)}.meal-again{display:block;margin:8px 0 0;padding:4px 0;border:none;background:none;color:var(--accent);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}.meal-again:disabled{opacity:.5;cursor:default}.create-links{display:flex;justify-content:flex-end;gap:16px;margin:-2px 0 10px}.create-links .create-food{margin:0}.recipe-ways{display:flex;flex-direction:column;gap:10px;margin-top:8px}.recipe-way{display:flex;align-items:center;gap:14px;width:100%;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.recipe-way svg{flex-shrink:0;width:28px;height:28px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.recipe-way span{display:flex;flex-direction:column;gap:2px}.recipe-way small{color:var(--muted);font-size:.8rem}.recipe-url{margin-bottom:4px}.recipe-paste{min-height:160px}.recipe-notes{min-height:90px}.recipe-ingredients{list-style:none;margin:0 0 6px;padding:0;border:1px solid var(--line);border-radius:14px;background:var(--card)}.recipe-ingredients li{display:flex;align-items:center;gap:10px;padding:8px 12px}.recipe-ingredients li+li{border-top:1px solid var(--line)}.recipe-ingredients li.is-busy{opacity:.5}.recipe-remove{flex-shrink:0;width:24px;height:24px;border:none;border-radius:50%;background:var(--error);color:#fff;font:inherit;font-size:1.1rem;font-weight:700;line-height:1;cursor:pointer}.recipe-ingredient{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding:2px 0;border:none;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.recipe-unmatched .food-sub{color:var(--error)}.recipe-add{display:flex;align-items:center;gap:10px;width:100%;padding:4px 0;border:none;background:none;color:var(--ink);font:inherit;cursor:pointer}.recipe-add span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--ok);color:#fff;font-weight:700}.recipe-more{display:flex;flex-wrap:wrap;gap:6px 16px;margin:4px 2px 8px;font-size:.85rem}.recipe-more>*{font-size:inherit;white-space:nowrap}.recipe-delete,.edit-recipe{display:block;margin:14px auto 0}.recipe-delete{color:var(--error)}.recipe-photo-cal{color:var(--muted);font-size:.78rem}.recipe-photo-cal.is-off,.recipe-photo-total.is-off{color:var(--error);font-weight:600}.recipe-photo-total{margin:2px 2px 0;color:var(--muted);font-size:.8rem}label.recipe-way,label.link-button{cursor:pointer}.recipe-way.is-busy,label.link-button.is-busy{opacity:.6;pointer-events:none}.auth-form{display:flex;flex-direction:column;gap:10px;margin-top:12px;text-align:left}.auth-form input{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem}.auth-form input:focus{outline:2px solid var(--accent)}.auth-note{color:var(--muted);font-size:.9rem}.auth-form select{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font:inherit;font-size:1rem}form.locked .field-row input,form.locked .toggle{opacity:.6}.points-card{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card);display:flex;flex-direction:column;gap:8px;font-size:.95rem}.points-row{display:flex;justify-content:space-between;gap:12px;color:var(--muted)}.points-row strong{color:var(--ink)}.points-track{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:4px}.points-fill{height:100%;background:var(--accent);border-radius:3px}.points-fill.hit{background:var(--ok)}.points-link{margin:0;font-size:.9rem}.board{margin-bottom:20px}.board h2{font-size:1.1rem;margin:0 0 8px}.board-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.board-table th,.board-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line)}.board-table th{color:var(--muted);font-weight:500;font-size:.85rem}.board-table tr:last-child td{border-bottom:none}.board-table tr.me td{background:#eff6ff}.page.coach{max-width:960px}.coach-nav{display:flex;flex-wrap:wrap;gap:4px 12px;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--line);font-size:.95rem}.coach-nav a{color:var(--muted);text-decoration:none;padding:4px 0}.coach-nav a.active{color:var(--ink);font-weight:600;border-bottom:2px solid var(--accent)}.coach-nav .coach-exit{margin-left:auto;color:var(--accent)}.coach-section{margin-bottom:24px}.coach-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.coach-section h2{font-size:1.05rem;margin:0}.coach-inline{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}.coach-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 14px;align-items:end;margin:8px 0 14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.coach-form.inline{grid-template-columns:1fr}.coach-form .coach-section{grid-column:1 / -1}.coach-form .primary-button,.coach-form .secondary-button{grid-column:1 / -1;margin-top:4px}.coach-field{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.coach-field input:not([type=checkbox]),.coach-field select,.coach-field textarea,.coach-inline select,.week-grid input.grid-cell,.coach-table select,.coach-table input[type=date]{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.95rem;color:var(--ink);background:var(--card)}.coach-field input[type=checkbox]{width:20px;height:20px;align-self:flex-start}.coach-table{font-size:.9rem}.coach-table th,.coach-table td{padding:8px 10px;vertical-align:top}.coach-table tr.voided{color:var(--muted);text-decoration:line-through}.coach-table .tag{margin-left:6px}.grid-scroll{overflow-x:auto}.week-grid input.grid-cell{width:64px;padding:6px}.grid-mark{display:block;font-size:.7rem;color:var(--muted);min-height:1em}.coach-checklist{grid-column:1 / -1;border:1px solid var(--line);border-radius:10px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:8px 16px}.coach-checklist legend{color:var(--muted);font-size:.85rem}.coach-checklist p{width:100%;margin:0;font-size:.85rem}.coach-checklist label{display:inline-flex;gap:6px;align-items:center}.coach-note{margin:8px 0;padding:8px 12px;border-left:3px solid var(--line)}.auth-note.ok{color:var(--ok)}.import-log{max-width:480px;max-height:320px;overflow:auto;font-size:.75rem;background:var(--bg);padding:8px;border-radius:8px}.history{margin-top:20px}.history h2{font-size:1rem;margin:0 0 6px}.history p{margin:0 0 8px}.form-check{display:flex;align-items:center;gap:10px;margin:12px 0 4px;font-size:15px}.form-check input[type=checkbox]{width:20px;height:20px;margin:0;accent-color:var(--accent, #1d7a4c)}.food-icon{flex-shrink:0;align-self:center;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.food-line>.food-text{flex:1}.result{flex-direction:row;align-items:center;gap:12px}.result-text{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.usual-row>.food-icon{margin-left:10px}.usual-row>.food-icon+.usual-open{padding-left:0}.detail-title{display:flex;align-items:center;gap:14px;margin-top:16px}.detail-title .detail-name{margin-top:0}
