*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{--oat: #f6f1e8;--oat-2: #efe7d7;--oat-3: #e6dac3;--paper: #fbf7ee;--tomato: #d85c41;--tomato-soft: #f1c7bb;--sage: #7f9b7a;--sage-soft: #d9e3d3;--charcoal: #2c2a26;--charcoal-soft: #5b574e;--charcoal-faint: #9a948a;--line: #d8cfba;--warm-glow: rgba(216, 92, 65, .32);--font-sans: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-serif: "Fraunces", Georgia, "Times New Roman", serif;--radius-sm: 10px;--radius-md: 16px;--radius-lg: 22px;--radius-pill: 999px;--shadow-soft: 0 1px 0 rgba(60, 50, 30, .05), 0 4px 18px rgba(60, 50, 30, .06);--shadow-lift: 0 2px 0 rgba(60, 50, 30, .05), 0 12px 28px rgba(60, 50, 30, .1);font-family:var(--font-sans);color:var(--charcoal);background:var(--oat);color-scheme:light;-webkit-text-size-adjust:100%}html,body{min-height:100dvh;background:var(--oat)}body{background-image:radial-gradient(rgba(120,100,70,.06) 1px,transparent 1px),radial-gradient(rgba(120,100,70,.04) 1px,transparent 1px);background-size:18px 18px,22px 22px;background-position:0 0,6px 8px}#app{max-width:720px;margin-inline:auto;padding:1.25rem 1.1rem calc(5.5rem + env(safe-area-inset-bottom,0px))}a{color:var(--tomato);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;background:transparent;color:inherit}input,textarea,select{font-family:inherit;color:inherit}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:600;letter-spacing:-.01em;color:var(--charcoal)}.app-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin:.25rem 0 1rem}.app-header .brand{font-family:var(--font-serif);font-style:italic;font-weight:600;font-size:1.55rem;color:var(--charcoal)}.app-header .brand .dot{color:var(--tomato)}.app-header .subtitle{color:var(--charcoal-soft);font-size:.85rem;font-style:italic}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:1rem;box-shadow:var(--shadow-soft);position:relative}.card+.card{margin-top:.85rem}.section-label{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}.section-label h2{font-size:1.1rem;font-style:italic}.section-label .count{font-family:var(--font-sans);font-weight:800;font-size:1.5rem;color:var(--tomato);letter-spacing:-.02em;line-height:1}.section-label .meta{color:var(--charcoal-faint);font-size:.8rem}.divider{border:0;border-top:1px dashed var(--line);margin:.7rem 0}.make-meal-hero{display:flex;align-items:center;gap:.85rem;padding:.95rem 1rem;background:linear-gradient(180deg,#f4dccf,#ecc6b3);border:1px solid #e0a994;border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);margin-bottom:1rem;width:100%;text-align:left;transition:transform .08s ease}.make-meal-hero:active{transform:translateY(1px)}.make-meal-hero .icon{width:44px;height:44px;display:grid;place-items:center;background:var(--tomato);color:var(--paper);border-radius:var(--radius-pill);font-family:var(--font-serif);font-weight:600;font-size:1.4rem;flex-shrink:0;box-shadow:inset 0 -2px #00000014}.make-meal-hero .label{font-family:var(--font-serif);font-style:italic;font-weight:600;font-size:1.35rem;color:var(--charcoal);line-height:1.1}.make-meal-hero .sub{font-size:.82rem;color:var(--charcoal-soft);margin-top:2px}.section-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.section-grid .card{padding:.85rem .9rem}.section-grid .preview{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.32rem .7rem;background:var(--oat-2);border:1px solid var(--line);border-radius:var(--radius-pill);font-size:.85rem;color:var(--charcoal);transition:transform .15s ease,background .15s ease,color .15s ease;-webkit-user-select:none;user-select:none}.chip:hover{background:var(--oat-3)}.chip.active{background:var(--sage-soft);border-color:var(--sage);color:var(--charcoal)}.chip.active .tick{display:inline-block}.chip .tick{display:none;color:var(--sage);font-weight:800}.chip.is-add{background:var(--paper);border-style:dashed;color:var(--charcoal-soft)}.chip.is-add:before{content:"+";font-weight:800}@keyframes paper-rustle{0%{transform:translateY(2px) rotate(-1.5deg);opacity:0}35%{transform:translateY(-1px) rotate(.8deg);opacity:1}60%{transform:translateY(.5px) rotate(-.4deg)}to{transform:translateY(0) rotate(0)}}.rustle-in{animation:paper-rustle .35s ease-out}.rustle-row{animation:paper-rustle .32s ease-out}@keyframes gentle-shake{0%,to{transform:rotate(0)}20%{transform:rotate(-.6deg)}50%{transform:rotate(.5deg)}80%{transform:rotate(-.3deg)}}.expiring{position:relative;box-shadow:0 0 0 2px #d85c4114,0 0 18px var(--warm-glow);animation:gentle-shake 3.5s ease-in-out infinite}.expiring:after{content:"";position:absolute;inset:-3px;border-radius:inherit;pointer-events:none;box-shadow:0 0 16px var(--warm-glow);opacity:.6}.row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.55rem 0;border-top:1px dashed var(--line)}.row:first-child{border-top:none}.row .name{display:flex;align-items:baseline;gap:.45rem;font-size:.95rem}.row .name .qty{font-weight:800;font-size:1rem;color:var(--tomato);letter-spacing:-.02em}.row .name .unit{color:var(--charcoal-soft);font-size:.78rem;font-style:italic}.row .name .expiry{font-size:.74rem;color:var(--charcoal-faint);font-style:italic}.row .name .expiry.warn{color:var(--tomato)}.row .actions{display:flex;gap:.4rem;align-items:center}.row button.tiny{font-size:.85rem;width:28px;height:28px;display:grid;place-items:center;border-radius:var(--radius-pill);background:var(--oat-2);color:var(--charcoal)}.row button.tiny:hover{background:var(--oat-3)}.row button.star{color:var(--charcoal-faint)}.row button.star.is-fav{color:var(--tomato)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem .95rem;background:var(--paper);color:var(--charcoal);border:1px solid var(--line);border-radius:var(--radius-pill);font-weight:700;font-size:.9rem}.btn:hover{background:var(--oat-2)}.btn.primary{background:var(--tomato);color:var(--paper);border-color:var(--tomato)}.btn.primary:hover{filter:brightness(.95)}.btn.sage{background:var(--sage);color:var(--paper);border-color:var(--sage)}.btn.sage:hover{filter:brightness(.96)}.btn.ghost{background:transparent}.btn.small{padding:.4rem .7rem;font-size:.82rem}.btn:disabled{opacity:.5;cursor:not-allowed}.quick-adds{display:flex;flex-wrap:wrap;gap:.4rem}.field{display:flex;flex-direction:column;gap:.25rem;margin-top:.6rem}.field label{font-size:.78rem;color:var(--charcoal-soft);font-style:italic}.field input,.field textarea,.field select{background:var(--oat);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.5rem .65rem;font-size:.95rem}.field textarea{resize:vertical;min-height:70px}.inline-form{display:grid;grid-template-columns:1fr auto auto;gap:.4rem;align-items:end}.inline-form .field{margin-top:0}.meal-tray{background:var(--sage-soft);border:1px solid var(--sage);border-radius:var(--radius-md);padding:.85rem .9rem;margin-bottom:1rem}.meal-tray h3{font-family:var(--font-serif);font-size:1.05rem;font-style:italic;margin-bottom:.45rem}.meal-tray .items{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.55rem}.meal-tray .empty{color:var(--charcoal-soft);font-style:italic;font-size:.88rem}.meal-tray .actions{display:flex;gap:.5rem;flex-wrap:wrap}.recipe-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:.9rem 1rem .95rem;box-shadow:var(--shadow-soft);position:relative}.recipe-card+.recipe-card{margin-top:.75rem}.recipe-card h3{font-family:var(--font-serif);font-style:italic;font-weight:600;font-size:1.18rem;margin-bottom:.1rem}.recipe-card .notes{font-family:var(--font-serif);font-style:italic;color:var(--charcoal-soft);font-size:.92rem;margin-bottom:.55rem;line-height:1.45}.recipe-card.suggested{border-color:var(--sage);box-shadow:0 0 0 2px #7f9b7a2e,var(--shadow-soft)}.recipe-card .pill-row{display:flex;flex-wrap:wrap;gap:.32rem;margin-bottom:.45rem}.recipe-card .pill{font-size:.74rem;padding:.18rem .55rem;border-radius:var(--radius-pill);font-weight:700;letter-spacing:.02em;text-transform:uppercase}.pill.use-first{background:var(--tomato-soft);color:#7a2918}.pill.this-week{background:var(--sage);color:var(--paper)}.pill.missing{background:var(--oat-3);color:var(--charcoal-soft)}.recipe-card .group-label{font-size:.75rem;color:var(--charcoal-soft);font-style:italic;margin:.35rem 0 .25rem;letter-spacing:.02em}.recipe-card .ingredient-row{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.2rem}.recipe-card .ingredient-row .chip{font-size:.8rem;padding:.25rem .6rem}.ingredient-row .chip.missing{background:var(--paper);border-style:dashed;color:var(--charcoal-soft)}.ingredient-row .chip.onhand{background:var(--sage-soft);border-color:var(--sage)}.ingredient-row .chip.usefirst{background:var(--tomato-soft);border-color:var(--tomato);color:#7a2918}.ingredient-row .chip .x{font-size:.65rem;margin-left:.2rem;color:var(--charcoal-faint);cursor:pointer}.recipe-card .footer-actions{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.6rem;padding-top:.55rem;border-top:1px dashed var(--line)}.recipe-card .week-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--charcoal-soft)}.recipe-card .week-toggle input{accent-color:var(--sage)}.recipe-card.drop-target{outline:2px dashed var(--sage);outline-offset:4px;background:linear-gradient(180deg,var(--paper),var(--sage-soft))}.drag-source{cursor:grab}.drag-source:active{cursor:grabbing}.shopping-row{display:flex;align-items:center;gap:.6rem;padding:.55rem 0;border-top:1px dashed var(--line)}.shopping-row:first-of-type{border-top:none}.shopping-row input[type=checkbox]{accent-color:var(--sage);width:18px;height:18px}.shopping-row .name{flex:1;font-size:.95rem}.shopping-row.done .name{text-decoration:line-through;color:var(--charcoal-faint)}.shopping-row .remove{color:var(--charcoal-faint);font-size:1.1rem;padding:0 .3rem}.empty-card{text-align:center;padding:1.6rem 1rem;color:var(--charcoal-soft);font-style:italic;font-family:var(--font-serif)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;padding:.4rem .5rem calc(.4rem + env(safe-area-inset-bottom,0px));background:var(--paper);border-top:1px solid var(--line);box-shadow:0 -8px 24px #3c321e12;z-index:50}.bottom-nav ul{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:.25rem;max-width:520px;margin-inline:auto;padding:0}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.45rem .25rem .5rem;border-radius:var(--radius-md);color:var(--charcoal-soft);font-size:.78rem;font-weight:700;text-decoration:none}.bottom-nav a .ico{font-size:1.15rem;line-height:1}.bottom-nav a.active{color:var(--tomato);background:var(--oat-2)}.row-gap-sm{display:flex;gap:.4rem;align-items:center}.muted{color:var(--charcoal-soft)}.center{text-align:center}.spacer{height:.6rem}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.input-add{display:flex;gap:.35rem;margin-top:.5rem}.input-add input{flex:1;background:var(--oat);border:1px solid var(--line);border-radius:var(--radius-pill);padding:.45rem .85rem;font-size:.9rem}@media(max-width:420px){.section-grid{grid-template-columns:1fr}}
