@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--cream: #F7F4EE;--warm: #EDE8DF;--stone: #C8BFB0;--clay: #8C7B6B;--earth: #4A3F35;--ink: #1E1812;--sage: #4D6B52;--sage-lt: #E8F0E9;--rust: #B84A2A;--rust-lt: #F5E8E4;--amber: #C9893A;--amber-lt:#F9F0E3;--sidebar-w: 220px;--radius: 10px;--card-radius: 12px;--card-border: 1.5px solid #ede9e3;--card-bg: #ffffff;--card-padding: 14px;--card-title-size: 15px;--card-title-weight: 600;--card-meta-size: 13px;--card-meta-color: #7a6e62;--tag-radius: 6px;--tag-padding: 3px 8px;--tag-font-size: 12px;--tag-bg: #f0ece6;--tag-color: #5a5040;--font-body: "DM Sans", sans-serif;--font-head: "DM Serif Display", serif}html{font-size:16px}body{font-family:var(--font-body);background:var(--cream);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--ink);color:var(--cream);display:flex;flex-direction:column;padding:2rem 0 1.5rem;position:sticky;top:0;height:100vh}.sidebar-logo{font-family:var(--font-head);font-size:1.4rem;color:var(--cream);padding:0 1.5rem 2rem;letter-spacing:-.02em;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:1rem}.sidebar-logo span{color:var(--amber)}.nav-section{font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--stone);padding:.75rem 1.5rem .25rem}.nav-link{display:flex;align-items:center;gap:.6rem;padding:.6rem 1.5rem;font-size:.9rem;font-weight:400;color:#f7f4eea6;cursor:pointer;border:none;background:none;width:100%;text-align:left;border-radius:0;transition:color .15s,background .15s;text-decoration:none}.nav-link svg{opacity:.6;flex-shrink:0}.nav-link:hover{color:var(--cream);background:#ffffff0f}.nav-link.active{color:var(--cream);background:#ffffff1a;font-weight:500}.nav-link.active svg{opacity:1}.main{flex:1;overflow:hidden;display:flex;flex-direction:column}.page-header{display:flex;align-items:center;justify-content:space-between;padding:2rem 2.5rem 1.25rem;border-bottom:1px solid var(--warm);gap:1rem;flex-wrap:wrap}.page-title{font-family:var(--font-head);font-size:1.75rem;color:var(--ink);letter-spacing:-.02em}.page-body{padding:2rem 2.5rem;flex:1}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-family:var(--font-body);font-size:.875rem;font-weight:500;border-radius:var(--radius);border:1.5px solid var(--stone);background:transparent;color:var(--earth);cursor:pointer;transition:all .15s;white-space:nowrap}.btn:hover{border-color:var(--clay);background:var(--warm);color:var(--ink)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--ink);color:var(--cream);border-color:var(--ink)}.btn-primary:hover{background:var(--earth);border-color:var(--earth);color:var(--cream)}.btn-danger{background:transparent;color:var(--rust);border-color:transparent;padding:.3rem .5rem;font-size:.8rem}.btn-danger:hover{background:var(--rust-lt);border-color:transparent;color:var(--rust)}.btn-danger-outline{background:transparent;color:var(--rust);border-color:var(--rust)}.btn-danger-outline:hover{background:var(--rust-lt);border-color:var(--rust);color:var(--rust)}.btn-icon{padding:.4rem;border-radius:6px;line-height:0}.week-nav{display:flex;align-items:center;gap:.5rem}.week-nav-label{font-size:.85rem;color:var(--clay);min-width:140px;text-align:center}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.75rem}.day-card{background:#fff;border:1.5px solid var(--warm);border-radius:var(--radius);padding:.875rem;min-height:140px;display:flex;flex-direction:column;gap:.5rem;transition:border-color .15s}.day-card:hover{border-color:var(--stone)}.day-card.today{border-color:var(--sage);background:var(--sage-lt)}.day-label{font-size:.7rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--clay)}.day-card.today .day-label{color:var(--sage)}.day-date{font-size:1rem;font-family:var(--font-head);color:var(--ink);line-height:1}.meal-chip{background:#fff;border:1.5px solid var(--warm);border-radius:8px;padding:.55rem .6rem;display:flex;flex-direction:column;gap:.3rem;transition:border-color .15s,box-shadow .15s}.meal-chip:hover{border-color:var(--stone);box-shadow:0 2px 8px #1e181212}.meal-chip{cursor:grab}.meal-chip.dragging{opacity:.3;cursor:grabbing}.meal-chip.drag-overlay{box-shadow:0 8px 24px #1e18122e;cursor:grabbing;rotate:2deg;pointer-events:none}.day-card.drag-over{border-color:var(--amber);background:var(--amber-lt)}.day-card.past{opacity:.45}.meal-chip-name{font-size:.82rem;font-weight:500;color:var(--ink);word-break:break-word;-webkit-hyphens:auto;hyphens:auto;line-height:1.3}.meal-chip-note{font-size:.72rem;color:var(--clay);line-height:1.4;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.meal-chip-link{display:inline-flex;align-items:center;gap:.2rem;font-size:.7rem;font-weight:500;color:var(--sage);text-decoration:none;width:fit-content}.meal-chip-link:hover{text-decoration:underline}.meal-chip-drag-handle{display:flex;justify-content:center;color:var(--stone);opacity:0;transition:opacity .15s;margin-bottom:.05rem}.meal-chip:hover .meal-chip-drag-handle{opacity:1}@media (hover: none){.meal-chip-drag-handle{opacity:.4}}.meal-chip-actions{display:flex;gap:.2rem;justify-content:flex-end;margin-top:.1rem;opacity:0;transition:opacity .15s}.meal-chip:hover .meal-chip-actions{opacity:1}@media (hover: none){.meal-chip-actions{opacity:1}}.meal-chip-edit{color:var(--clay);border-color:transparent;padding:.3rem .4rem}.meal-chip-edit:hover{background:var(--warm);border-color:transparent;color:var(--earth)}.add-meal-btn{margin-top:auto;border:1.5px dashed var(--stone);border-radius:6px;padding:.35rem;background:none;color:var(--stone);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.add-meal-btn:hover{border-color:var(--clay);color:var(--clay);background:var(--warm)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e181273;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:#fff;border-radius:14px;padding:1.75rem;width:100%;max-width:400px;box-shadow:0 20px 60px #1e181233}.modal-title{font-family:var(--font-head);font-size:1.3rem;margin-bottom:1.25rem;color:var(--ink)}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.8rem;font-weight:500;color:var(--clay);margin-bottom:.35rem;letter-spacing:.02em}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.6rem .75rem;font-family:var(--font-body);font-size:.9rem;border:1.5px solid var(--warm);border-radius:8px;background:var(--cream);color:var(--ink);outline:none;transition:border-color .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--clay);background:#fff}.form-group textarea{resize:vertical;min-height:70px}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.25rem}.inspiration-modal{max-width:480px}.suggestion-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.25rem;transition:opacity .2s}.suggestion-grid--loading{opacity:.4;pointer-events:none}@media (max-width: 480px){.suggestion-grid{grid-template-columns:1fr}}.suggestion-card{background:var(--cream);border:1.5px solid var(--warm);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s;font-family:var(--font-body)}.suggestion-card:has(.suggestion-card-select:hover){border-color:var(--clay)}.suggestion-card-select{background:none;border:none;padding:.75rem .75rem .5rem;text-align:left;cursor:pointer;font-family:var(--font-body);width:100%;transition:background .15s}.suggestion-card-select:hover{background:#fff}.suggestion-card-select:disabled{cursor:default}.suggestion-card-inputs{padding:.5rem .75rem .6rem;border-top:1px solid var(--warm);display:flex;flex-direction:column;gap:.3rem;background:#fff}.suggestion-input{width:100%;font-family:var(--font-body);font-size:.75rem;padding:.3rem .5rem;border:1px solid var(--stone);border-radius:6px;background:var(--cream);color:var(--ink);outline:none}.suggestion-input:focus{border-color:var(--clay);background:#fff}.suggestion-image{width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:6px;margin-bottom:.5rem;display:block}.suggestion-name{font-size:.9rem;font-weight:600;color:var(--ink);margin-bottom:.2rem}.suggestion-reason{font-size:.78rem;color:var(--clay);line-height:1.35}.suggestion-recipe-link{display:inline-block;margin-top:.2rem;font-size:.75rem;color:var(--clay);text-decoration:underline;text-underline-offset:2px}.suggestion-recipe-link:hover{color:var(--ink)}.ingredients-modal{max-width:440px}.ingredients-modal-subtitle{font-size:.85rem;color:var(--clay);margin-top:-.85rem;margin-bottom:1rem}.ingredients-select-all{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.btn-link{background:none;border:none;padding:0;font-family:var(--font-body);font-size:.8rem;color:var(--clay);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--ink)}.ingredients-count{font-size:.78rem;color:var(--clay)}.ingredients-list{list-style:none;margin:0 0 .25rem;padding:0;max-height:300px;overflow-y:auto;border:1.5px solid var(--warm);border-radius:8px}.ingredient-item{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;cursor:pointer;font-size:.875rem;color:var(--ink);transition:background .1s;border-bottom:1px solid var(--warm);-webkit-user-select:none;user-select:none}.ingredient-item:last-child{border-bottom:none}.ingredient-item:hover{background:var(--cream)}.ingredient-item input[type=checkbox]{cursor:pointer;accent-color:var(--clay);flex-shrink:0}.ingredient-item.deselected{color:var(--clay);text-decoration:line-through}.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;gap:.75rem;color:var(--clay)}.coming-soon svg{opacity:.35}.coming-soon p{font-size:.9rem}.coming-soon .pill{font-size:.75rem;background:var(--warm);border:1px solid var(--stone);border-radius:99px;padding:.2rem .75rem;color:var(--clay)}.status-bar{font-size:.82rem;padding:.5rem 1rem;border-radius:8px;margin-bottom:1rem}.status-bar.error{background:var(--rust-lt);color:var(--rust)}.status-bar.loading{background:var(--amber-lt);color:var(--amber)}.shopping-add{display:flex;gap:.5rem;margin-bottom:1.5rem;max-width:520px}.shopping-input{flex:1;padding:.6rem .75rem;font-family:var(--font-body);font-size:.9rem;border:1.5px solid var(--warm);border-radius:8px;background:#fff;color:var(--ink);outline:none;transition:border-color .15s}.shopping-input:focus{border-color:var(--clay)}.shopping-qty-input{max-width:90px;flex:none}.shopping-list{list-style:none;display:flex;flex-direction:column;gap:.4rem;max-width:520px}.shopping-item{display:flex;align-items:center;gap:.75rem;background:#fff;border:1.5px solid var(--warm);border-radius:10px;padding:.7rem .75rem;transition:border-color .15s,box-shadow .15s}.shopping-item:hover{border-color:var(--stone);box-shadow:0 2px 8px #1e18120f}.shopping-item.checked{background:var(--cream);border-color:var(--warm)}.shopping-check{width:22px;height:22px;border-radius:6px;border:2px solid var(--stone);background:#fff;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;color:#fff}.shopping-item.checked .shopping-check{background:var(--sage);border-color:var(--sage)}.shopping-check:hover{border-color:var(--sage)}.shopping-item-text{flex:1;font-size:.9rem;color:var(--ink)}.shopping-item.checked .shopping-item-text{color:var(--clay);text-decoration:line-through}.shopping-item-qty{margin-left:.4rem;font-size:.78rem;color:var(--clay);font-weight:400}.shopping-item-category-select{font-family:var(--font-body);font-size:.68rem;color:var(--clay);background:var(--warm);border:none;border-radius:4px;padding:.15rem .3rem;cursor:pointer;outline:none;max-width:80px;flex-shrink:0}.shopping-item-category-select:hover{background:var(--stone);color:var(--ink)}.shopping-item.checked .shopping-item-category-select{opacity:.4}.shopping-group{margin-bottom:1.25rem}.shopping-group-label{font-size:.65rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--clay);padding:0 0 .4rem}.category-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.5rem;max-width:520px}.category-chip{padding:.3rem .75rem;font-family:var(--font-body);font-size:.78rem;font-weight:400;border:1.5px solid var(--warm);border-radius:99px;background:#fff;color:var(--clay);cursor:pointer;transition:all .15s;white-space:nowrap}.category-chip:hover{border-color:var(--stone);color:var(--earth)}.category-chip.selected{background:var(--ink);border-color:var(--ink);color:var(--cream)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--cream);padding:1rem}.login-box{background:#fff;border-radius:14px;padding:2.5rem;width:100%;max-width:380px;box-shadow:0 4px 24px #1e181214;border:1.5px solid var(--warm)}.login-logo{font-family:var(--font-head);font-size:1.6rem;color:var(--ink);margin-bottom:1.5rem;letter-spacing:-.02em}.login-logo span{color:var(--amber)}.login-desc{font-size:.875rem;color:var(--clay);margin-bottom:1.25rem;line-height:1.5}.bottom-nav{display:none}@media (max-width: 768px){.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--ink);border-top:1px solid rgba(255,255,255,.08);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.7rem .25rem;color:#f7f4ee8c;text-decoration:none;font-size:.72rem;font-weight:500;letter-spacing:.01em;transition:color .15s}.bottom-nav-more{background:none;border:none;cursor:pointer;font-family:var(--font-body)}.bottom-nav-item.active{color:var(--amber)}.bottom-nav-item svg{opacity:.8}.bottom-nav-item.active svg{opacity:1}.sidebar{display:none}.week-grid{grid-template-columns:repeat(2,1fr)}.page-header{padding:1.25rem}.page-body{padding:1rem 1.25rem 5rem}.page-title{font-size:1.4rem}.toaster{bottom:5rem;right:1rem;left:1rem}.toast{max-width:100%}}.more-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e181273;z-index:80;opacity:0;pointer-events:none;transition:opacity .25s ease}.more-sheet-backdrop.open{opacity:1;pointer-events:auto}.more-sheet{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--cream);border-top-left-radius:18px;border-top-right-radius:18px;box-shadow:0 -8px 30px #1e181233;padding:8px 14px calc(env(safe-area-inset-bottom) + 70px);transform:translateY(100%);transition:transform .28s cubic-bezier(.32,.72,0,1)}.more-sheet-backdrop.open .more-sheet{transform:translateY(0)}.more-sheet-handle{width:40px;height:4px;border-radius:2px;background:var(--stone);margin:4px auto 10px}.more-sheet-title{font-family:var(--font-head);font-size:1.15rem;color:var(--ink);margin:0 4px 12px}.more-sheet-row{display:flex;align-items:center;gap:14px;width:100%;padding:15px 14px;margin-bottom:10px;background:#fff;border:1.5px solid #ede9e3;border-radius:12px;font-family:var(--font-body);font-size:1rem;color:var(--ink);text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.more-sheet-row:last-child{margin-bottom:0}.more-sheet-row.active{border-color:var(--amber);background:var(--amber-lt);color:var(--earth)}.more-sheet-row>svg{color:var(--clay);flex-shrink:0}.more-sheet-row.active>svg{color:var(--amber)}.more-sheet-row span{flex:1}.more-sheet-chevron{color:var(--stone);flex-shrink:0}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton-card{pointer-events:none}.skeleton-line{height:.6rem;border-radius:4px;background:linear-gradient(90deg,var(--warm) 25%,var(--stone) 50%,var(--warm) 75%);background-size:1200px 100%;animation:shimmer 1.5s infinite linear;margin-bottom:.4rem}.skeleton-meal-chip{height:2.25rem;border-radius:8px;background:linear-gradient(90deg,var(--warm) 25%,var(--stone) 50%,var(--warm) 75%);background-size:1200px 100%;animation:shimmer 1.5s infinite linear;margin-top:.5rem}.skeleton-shopping-item{height:3rem;border-radius:10px;background:linear-gradient(90deg,var(--warm) 25%,var(--stone) 50%,var(--warm) 75%);background-size:1200px 100%;animation:shimmer 1.5s infinite linear;max-width:520px;margin-bottom:.4rem;list-style:none}@keyframes spin{to{transform:rotate(360deg)}}.app-loader-circle{width:2rem;height:2rem;border:2.5px solid var(--warm);border-top-color:var(--amber);border-radius:50%;animation:spin .7s linear infinite}@keyframes toast-in{0%{opacity:0;transform:translateY(.6rem) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.toaster{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;flex-direction:column;gap:.5rem;z-index:999;pointer-events:none}.toast{display:inline-flex;align-items:center;gap:.55rem;padding:.65rem 1rem;border-radius:10px;font-size:.875rem;font-weight:500;box-shadow:0 4px 20px #1e181233;animation:toast-in .22s ease;cursor:pointer;pointer-events:auto;max-width:320px;position:relative;overflow:hidden}.toast-success{background:var(--ink);color:var(--cream)}.toast-error{background:var(--rust);color:#fff}.toast-action{background:none;border:none;color:var(--amber);font-family:inherit;font-size:.875rem;font-weight:600;cursor:pointer;padding:.1rem .2rem;margin-left:.4rem;white-space:nowrap;flex-shrink:0}.toast-action:hover{text-decoration:underline}.toast-progress{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--amber);transform-origin:left;animation:toast-progress linear forwards}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes slide-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(12px)}}.shopping-item{animation:slide-in .2s ease}.shopping-item.leaving{animation:slide-out .26s ease forwards;pointer-events:none}.empty-week-banner{display:flex;align-items:center;gap:.6rem;background:var(--amber-lt);border:1px solid rgba(201,137,58,.35);border-radius:10px;padding:.7rem 1rem;font-size:.85rem;color:var(--earth);margin-bottom:1.25rem}.empty-week-banner svg{flex-shrink:0;color:var(--amber)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:220px;gap:.4rem;text-align:center;padding:2rem}.empty-state svg{color:var(--stone);margin-bottom:.5rem}.empty-state-title{font-family:var(--font-head);font-size:1.1rem;color:var(--clay)}.empty-state-desc{font-size:.85rem;color:var(--stone);margin-top:.1rem}.search-input{padding:.5rem .75rem;font-family:var(--font-body);font-size:.875rem;border:1.5px solid var(--stone);border-radius:var(--radius);background:#fff;color:var(--ink);outline:none;transition:border-color .15s;width:180px}.search-input:focus{border-color:var(--clay)}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.recipe-card{background:var(--card-bg);border:var(--card-border);border-radius:var(--card-radius);padding:1rem;text-align:left;cursor:pointer;font-family:var(--font-body);transition:border-color .15s,box-shadow .15s;display:flex;flex-direction:column;gap:.3rem}.recipe-card:hover{border-color:var(--clay);box-shadow:0 2px 8px #1e181212}.recipe-card--new{padding:0;overflow:hidden}.recipe-card--new .recipe-card-body{padding:var(--card-padding);display:flex;flex-direction:column;gap:.3rem}.recipe-card-name{font-size:var(--card-title-size);font-weight:var(--card-title-weight);color:var(--ink)}.recipe-card-desc{font-size:.8rem;color:var(--clay);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.3rem}.recipe-card-meta span{font-size:var(--tag-font-size);color:var(--tag-color);background:var(--tag-bg);padding:var(--tag-padding);border-radius:var(--tag-radius)}.recipe-modal{max-width:560px;max-height:85vh;overflow-y:auto;position:relative}.recipe-view-header{margin-bottom:.6rem}.recipe-view-title{font-family:var(--font-head);font-size:1.5rem;color:var(--ink);letter-spacing:-.02em;line-height:1.2}.recipe-view-by{font-size:.8rem;color:var(--clay);margin-top:.2rem}.recipe-view-meta{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;font-size:.82rem;color:var(--clay)}.recipe-meta-sep{color:var(--stone)}.recipe-view-description{font-size:.9rem;color:var(--clay);margin-bottom:1rem;line-height:1.5}.recipe-section{margin-bottom:1.25rem}.recipe-section-title{font-size:.7rem;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--clay);margin-bottom:.5rem}.recipe-text{font-family:var(--font-body);font-size:.875rem;color:var(--ink);line-height:1.7;white-space:pre-wrap;word-break:break-word}.recipe-source-link{display:inline-block;font-size:.8rem;color:var(--sage);text-decoration:underline;text-underline-offset:2px;margin-bottom:1rem}.recipe-source-link:hover{color:var(--ink)}.recipe-edit-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.recipe-card-image{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:6px;margin-bottom:.4rem;display:block}.recipe-view-image{width:calc(100% + 3.5rem);margin:-1.75rem -1.75rem 1.25rem;aspect-ratio:4 / 3;object-fit:cover;border-radius:14px 14px 0 0;display:block}.recipe-close-btn{position:absolute;top:.6rem;right:.6rem;z-index:10;background:#1e18128c;color:#fff;border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.recipe-close-btn:hover{background:#1e1812cc}.recipe-ingredient-list{list-style:none;padding:0;margin:0;font-size:.875rem;color:var(--ink);line-height:1.5}.recipe-ingredient-list li{padding:.3rem 0;border-bottom:1px solid var(--warm);display:flex;align-items:baseline;gap:.5rem}.recipe-ingredient-list li:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--stone);flex-shrink:0;margin-top:.05rem}.recipe-ingredient-list li:last-child{border-bottom:none}.recipe-ingredient-spacer{border-bottom:none!important;padding:.4rem 0 0!important}.recipe-ingredient-spacer:before{display:none!important}.recipe-ingredient-header{font-weight:600;color:var(--ink);border-bottom:none!important;padding-top:.1rem!important;padding-bottom:.5rem!important}.recipe-ingredient-header:before{display:none!important}.recipe-instruction-list{display:flex;flex-direction:column;gap:0}.recipe-instruction-header{font-size:.875rem;font-weight:600;color:var(--ink);margin-top:.75rem;margin-bottom:.25rem}.recipe-instruction-text{font-size:.875rem;color:var(--ink);line-height:1.65;padding:.2rem 0}.recipe-instruction-spacer{height:.6rem}.recipe-instruction-step{display:flex;gap:.75rem;align-items:baseline;padding:.5rem 0;border-bottom:1px solid var(--warm);font-size:.875rem;line-height:1.6;color:var(--ink)}.recipe-instruction-step:last-child{border-bottom:none}.recipe-step-number{flex-shrink:0;width:22px;height:22px;background:var(--ink);color:var(--cream);border-radius:50%;font-size:.7rem;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:.1rem}.recipe-image-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;width:100%;padding:1.5rem;border:2px dashed var(--stone);border-radius:8px;color:var(--clay);font-size:.85rem;cursor:pointer;transition:border-color .15s,background .15s}.recipe-image-upload:hover{border-color:var(--clay);background:var(--cream)}.recipe-image-upload.uploading{opacity:.6;cursor:default}.recipe-image-preview{position:relative;border-radius:8px;overflow:hidden}.recipe-image-preview img{width:100%;aspect-ratio:16 / 9;object-fit:cover;display:block}.recipe-image-remove{position:absolute;top:.4rem;right:.4rem;background:#1e181299;color:#fff;border:none;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.recipe-image-remove:hover{background:#1e1812d9}.recipe-filter-bar{display:flex;gap:.4rem;flex-wrap:wrap;padding:.75rem 2.5rem 0}.recipe-filter-pill{padding:.3rem .85rem;font-family:var(--font-body);font-size:.8rem;font-weight:500;border:1.5px solid var(--warm);border-radius:999px;background:#fff;color:var(--clay);cursor:pointer;transition:all .15s}.recipe-filter-pill:hover{border-color:var(--stone);color:var(--ink)}.recipe-filter-pill.active{background:var(--ink);border-color:var(--ink);color:var(--cream)}.recipe-card-category{background:var(--sage-lt)!important;color:var(--sage)!important}.recipe-category-badge{display:inline-block;font-size:.72rem;font-weight:500;background:var(--sage-lt);color:var(--sage);padding:.15rem .5rem;border-radius:4px}.recipe-view-sub{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.recipe-view-by{font-size:.8rem;color:var(--clay)}.settings-card{background:#fff;border:1.5px solid var(--warm);border-radius:var(--radius);padding:1.5rem;max-width:480px;margin-bottom:1.25rem}.settings-section-title{font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--clay);margin-bottom:1rem}.settings-form{display:flex;flex-direction:column;gap:1rem}.settings-actions{display:flex;justify-content:flex-end}.form-hint{font-size:.75rem;color:var(--clay);margin-top:.3rem;display:block}.cal-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.cal-nav{display:flex;align-items:center;gap:.4rem}.cal-arrow{width:32px;height:32px;flex-shrink:0;border:1.5px solid var(--warm);background:#fff;color:var(--earth);border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}.cal-arrow:hover{border-color:var(--clay);background:var(--warm)}.cal-arrow.on{background:var(--ink);color:var(--cream);border-color:var(--ink)}.cal-seg{display:flex;border:1.5px solid var(--warm);border-radius:9px;overflow:hidden;background:#fff}.cal-seg button{font-family:var(--font-body);font-size:.82rem;border:none;background:none;padding:.4rem .8rem;color:var(--clay);cursor:pointer;transition:background .15s,color .15s}.cal-seg button:hover{color:var(--earth)}.cal-seg button.on{background:var(--ink);color:var(--cream)}.cal-titlebar{font-family:var(--font-head);font-size:1.4rem;color:var(--ink);letter-spacing:-.02em;margin-bottom:1rem}.cal-people{display:flex;gap:.45rem;flex-wrap:wrap;margin-bottom:1.1rem}.cal-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .7rem .25rem .25rem;border:1.5px solid var(--warm);border-radius:99px;background:#fff;font-family:var(--font-body);font-size:.8rem;color:var(--earth);cursor:pointer;transition:border-color .15s,background .15s}.cal-chip:hover{border-color:var(--stone)}.cal-chip.on{border-color:var(--clay);background:var(--cream)}.cal-av{width:22px;height:22px;border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:500;font-size:.7rem}.cal-av svg{stroke:#fff}.cal-loading{display:flex;justify-content:center;padding:4rem 0}.cal-quickadd{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;max-width:560px;position:relative}.cal-quickadd>svg{position:absolute;left:.65rem;color:var(--clay);pointer-events:none}.cal-quickadd input{flex:1;padding:.55rem .75rem .55rem 2.1rem;font-family:var(--font-body);font-size:.875rem;border:1.5px solid var(--warm);border-radius:10px;background:#fff;color:var(--ink);outline:none;transition:border-color .15s}.cal-quickadd input:focus{border-color:var(--clay)}.cal-quickadd input::placeholder{color:var(--stone)}.cal-search{max-width:560px;margin-bottom:1.1rem}.cal-search-bar{position:relative;display:flex;align-items:center}.cal-search-bar>svg:first-child{position:absolute;left:.7rem;color:var(--clay);pointer-events:none}.cal-search-bar input{flex:1;padding:.6rem 2.4rem;font-family:var(--font-body);font-size:.9rem;border:1.5px solid var(--warm);border-radius:10px;background:#fff;color:var(--ink);outline:none;transition:border-color .15s}.cal-search-bar input:focus{border-color:var(--clay)}.cal-search-clear{position:absolute;right:.45rem;border:none;background:none;cursor:pointer;color:var(--clay);display:flex;padding:.3rem;border-radius:6px;line-height:0}.cal-search-clear:hover{background:var(--warm);color:var(--earth)}.cal-search-types{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}.cal-type-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border:1.5px solid var(--warm);border-radius:99px;background:#fff;font-family:var(--font-body);font-size:.8rem;color:var(--earth);cursor:pointer;transition:border-color .15s,background .15s}.cal-type-chip:hover{border-color:var(--stone)}.cal-type-chip.on{background:var(--ink);border-color:var(--ink);color:var(--cream)}.cal-search-hint{color:var(--clay);font-size:.9rem;padding:1.5rem 0}.cal-grid{display:grid;grid-template-columns:30px repeat(7,minmax(0,1fr));border-top:1px solid var(--sep, #ECE6DA);border-left:1px solid var(--sep, #ECE6DA)}.cal-gh{font-size:.68rem;color:var(--clay);text-transform:uppercase;letter-spacing:.06em;text-align:center;padding:.5rem 0;border-bottom:1px solid var(--warm)}.cal-gh-wk{font-size:.6rem}.cal-gh.red{color:#a8322b}.cal-wk{font-size:.68rem;color:var(--stone);text-align:center;padding-top:.4rem;border-right:1px solid #ECE6DA;border-bottom:1px solid #ECE6DA}.cal-cell{position:relative;min-height:116px;border-right:1px solid #ECE6DA;border-bottom:1px solid #ECE6DA;padding:.3rem .3rem .4rem;display:flex;flex-direction:column;gap:.25rem;cursor:pointer;transition:background .12s}.cal-cell:hover{background:#fcfaf5}.cal-cell.we{background:#fbf9f4}.cal-cell.off{background:#f1ede5}.cal-cell.off .cal-daynum{color:var(--stone)}.cal-daynum{font-family:var(--font-head);font-size:.85rem;color:var(--ink);line-height:1;padding:.1rem .15rem;align-self:flex-start}.cal-cell.today .cal-daynum{background:var(--sage);color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:.78rem}.cal-cell.hol,.cal-cell.sun{background:#fcf4f1}.cal-cell.off.hol,.cal-cell.off.sun{background:#f1ede5}.cal-daynum.red{color:#a8322b}.cal-holname{font-size:.62rem;line-height:1.15;font-weight:500;color:#a8322b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 .1rem}.cal-holname.eve{color:var(--clay);font-weight:400}.cal-whd.red{background:#fcf4f1;border-bottom-color:#e8c9c2}.cal-whd.red .wd,.cal-whd.red .nn{color:#a8322b}.cal-htag{display:inline-flex;align-items:center;gap:.3rem;align-self:flex-start;font-size:.68rem;font-weight:500;color:#a8322b;background:#f7e7e3;padding:.14rem .5rem;border-radius:20px}.cal-htag.eve{color:var(--earth);background:var(--warm)}.cal-adate.red{background:#f7e7e3;border-radius:10px;padding:.3rem .15rem .35rem}.cal-adate.red .cal-adate-num,.cal-adate.red .cal-adate-wd,.cal-adate.red .cal-adate-mo{color:#a8322b}.cal-hrow{display:flex;align-items:center;gap:.35rem;font-size:.82rem;font-weight:500;color:#a8322b;padding:.1rem 0}.cal-hrow.eve{color:var(--earth)}.cal-adate.today{background:var(--sage-lt);border-radius:10px;padding:.3rem .15rem .35rem}.cal-adate.today .cal-adate-num,.cal-adate.today .cal-adate-wd,.cal-adate.today .cal-adate-mo{color:var(--sage)}.cal-adate-today{font-size:.5rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600;color:#fff;background:var(--sage);border-radius:4px;padding:.06rem .32rem;margin-bottom:.25rem}.cal-empty-day{font-size:.85rem;color:var(--stone);font-style:italic;padding:.15rem 0}.cal-ev{display:flex;align-items:stretch;width:100%;text-align:left;border:none;border-radius:6px;overflow:hidden;cursor:pointer;font-family:var(--font-body);min-height:24px}.cal-rail{width:4px;flex-shrink:0}.cal-ev .cal-body,.cal-wc .cal-body,.cal-arow .cal-body{display:flex;align-items:center;gap:.3rem;padding:.25rem .4rem;min-width:0;font-size:.74rem;line-height:1.2}.cal-tm{opacity:.7;flex-shrink:0}.cal-nm{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-link{display:inline-flex;align-items:center;gap:.2rem;flex-shrink:0;color:inherit;opacity:.7;text-decoration:none;cursor:pointer;border:none;background:none;padding:0;font:inherit}.cal-link:hover{opacity:1;text-decoration:underline}.cal-link-row{font-size:.72rem;font-weight:500;margin-top:.05rem}.cal-grid [role=button]:focus-visible,.cal-week [role=button]:focus-visible,.cal-agenda [role=button]:focus-visible{outline:2px solid var(--clay);outline-offset:1px}.cal-band{display:flex;align-items:center;gap:.25rem;font-size:.74rem;padding:.25rem .4rem;margin:0 -.3rem;min-height:24px;white-space:nowrap;overflow:hidden;cursor:pointer}.cal-band.s{border-top-left-radius:6px;border-bottom-left-radius:6px;margin-left:0}.cal-band.e{border-top-right-radius:6px;border-bottom-right-radius:6px;margin-right:0}.cal-more{font-size:.7rem;color:var(--clay);padding:.05rem .3rem;cursor:pointer}.cal-more:hover{color:var(--earth)}.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}.cal-wcol{background:#fff;border:1px solid var(--warm);border-radius:11px;overflow:hidden;min-height:280px;display:flex;flex-direction:column}.cal-wcol.today{border-color:#9dbba2;box-shadow:0 0 0 1px #9dbba2}.cal-whd{display:flex;align-items:baseline;gap:.4rem;width:100%;padding:.5rem .7rem;border:none;border-bottom:1px solid var(--stone);background:var(--warm);cursor:pointer;font-family:var(--font-body);text-align:left}.cal-whd:hover{background:var(--stone)}.cal-whd .wd{font-size:.8rem;font-weight:500;color:var(--earth);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-whd .nn{font-family:var(--font-head);font-size:1.1rem;color:var(--ink);margin-left:auto;flex-shrink:0}.cal-wcol.today .cal-whd{background:var(--sage-lt);border-bottom-color:#cadbcd}.cal-wcol.today .cal-whd .wd,.cal-wcol.today .cal-whd .nn{color:var(--sage)}.cal-wbody{padding:.45rem;display:flex;flex-direction:column;gap:.45rem;flex:1}.cal-wband{display:flex;align-items:center;gap:.3rem;width:100%;text-align:left;border:none;border-radius:8px;padding:.35rem .5rem;cursor:pointer;font-family:var(--font-body);font-size:.78rem;white-space:nowrap;overflow:hidden}.cal-wc{display:flex;align-items:stretch;width:100%;text-align:left;border:none;border-radius:8px;overflow:hidden;cursor:pointer;font-family:var(--font-body)}.cal-wc .cal-body{flex-direction:column;align-items:flex-start;gap:.15rem;padding:.4rem .5rem;font-size:.78rem}.cal-wc-line{display:flex;align-items:center;gap:.3rem;width:100%}.cal-wc-line svg{flex-shrink:0;opacity:.8}.cal-wc-tm{font-weight:500;font-size:.76rem;flex-shrink:0}.cal-wc-title{font-weight:500;overflow-wrap:anywhere;line-height:1.3;flex:1 1 auto;min-width:0}.cal-wc-loc{display:flex;align-items:center;gap:.2rem;font-size:.7rem;opacity:.75}.cal-dinner{margin-top:auto;border-top:1px dashed var(--stone);background:#f3eee4;padding:.4rem .45rem .45rem;display:flex;flex-direction:column;gap:.2rem}.cal-dinner-lbl{display:flex;align-items:center;gap:.25rem;font-size:.58rem;letter-spacing:.09em;text-transform:uppercase;color:var(--clay)}.cal-dinner-item{text-align:left;border:none;background:none;padding:0;cursor:pointer;font-family:var(--font-body);font-size:.78rem;font-weight:500;color:var(--earth);line-height:1.25;overflow-wrap:anywhere}.cal-dinner-item:hover{text-decoration:underline}.cal-dinner-add{text-align:left;border:none;background:none;padding:0;cursor:pointer;font-family:var(--font-body);font-size:.75rem;color:var(--stone)}.cal-dinner-add:hover{color:var(--clay)}.cal-dinner-row{display:flex;align-items:center;gap:.3rem}.cal-dinner-row .cal-dinner-item{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-dinner-row .cal-link{color:var(--clay)}.cal-mdinner{margin-top:auto;display:flex;align-items:center;gap:.25rem;font-size:.72rem;color:var(--earth);background:#f3eee4;border-top:1px dashed var(--stone);padding:.2rem .3rem;border-radius:0 0 4px 4px;cursor:pointer}.cal-mdinner svg{color:var(--clay);flex-shrink:0}.cal-arow-dinner{background:#f3eee4!important;color:var(--earth)!important}.cal-arow-dinner .cal-rail{background:var(--clay)}.cal-agenda{display:flex;flex-direction:column;gap:1rem;max-width:640px}.cal-aday{display:flex;gap:.9rem}.cal-adate{flex-shrink:0;width:52px;text-align:center;display:flex;flex-direction:column;align-items:center;padding-top:.2rem}.cal-adate-num{font-family:var(--font-head);font-size:1.5rem;color:var(--ink);line-height:1}.cal-adate-wd{font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;color:var(--clay);margin-top:.2rem;line-height:1.3}.cal-adate-mo{color:var(--stone)}.cal-adate.weekend{background:var(--amber-lt);border-radius:10px;padding:.3rem .15rem .35rem}.cal-arows{flex:1;display:flex;flex-direction:column;gap:.4rem;min-width:0}.cal-arow{display:flex;align-items:stretch;width:100%;text-align:left;border:none;border-radius:9px;overflow:hidden;cursor:pointer;font-family:var(--font-body)}.cal-arow .cal-body{flex:1;min-width:0;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.5rem .7rem;font-size:.85rem}.cal-arow-line{display:flex;align-items:center;gap:.35rem;width:100%}.cal-arow-line svg{flex-shrink:0;opacity:.8}.cal-arow-tm{font-weight:500;flex-shrink:0}.cal-arow-title{font-weight:500;overflow-wrap:anywhere;min-width:0}@media (max-width: 768px){.cal-week{grid-template-columns:1fr;gap:.85rem}.cal-wcol{min-height:0;border-color:var(--stone);box-shadow:0 1px 3px #1e181212}.cal-wcol.today{box-shadow:0 0 0 1px #9dbba2,0 1px 3px #1e181212}.cal-whd{padding:.6rem .9rem}.cal-whd .wd{font-size:.85rem}.cal-whd .nn{font-size:1.2rem}.cal-cell{min-height:84px}.page-body.cal-body-wrap{padding:1rem .75rem 5rem}.cal-controls{width:100%}}.event-modal{max-width:460px;max-height:88vh;overflow-y:auto}.event-who{display:flex;flex-wrap:wrap;gap:.4rem}.event-who-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem .25rem .25rem;border:1.5px solid var(--warm);border-radius:99px;background:#fff;font-family:var(--font-body);font-size:.8rem;color:var(--earth);cursor:pointer;transition:border-color .15s,background .15s}.event-who-chip:hover{border-color:var(--stone)}.event-who-chip.on{border-color:var(--clay);background:var(--cream)}.event-who-av{width:20px;height:20px;border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:500;font-size:.65rem}.event-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--earth);margin-bottom:1rem}.event-toggle input{width:auto;accent-color:var(--sage)}.event-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.weekday-row{display:flex;gap:.3rem;flex-wrap:wrap}.weekday-btn{min-width:40px;padding:.35rem .2rem;border:1.5px solid var(--warm);border-radius:7px;background:#fff;font-family:var(--font-body);font-size:.75rem;color:var(--clay);cursor:pointer}.weekday-btn.on{background:var(--ink);color:var(--cream);border-color:var(--ink)}.icon-row{display:flex;flex-wrap:wrap;gap:.35rem}.icon-btn{width:36px;height:36px;border:1.5px solid var(--warm);border-radius:8px;background:#fff;color:var(--earth);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1}.icon-btn:hover{border-color:var(--stone)}.icon-btn.on{border-color:var(--sage);background:var(--sage-lt);color:var(--sage)}.member-list{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.25rem}.member-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .6rem;background:#fff;border:1.5px solid var(--warm);border-radius:10px}.member-avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:500;font-size:.95rem}.member-name{flex:1;font-size:.9rem;color:var(--ink)}.member-pick{width:100%;font-family:var(--font-body);cursor:pointer;transition:border-color .15s,background .15s}.member-pick:hover{border-color:var(--stone)}.member-row.selected{border-color:var(--sage);background:var(--sage-lt)}.member-badge{font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--sage);background:var(--sage-lt);border:1px solid var(--sage);border-radius:99px;padding:.1rem .55rem}.member-edit{display:flex;flex-direction:column;gap:.6rem;width:100%}.member-edit-actions{display:flex;gap:.5rem;justify-content:flex-end}.member-add{display:flex;flex-direction:column;gap:.75rem;border-top:1px solid var(--warm);padding-top:1.25rem}.member-add-row{display:flex;align-items:center;gap:.6rem}.member-add-row input{flex:1}.member-avatar-preview{opacity:.9}.swatch-row{display:flex;flex-wrap:wrap;gap:.5rem}.swatch{width:28px;height:28px;border-radius:50%;border:none;padding:0;cursor:pointer;transition:transform .1s}.swatch:hover{transform:scale(1.1)}.swatch.selected{box-shadow:0 0 0 2px var(--cream),0 0 0 4px var(--earth)}.recipe-picker-toggle{width:100%;justify-content:center;border-style:dashed}.selected-recipe-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;background:var(--warm);border-radius:var(--radius);border:1.5px solid var(--border)}.selected-recipe-thumb{width:32px;height:32px;border-radius:4px;object-fit:cover;flex-shrink:0}.selected-recipe-name{flex:1;font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-picker{margin-top:.5rem;border:1.5px solid var(--border);border-radius:var(--radius);overflow:hidden}.recipe-picker-search{width:100%;padding:.5rem .75rem;border:none;border-bottom:1.5px solid var(--border);font-size:.875rem;outline:none;background:#fff;box-sizing:border-box}.recipe-picker-list{list-style:none;margin:0;padding:0;max-height:180px;overflow-y:auto;background:#fff}.recipe-picker-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.5rem .75rem;background:none;border:none;border-bottom:1px solid var(--warm);cursor:pointer;text-align:left;font-family:inherit}.recipe-picker-item:last-child{border-bottom:none}.recipe-picker-item:hover{background:var(--warm)}.recipe-picker-thumb{width:32px;height:32px;border-radius:4px;object-fit:cover;flex-shrink:0}.recipe-picker-info{display:flex;flex-direction:column;min-width:0}.recipe-picker-name{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-picker-desc{font-size:.75rem;color:var(--clay);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-picker-empty{padding:.75rem;font-size:.875rem;color:var(--clay);text-align:center}.meal-chip-header{display:flex;align-items:center;gap:.4rem}.meal-chip-thumb{width:28px;height:28px;border-radius:4px;object-fit:cover;flex-shrink:0}.portions-stepper{display:flex;align-items:center;gap:.4rem}.portions-btn{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--border);background:#fff;font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ink);padding:0}.portions-btn:hover{background:var(--warm)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
