.cart-group{border:2px solid var(--line);padding:.75rem 1rem;margin:0 0 1rem}.cart-group ul{margin:.25rem 0 0;padding-left:1.2rem}.cart-group li{display:list-item}.cart-group .cart-extras{list-style:none;padding-left:0}.cart-group .cart-extras li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.2rem 0}.cart-head{display:flex;justify-content:space-between;align-items:center;gap:1rem}.cart-remove{padding:.2rem .6rem;font-size:.85rem;margin-left:.5rem}.cart-actions{display:flex;gap:.75rem}.cart-link{display:inline-block;margin-left:1rem}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#2b21408c}.confirm-dialog{width:min(420px,100%);text-align:center;background:#fff;color:var(--ink);border:2px solid var(--line);border-radius:18px 18px 18px 4px;padding:1.5rem 1.5rem 1.25rem;box-shadow:6px 6px 0 var(--purple-soft)}.confirm-dialog.warn{box-shadow:6px 6px 0 var(--sun)}.confirm-icon{width:3rem;height:3rem;margin:0 auto .75rem;display:grid;place-items:center;border:2px solid var(--line);border-radius:50%;font-family:var(--display);font-size:1.6rem;font-weight:700;background:#d6f5e0;color:#176b3a}.confirm-dialog.warn .confirm-icon{background:var(--sun);color:var(--ink)}.confirm-dialog h3{margin:0 0 .4rem;font-size:1.35rem;font-style:italic}.confirm-dialog p{margin:0 0 1.25rem;line-height:1.5}.confirm-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.home-notice{display:flex;flex-direction:column;gap:2px;width:100%;margin-bottom:1rem;padding:.8rem 1rem;text-align:left;cursor:pointer;background:var(--sun);color:var(--line);border:2px solid var(--line);border-radius:12px}.home-notice strong{font-size:1.05rem}.home-hero{background:linear-gradient(135deg,var(--purple),var(--purple-soft));color:#fff;border:2px solid var(--line);border-radius:18px 18px 18px 4px;box-shadow:5px 5px 0 var(--sun);padding:1.4rem 1.5rem;margin-bottom:1.5rem}.home-hero h2{color:#fff;font-size:1.8rem;font-style:italic;margin:.2rem 0 .8rem}.home-eyebrow{margin:0;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;font-weight:700;color:var(--sun)}.home-count{margin:.9rem 0 0;font-size:.85rem;opacity:.85}.home-today,.home-day ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.home-today li{display:flex;gap:.7rem;align-items:center;background:#ffffff24;border-radius:10px;padding:.5rem .75rem}.home-slot{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.12rem .5rem;border-radius:999px;background:var(--sun);color:var(--ink);white-space:nowrap}.home-today .home-slot{min-width:5.2rem;text-align:center}.home-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem;margin:0 0 1.75rem}.home-tile{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;text-align:left;border-radius:14px 14px 14px 4px;padding:1rem 1.1rem;background:#fff;color:var(--ink);box-shadow:4px 4px 0 var(--purple-soft)}.home-tile strong{font-family:var(--display);font-size:1.1rem}.home-tile span{font-size:.85rem;font-weight:400;opacity:.8}.home-tile.primary{background:var(--sun);box-shadow:4px 4px 0 var(--purple)}.home-tile:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.home-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.9rem}.home-day{background:#fff;border:2px solid var(--line);border-radius:12px 12px 12px 3px;box-shadow:3px 3px 0 var(--lilac);padding:.7rem .8rem;margin:0;display:block;width:100%;text-align:left;color:var(--ink);font:inherit;font-weight:400;cursor:pointer}.home-day:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--lilac)}.home-day.empty{background:transparent;border:2px dashed var(--mauve);box-shadow:none}.home-day.incomplete{background:#fff8e6;border:2px dashed #d98a00;box-shadow:none}.home-missing{margin:.5rem 0 0;font-size:.75rem;font-weight:700;color:#b36b00}.home-tile.done{background:#d6f5e0;border-color:#1f8a4c;box-shadow:4px 4px #1f8a4c}.home-tile.done strong{color:#176b3a}.home-dow{margin:0;font-family:var(--display);font-style:italic;font-size:1.15rem;color:var(--purple)}.home-date{margin:0 0 .5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mauve);font-weight:700}.home-day li{font-size:.9rem;line-height:1.5}.home-day .home-slot{display:block;width:fit-content;margin:0 0 .1rem}.history-list{display:grid;gap:.75rem}.history-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;text-align:left;background:#fff;color:var(--ink);border-radius:12px 12px 12px 3px;padding:.8rem 1rem;box-shadow:3px 3px 0 var(--lilac)}.history-row span{font-size:.85rem;font-weight:400;opacity:.8}.history-group{border:2px solid var(--line);background:#fff;border-radius:12px 12px 12px 3px;padding:.75rem 1rem;margin:0 0 1rem}.history-group ul{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.3rem}.history-links{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:1.5rem}.history-links .home-tile{flex:1 1 200px}:root{--purple: #654f96;--purple-soft: #8869a3;--mauve: #a38299;--sun: #ffd044;--gold: #cfa939;--ink: #2b2140;--paper: #fbf7ef;--lilac: #efe8f5;--line: #2b2140;--display: Georgia, "Iowan Old Style", "Palatino Linotype", serif;font-family:Trebuchet MS,Segoe UI,system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--paper);background-image:radial-gradient(var(--lilac) 1.5px,transparent 1.5px);background-size:22px 22px}main{max-width:980px;margin:0 auto;padding:0 1rem 4rem}h1{font-family:var(--display);font-size:2.4rem;font-style:italic;letter-spacing:-.02em;color:#fff;background:var(--purple);margin:0 -1rem 1.5rem;padding:1.4rem 1rem 1.2rem;border-bottom:6px solid var(--sun);text-align:center}h2,h3,h4{font-family:var(--display);margin:0 0 .5rem}h3{color:var(--purple)}h4{font-family:inherit;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mauve);margin:.9rem 0 .2rem}.steps{display:flex;gap:.5rem;list-style:none;padding:0;margin:0 0 1.5rem;counter-reset:step}.steps li{counter-increment:step;flex:1;padding:.5rem .8rem;border-bottom:3px solid var(--mauve);color:var(--mauve);font-weight:700;font-size:.95rem}.steps li:before{content:none}.steps li.current{color:var(--purple);border-bottom-color:var(--sun);box-shadow:0 3px 0 var(--gold)}.card{background:#fff;border:2px solid var(--line);border-radius:14px 14px 14px 4px;box-shadow:5px 5px 0 var(--purple-soft);padding:1.1rem 1.25rem;margin-bottom:1.5rem}.card label{display:block;margin-bottom:1rem;font-weight:700}.row{display:flex;gap:1rem}.row>*{flex:1}.add-item .row{flex-wrap:wrap;align-items:center;gap:.5rem}.add-item .row>*{margin:0}.add-item input:first-child{flex:3 1 12rem}.add-item input[type=number]{flex:0 0 5rem}.add-item select{flex:1 1 7rem}.add-item button{flex:0 0 auto}input:not([type]),input[type=password],input[type=text],input[type=url],input[type=number],input[type=date],select{display:block;width:100%;padding:.55rem .65rem;margin-top:.3rem;border:2px solid var(--mauve);border-radius:8px;font:inherit;background:var(--paper);color:var(--ink)}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid var(--sun);outline-offset:1px;border-color:var(--purple)}select{width:auto;margin:0}button{background:var(--purple);color:#fff;border:2px solid var(--line);border-radius:999px;padding:.5rem 1.2rem;font:inherit;font-weight:700;cursor:pointer;box-shadow:2px 2px 0 var(--line);transition:transform .08s,box-shadow .08s}button:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--line)}button:active:not(:disabled){transform:translate(2px,2px);box-shadow:0 0 0 var(--line)}button.secondary{background:var(--sun);color:var(--ink)}button:disabled{opacity:.45;cursor:not-allowed}.chips{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.chip{background:var(--lilac);color:var(--ink);border:2px solid var(--purple-soft);border-radius:999px;padding:.2rem .75rem;display:inline-flex;gap:.4rem;align-items:center;box-shadow:none;font-weight:600}button.chip:hover:not(:disabled){background:var(--sun);border-color:var(--line);box-shadow:none}.chip.active{background:var(--purple);color:#fff;border-color:var(--line)}.chip button{background:none;color:inherit;border:0;box-shadow:none;padding:0;line-height:1}.tabs{display:flex;gap:.35rem;border-bottom:3px solid var(--line);margin-bottom:1.25rem}.tab{background:var(--lilac);color:var(--ink);border-radius:10px 10px 0 0;border-bottom:0;box-shadow:none;margin-bottom:-3px}.tab:hover:not(:disabled){box-shadow:none;transform:none;background:#fff}.tab.active{background:var(--sun)}.badge{background:var(--purple);color:#fff;border-radius:999px;padding:0 .5rem;margin-left:.4rem;font-size:.8rem;font-weight:700}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.recipe{background:#fff;border:2px solid var(--line);border-radius:14px 14px 14px 4px;padding:1rem;display:flex;flex-direction:column;gap:.5rem;box-shadow:4px 4px 0 var(--mauve);transition:transform .1s}.recipe:hover{transform:translateY(-2px) rotate(-.4deg)}.recipe.selected{background:#fff9e0;box-shadow:4px 4px 0 var(--gold);border-color:var(--purple)}.recipe h3{margin:0}.card-actions{display:flex;gap:.5rem;margin-top:auto}.ingredients{font-size:.85rem;margin:0;color:#4b4163}.hint{color:#6b5f82;font-size:.9rem;margin:.25rem 0}.error{color:#a3231b;font-weight:700}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}.sticky-actions{position:sticky;bottom:0;background:var(--paper);padding:.6rem 0 calc(.6rem + env(safe-area-inset-bottom));border-top:2px solid var(--line);z-index:5}.stores{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:1.5rem}.stores .card{margin:0}.stores .card:nth-child(2n){box-shadow:5px 5px 0 var(--gold)}.stores ul,.pantry ul{list-style:none;padding:0;margin:0 0 .75rem}.stores li,.pantry li{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px dashed var(--mauve)}.stores li.done span{text-decoration:line-through;color:var(--mauve)}.check{display:flex!important;align-items:center;gap:.5rem;font-weight:400!important;margin:0!important}input[type=checkbox]{accent-color:var(--purple);width:1.1rem;height:1.1rem}.star{background:none;border:0;box-shadow:none;color:var(--mauve);padding:0 .3rem 0 0;font-size:1.3rem;line-height:1}.star:hover:not(:disabled){box-shadow:none;transform:scale(1.2)}.star.on{color:var(--gold)}.mini{background:none;color:var(--purple);border:0;box-shadow:none;padding:0 .2rem;margin-left:.2rem;font-size:.78rem;text-decoration:underline;border-radius:4px}.mini:hover:not(:disabled){background:var(--sun);color:var(--ink);box-shadow:none;transform:none}a{color:var(--purple);font-weight:700}.stores li select{font-size:.85rem;padding:.2rem .4rem}.stores li .check,.pantry li .check{flex:1 1 10rem}.pantry li.editing{justify-content:flex-start}.pantry li.editing input:not([type=checkbox]){width:auto;flex:1 1 8rem;margin:0}.pantry li.editing input[type=number]{flex:0 0 5rem}.pantry li.editing select{width:auto;margin:0}@media(max-width:640px){.row{flex-direction:column}h1{font-size:1.8rem}}@media print{body{background:#fff}h1{color:var(--ink);background:none;border-bottom:2px solid var(--ink)}.card,.recipe{box-shadow:none}.steps,.actions,select,.mini{display:none}}.filter-label{margin:.75rem 0 .25rem;font-weight:600;text-transform:uppercase;font-size:.75rem;letter-spacing:.05em}.recipe-img{width:100%;height:10rem;object-fit:cover;border-radius:8px;margin-bottom:.5rem}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}main{padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));padding-bottom:calc(4rem + env(safe-area-inset-bottom))}@media(pointer:coarse){button{min-height:44px}.mini,.chip button,.star{min-height:0}button.chip,.tab{min-height:40px}input[type=checkbox]{width:1.6rem;height:1.6rem}.stores li,.pantry li{padding:.6rem 0}.star{font-size:1.6rem;padding:.2rem .5rem .2rem 0}}@media(max-width:640px){input:not([type=checkbox]),select{font-size:16px}main{padding-left:.75rem;padding-right:.75rem}h1{margin-left:-.75rem;margin-right:-.75rem;font-size:1.6rem;padding:1rem .75rem .9rem}.steps{gap:.25rem}.steps li{flex:1 1 0;min-width:0;padding:.4rem .2rem;font-size:.8rem;text-align:center;overflow-wrap:anywhere}.tabs{gap:.2rem}.tab{flex:1 1 0;min-width:0;padding:.5rem .2rem;font-size:.9rem}.card{padding:.9rem}.grid,.stores{grid-template-columns:1fr}.recipe-img{height:12rem}.actions{position:sticky;bottom:0;background:var(--paper);padding:.6rem 0 calc(.6rem + env(safe-area-inset-bottom));margin-bottom:0;border-top:2px solid var(--line);z-index:5}.actions button{flex:1 1 auto}}.shopping .check{font-size:1.15rem;padding:.4rem 0}.shopping li{padding:.5rem 0}.shopping input[type=checkbox]{width:1.9rem;height:1.9rem}.shopping li.done span{opacity:.6}.review-rows{list-style:none;padding:0;margin:0 0 .75rem}.review-rows li{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;padding:.4rem 0;border-bottom:1px dashed var(--mauve)}.review-rows input,.review-rows select{margin:0;width:auto}.review-rows .r-name{flex:3 1 10rem}.review-rows .r-qty{flex:0 0 5rem}.servings{display:flex;align-items:center;gap:.5rem;margin:.4rem 0}.servings button{padding:.2rem .7rem}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin:.75rem 0}.cal{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.cal-day{border:2px solid var(--line);background:#fff;padding:.5rem}.cal-day h3{margin:0 0 .4rem;font-size:.95rem}.cal-slot{border:2px dashed var(--mauve);min-height:3rem;padding:.3rem;margin-bottom:.4rem;display:flex;flex-direction:column;gap:.2rem}.cal-slot.armed{border-color:var(--purple);cursor:pointer}.cal-slot.filled{border-style:solid;border-color:var(--line);background:var(--lilac)}.cal-meal{display:flex;justify-content:space-between;gap:.3rem;font-weight:700;font-size:.9rem;cursor:grab}.cal-meal button{background:none;border:0;box-shadow:none;padding:0;color:inherit}.cal-slot.leftover{background:#fff3c4;border-color:var(--gold)}.cal-serv{display:block;font-size:.75em;opacity:.8}.cal{grid-template-columns:repeat(7,1fr);gap:.4rem;margin:.75rem 0}.cal-day{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.4rem .2rem;cursor:pointer;box-shadow:none}.cal-day.current{border-color:var(--purple)}.cal-dots{display:flex;gap:.2rem}.dot{width:.6rem;height:.6rem;border-radius:50%;border:1px solid var(--line);background:#fff}.dot.cook{background:var(--purple)}.dot.leftover{background:var(--gold)}@keyframes slide-in{0%{opacity:0;transform:translate(2rem)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(.9);opacity:.4}50%{transform:scale(1.06)}to{transform:scale(1);opacity:1}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.9)}}.day-view{animation:slide-in .4s ease-out}.cal-slot.pop{animation:pop .5s ease-out;box-shadow:0 0 0 3px var(--purple)}.dot.pulse{animation:pulse .8s ease-in-out 2}.dot{transition:background .4s}.cal-note{margin:.5rem 0;font-weight:700;animation:slide-in .3s ease-out}@media(prefers-reduced-motion:reduce){.day-view,.cal-slot.pop,.dot.pulse,.cal-note{animation:none}}.day-done{display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem;padding:.5rem .8rem;border-radius:.6rem;background:#e6f6ea;border:2px solid #3aa655;color:#1f6b35;font-weight:600;animation:pop .5s ease-out}.day-done-check{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#3aa655;color:#fff;animation:check-spin .6s ease-out}.cal-day.full{background:#e6f6ea;border-color:#3aa655;position:relative}.cal-day.full:after{content:"✓";position:absolute;top:-.45rem;right:-.3rem;width:1rem;height:1rem;border-radius:50%;background:#3aa655;color:#fff;font-size:.7rem;line-height:1rem;text-align:center;animation:pop .5s ease-out}.cal-day.full.current{border-color:var(--purple)}@keyframes check-spin{0%{transform:rotate(-180deg) scale(0)}to{transform:none}}@media(prefers-reduced-motion:reduce){.day-done,.day-done-check,.cal-day.full:after{animation:none}}.cal-day,.cal-day span,.cal-day small{color:var(--ink)}.cal-day.full,.cal-day.full span,.cal-day.full small{color:#1f6b35}.dot.other{background:var(--mauve)}.cal-slot.other{background:#ece4f0;border-color:var(--mauve)}.other-form{display:flex;gap:.5rem;margin-top:.6rem}.other-form input{flex:1;padding:.4rem .6rem;border:2px solid var(--line);border-radius:.4rem;font:inherit;color:var(--ink);background:#fff}.cal-slot.s-breakfast{border-left:6px solid var(--sun)}.cal-slot.s-lunch{border-left:6px solid #3aa6a0}.cal-slot.s-dinner{border-left:6px solid var(--purple)}.cal-slot.armed{box-shadow:0 0 0 3px var(--sun)}.cal-slot.armed.s-lunch{box-shadow:0 0 0 3px #3aa6a0}.cal-slot.armed.s-dinner{box-shadow:0 0 0 3px var(--purple)}.card.pick{border-top:8px solid var(--purple)}.card.pick-breakfast{border-top-color:var(--sun)}.card.pick-lunch{border-top-color:#3aa6a0}.slot-badge{display:inline-block;padding:.1rem .8rem;border-radius:999px;color:#fff;font-style:italic}.slot-badge.breakfast{background:var(--gold)}.slot-badge.lunch{background:#2b8a85}.slot-badge.dinner{background:var(--purple)}.shopping .aisle{margin:0 0 1rem;border-left:6px solid var(--purple);border-radius:.4rem;background:#fff}.shopping .aisle-head{display:flex;justify-content:space-between;align-items:center;padding:.4rem .8rem;background:var(--purple);color:#fff}.shopping .aisle-head h4{margin:0;color:#fff;font-size:.95rem}.shopping .aisle-head span{font-size:.8rem;opacity:.9}.shopping .aisle ul{padding:0 .8rem;margin:0}.aisle[data-cat=produce]{border-color:#3aa655}.aisle[data-cat=produce] .aisle-head{background:#3aa655}.aisle[data-cat=meat]{border-color:#c0443c}.aisle[data-cat=meat] .aisle-head{background:#c0443c}.aisle[data-cat=dairy]{border-color:#3b82c4}.aisle[data-cat=dairy] .aisle-head{background:#3b82c4}.aisle[data-cat=frozen]{border-color:#2aa7b8}.aisle[data-cat=frozen] .aisle-head{background:#2aa7b8}.aisle[data-cat=bakery]{border-color:#b9770e}.aisle[data-cat=bakery] .aisle-head{background:#b9770e}.aisle[data-cat=pantry]{border-color:#8a6d3b}.aisle[data-cat=pantry] .aisle-head{background:#8a6d3b}.aisle[data-cat=spices]{border-color:#d2691e}.aisle[data-cat=spices] .aisle-head{background:#d2691e}.aisle[data-cat=cart]{border-color:#777}.aisle[data-cat=cart] .aisle-head{background:#777}.shop-done{text-align:center;padding:1.5rem 1rem;margin-bottom:1rem;border-radius:.6rem;background:#e6f6ea;color:#1f6b35}.shop-done h3{margin:.5rem 0 .2rem;color:#1f6b35;font-family:var(--display)}.shop-done p{margin:0;color:#1f6b35}.shop-done-mark{width:4rem;height:4rem;line-height:4rem;margin:0 auto;border-radius:50%;background:#3aa655;color:#fff;font-size:2.2rem;animation:shop-pop .5s cubic-bezier(.2,1.6,.4,1)}@keyframes shop-pop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.filter-bar{display:flex;gap:.5rem;margin-top:.75rem}.filter-search{margin-top:.75rem;width:100%}@media(max-width:640px){.add-item .row{display:grid;grid-template-columns:1fr 1fr;align-items:stretch}.add-item .row>*{flex:none!important;width:100%;min-width:0}.add-item input:first-child,.add-item select[aria-label=Category],.add-item button{grid-column:1/-1}}.progress{margin:0 0 1.25rem}.progress-label{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 .4rem;color:var(--ink)}.progress-label strong{font-family:var(--display);font-size:1.2rem;color:var(--purple)}.progress-label span{font-size:.85rem;color:var(--mauve);font-weight:700}.progress-bar{height:.5rem;border-radius:999px;background:var(--lilac)}.progress-bar div{height:100%;border-radius:999px;background:var(--purple);box-shadow:0 0 0 1px var(--sun) inset;transition:width .3s}@media print{.progress{display:none}}.cal-page{display:flex;flex-direction:column}.cal-page>.cal-nav{order:0}.cal-page>.cal{order:1}.cal-page>.day-view{order:2}.cal-page>.cal-note{order:3}.cal-page>.pick{order:4}.cal-page>.card-actions{order:5}.cal-nav{gap:.75rem;margin:0 0 .5rem}.cal-title{flex:1;text-align:center;display:flex;flex-direction:column;line-height:1.15}.cal-title strong{font-family:var(--display);font-size:1.5rem;color:var(--purple)}.cal-title span{color:var(--mauve);font-weight:700}.cal-arrow{flex:0 0 auto;width:2.75rem;height:2.75rem;min-height:0;padding:0;border-radius:50%;background:var(--sun);color:var(--ink);font-size:1.6rem;line-height:1;display:flex;align-items:center;justify-content:center}.cal-day{border-radius:.7rem;padding:.5rem .1rem}.cal-day.current{background:var(--purple)}.cal-day.current,.cal-day.current span,.cal-day.current small{color:#fff}.cal-day.current .dot{border-color:#fff}.cal-day.full.current{background:#3aa655;border-color:var(--purple)}.cal-day small{font-size:1rem;font-weight:700}.day-view .card{padding:.6rem}.cal-slot{border-radius:.5rem;padding:.5rem .6rem;min-height:3.5rem}.cal-slot>.hint{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.cal-meal{font-size:1rem}.cal-meal button{font-size:1.3rem;line-height:1;padding:0 .2rem;min-height:0}.card.pick .chips{margin-top:.5rem}.slot-wrap{display:flex;flex-direction:column}.cal-slot.empty,.cal-slot.armed{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.cal-add{font-weight:700;font-size:.85rem;color:var(--purple);background:var(--lilac);border-radius:999px;padding:.25rem .7rem}.slot-options{margin:.1rem 0 .6rem;padding:.7rem;border-radius:.5rem;background:var(--lilac);animation:day-in .2s ease-out}.slot-options .chips{margin-top:.1rem}.slot-options h3{margin:.7rem 0 .4rem;font-size:.9rem}.cal-none{flex:1;text-align:right;font-size:.8rem;font-style:italic;color:var(--mauve)}.grocery-ask p{margin:0 0 .6rem}.grocery-form{display:grid;grid-template-columns:1fr 5rem;gap:.5rem}.grocery-form select,.grocery-form button{grid-column:1/-1}.review-group h3{margin:.9rem 0 .4rem;color:var(--purple)}.review-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem 0;border-top:1px solid var(--line)}.review-info{flex:1 1 10rem;display:flex;flex-direction:column}.review-ingredients{flex:1 1 100%;list-style:none;margin:.2rem 0 0;padding:.5rem .7rem;background:var(--lilac);border-radius:8px}.review-ingredients li{display:flex;justify-content:space-between;gap:1rem;padding:.2rem 0}.scan-btn{display:inline-block;cursor:pointer}.scan-btn span{display:inline-block;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--purple);color:var(--purple);font-weight:600}.crop-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#2b214099;display:flex;align-items:center;justify-content:center;padding:.75rem}.crop-card{background:var(--paper,#fff);border-radius:12px;padding:1rem;max-width:720px;width:100%;max-height:96vh;overflow:auto}.crop-stage{position:relative;display:inline-block;max-width:100%;touch-action:none;cursor:crosshair;-webkit-user-select:none;user-select:none;line-height:0}.crop-stage img{max-width:100%;max-height:62vh;display:block;pointer-events:none}.crop-box{position:absolute;border:2px solid var(--sun);box-shadow:0 0 0 9999px #2b214073;pointer-events:none}img,a,button{-webkit-user-drag:none;user-drag:none}button,.tabs,.steps,.chip,.chips,.filter-bar,.recipe-img,.badge{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.tabs,.steps{touch-action:pan-x pan-y}.quick-add{display:flex;gap:.5rem;align-items:center}.quick-add input{flex:1 1 auto;min-width:0;margin:0}.quick-add button{flex:0 0 auto}
