:root{--bg:#eef3ea;--bg-deep:#dfe8d6;--surface:#f7faf4;--ink:#14231a;--ink-soft:#3d5245;--muted:#6b7f70;--line:#c5d4c0;--accent:#1b5e3b;--accent-soft:#2d7a52;--accent-wash:#d4e8d4;--warn:#9a4a1a;--danger:#8b2e2e;--protein:#2a6f8f;--carbs:#b8860b;--fiber:#5a7a3a;--shadow:0 12px 40px #14231a14;--radius:14px;--font:"Outfit", system-ui, sans-serif;--display:"Literata", Georgia, serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--ink);background:radial-gradient(ellipse 90% 60% at 10% -10%, #c8e0c4 0%, transparent 55%), radial-gradient(ellipse 70% 50% at 100% 0%, #d4e0c8 0%, transparent 50%), linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.app{width:min(920px,100% - 2rem);margin:0 auto;padding:1.5rem 0 3rem;animation:.45s both fade-up}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.75rem;display:flex}.brand{flex-direction:column;gap:.2rem;display:flex}.brand h1{font-family:var(--display);letter-spacing:-.02em;color:var(--accent);margin:0;font-size:clamp(2rem,5vw,2.6rem);font-weight:600;line-height:1.05}.brand p{color:var(--muted);margin:0;font-size:.95rem}.date-nav{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:.4rem;padding:.3rem;display:flex}.date-nav button{width:2.2rem;height:2.2rem;color:var(--ink-soft);background:0 0;border:none;border-radius:999px;place-items:center;transition:background .15s,color .15s;display:grid}.date-nav button:hover{background:var(--accent-wash);color:var(--accent)}.date-nav input[type=date]{color:var(--ink);background:0 0;border:none;padding:.35rem .5rem;font-weight:500}.date-nav input[type=date]:focus{outline:none}.tabs{border:1px solid var(--line);background:#f7faf4b3;border-radius:999px;gap:.4rem;width:fit-content;margin-bottom:1.25rem;padding:.3rem;display:flex}.tabs button{color:var(--ink-soft);background:0 0;border:none;border-radius:999px;padding:.55rem 1.1rem;font-weight:500;transition:background .2s,color .2s,transform .15s}.tabs button:hover{color:var(--accent)}.tabs button.active{background:var(--accent);color:#f4faf5;transform:translateY(-1px)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;animation:.35s both fade-up}.panel+.panel{margin-top:1rem}.panel h2{font-family:var(--display);margin:0 0 .35rem;font-size:1.35rem;font-weight:600}.panel .hint{color:var(--muted);margin:0 0 1rem;font-size:.92rem}.goals{flex-direction:column;gap:.85rem;display:flex}.goal-row{border:1px solid var(--line);background:linear-gradient(160deg,#f3f8ef,#e8f0e2);border-radius:12px;padding:.85rem .95rem}.goal-row.calories{background:linear-gradient(160deg,#e4f0e6,#d0e5d4);border-color:#a8c9ae}.goal-row.over{background:linear-gradient(160deg,#f7efe6,#f0e2d4);border-color:#d4b89a}.goal-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem .75rem;margin-bottom:.55rem;display:flex}.goal-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:600}.goal-values{color:var(--ink-soft);align-items:center;gap:.25rem;font-size:.95rem;display:flex}.goal-values strong{letter-spacing:-.02em;color:var(--ink);font-size:1.15rem;font-weight:650}.goal-row.calories .goal-values strong{color:var(--accent)}.goal-row.protein .goal-values strong{color:var(--protein)}.goal-row.carbs .goal-values strong{color:var(--carbs)}.goal-row.fiber .goal-values strong{color:var(--fiber)}.goal-sep{color:var(--muted);margin:0 .1rem}.goal-target{border:1px solid var(--line);background:#ffffffb3;border-radius:8px;align-items:center;gap:.15rem;padding:.1rem;display:inline-flex}.goal-step{width:1.55rem;height:1.55rem;color:var(--ink-soft);background:0 0;border:none;border-radius:6px;place-items:center;font-size:1rem;font-weight:600;line-height:1;transition:background .15s,color .15s;display:grid}.goal-step:hover{background:var(--accent-wash);color:var(--accent)}.goal-input{text-align:center;-moz-appearance:textfield;background:0 0;border:none;width:3.6rem;padding:.2rem 0;font-size:.95rem;font-weight:600}.goal-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.goal-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.goal-input:focus{outline:none}.goal-values .unit{color:var(--muted);margin-left:.15rem;font-size:.8rem}.goal-bar{background:#14231a14;border-radius:999px;height:.55rem;overflow:hidden}.goal-fill{border-radius:inherit;background:var(--accent);height:100%;transition:width .35s}.goal-row.protein .goal-fill{background:var(--protein)}.goal-row.carbs .goal-fill{background:var(--carbs)}.goal-row.fiber .goal-fill{background:var(--fiber)}.goal-row.over .goal-fill{background:var(--warn)}.goal-remaining{color:var(--muted);justify-content:space-between;gap:.5rem;margin:.4rem 0 0;font-size:.82rem;display:flex}.goal-pct{color:var(--ink-soft);font-weight:600}.goal-row.over .goal-remaining{color:var(--warn)}.form-row{flex-wrap:wrap;align-items:end;gap:.65rem;display:flex}.form-row .field{flex:6rem}.form-row .field-wide{flex:2.2 12rem}.form-row .btn{flex:none}.field{flex-direction:column;gap:.3rem;min-width:0;display:flex}.field label{color:var(--ink-soft);font-size:.8rem;font-weight:500}.field input,.field select{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;min-width:0;padding:.65rem .75rem;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus{border-color:var(--accent-soft);outline:none;box-shadow:0 0 0 3px #2d7a522e}.btn{border:none;border-radius:10px;padding:.7rem 1.1rem;font-weight:600;transition:transform .12s,background .15s,opacity .15s}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:#f4faf5}.btn-primary:hover{background:var(--accent-soft)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-ghost{color:var(--ink-soft);border:1px solid var(--line);background:0 0;padding:.45rem .7rem;font-size:.85rem;font-weight:500}.btn-ghost:hover{background:var(--accent-wash);color:var(--accent);border-color:#a8c9ae}.btn-danger{color:var(--danger);background:0 0;border:1px solid #0000;padding:.4rem .55rem;font-size:.82rem;font-weight:500}.btn-danger:hover{background:#f7e8e8;border-color:#e0bcbc}.list{flex-direction:column;gap:.5rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.list li{border:1px solid var(--line);background:#fff;border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem .75rem;padding:.85rem .95rem;transition:border-color .15s,background .15s,opacity .15s;animation:.3s both fade-up;display:grid}.list li:not(:has(.drag-handle)){grid-template-columns:1fr auto}.drag-handle{color:var(--muted);letter-spacing:-.12em;cursor:grab;-webkit-user-select:none;user-select:none;padding:.2rem .15rem;font-size:.95rem;line-height:1}.list li.dragging{opacity:.45}.list li.drag-over{border-color:var(--accent-soft);background:var(--accent-wash)}.catalog-groups{flex-direction:column;gap:1.15rem;display:flex}.catalog-group{background:#ffffff59;border:1px dashed #0000;border-radius:12px;padding:.85rem;transition:border-color .15s,background .15s}.catalog-group.drop-target{border-color:var(--accent-soft);background:var(--accent-wash)}.catalog-group-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.catalog-group-head h3{font-family:var(--display);color:var(--accent);margin:0;font-size:1.1rem;font-weight:600}.catalog-group .list{margin-top:.55rem}.drop-hint{margin-top:.55rem;padding:.9rem;font-size:.9rem}.category-form{flex-wrap:wrap;align-items:end;gap:.55rem;margin-bottom:.85rem;display:flex}.category-form .name-field{flex:12rem}.category-chips{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.category-chips li{border:1px solid var(--line);background:#fff;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.45rem;padding:.55rem .7rem;display:flex}.category-chips li>span{flex:auto;font-weight:600}.rename-input{border:1px solid var(--accent-soft);background:#fff;border-radius:8px;flex:10rem;padding:.4rem .55rem}.rename-input:focus{outline:none;box-shadow:0 0 0 3px #2d7a522e}.item-main{min-width:0}.item-title{margin:0;font-weight:600}.item-meta{color:var(--muted);margin:.2rem 0 0;font-size:.88rem}.macros{color:var(--ink-soft);flex-wrap:wrap;gap:.55rem;font-size:.8rem;display:flex}.macros span{white-space:nowrap}.empty{text-align:center;color:var(--muted);border:1px dashed var(--line);background:#ffffff73;border-radius:12px;margin:.5rem 0 0;padding:1.25rem}.ingredient-form{flex-wrap:wrap;align-items:end;gap:.55rem;display:flex}.ingredient-form .field{flex:5.5rem}.ingredient-form .name-field{flex:3 11rem}.ingredient-form .actions{flex:none;gap:.5rem;margin-left:auto;display:flex}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.75rem;display:flex}.section-head h2{margin:0}.badge{color:var(--accent);background:var(--accent-wash);border-radius:999px;padding:.25rem .6rem;font-size:.78rem;font-weight:600}.item-actions{align-items:center;gap:.35rem;display:flex}.editing{outline:2px solid var(--accent-soft);outline-offset:1px}.recipe-quick{border-bottom:1px solid var(--line);margin-bottom:1rem;padding-bottom:1rem}.recipe-quick-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 .55rem;font-size:.8rem;font-weight:600}.recipe-chips{flex-wrap:wrap;gap:.5rem;display:flex}.recipe-chip{border:1px solid var(--line);text-align:left;background:linear-gradient(160deg,#e4f0e6,#d0e5d4);border-radius:12px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.65rem .85rem;transition:transform .12s,border-color .15s,background .15s;display:flex}.recipe-chip:hover{border-color:var(--accent-soft);transform:translateY(-1px)}.recipe-chip-name{color:var(--accent);font-weight:650}.recipe-chip-meta{color:var(--muted);font-size:.8rem}.day-blocks{flex-direction:column;gap:.65rem;margin-top:1rem;display:flex}.day-blocks .list{margin-top:0}.recipe-block{background:linear-gradient(160deg,#eaf4eb,#dff0e2);border:1px solid #a8c9ae;border-radius:12px;padding:.85rem}.recipe-block-head{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.55rem;display:flex}.recipe-block-items{margin-top:0}.recipe-block-items li{background:#ffffffbf}.recipe-form .name-field{margin-bottom:.85rem}.recipe-items{flex-direction:column;gap:.55rem;margin-bottom:.85rem;display:flex}.recipe-item-row{border:1px solid var(--line);background:#fff;border-radius:12px;flex-wrap:wrap;align-items:end;gap:.55rem;padding:.7rem;display:flex}.recipe-item-row .field{flex:5.5rem}.recipe-item-row .field-wide{flex:2.2 11rem}.recipe-form-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;display:flex}.recipe-form-actions .actions{gap:.5rem;display:flex}.recipe-list li{grid-template-columns:1fr auto;align-items:start}.recipe-breakdown{color:var(--ink-soft);flex-direction:column;gap:.2rem;margin:.45rem 0 0;padding:0;font-size:.85rem;list-style:none;display:flex}.day-entry{align-items:start}.entry-qty{flex-wrap:wrap;gap:.45rem;margin-top:.55rem;display:flex}.entry-qty-field{flex-direction:column;gap:.2rem;min-width:0;display:flex}.entry-qty-field span{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.72rem;font-weight:600}.entry-qty-field input{border:1px solid var(--line);background:#fff;border-radius:8px;width:5.5rem;padding:.4rem .5rem}.entry-qty-field input:focus{border-color:var(--accent-soft);outline:none;box-shadow:0 0 0 3px #2d7a522e}
