:root{--app-bg:#f7f5f0;--app-surface:#fff;--app-surface-alt:#edeae3;--app-text:#1a1a18;--app-muted:#7a7a72;--app-primary:#1a1a18;--app-primary-contrast:#f7f5f0;--app-accent:#5c7a5c;--app-accent-contrast:#fff;--app-danger:#c0392b;--app-border:rgba(26,26,24,.1);--app-radius:.45rem;--control-h:2.6rem;--control-font:.9rem;--page-w:900px;--page-gutter:1.5rem}:root:not([data-theme=dark]){--pico-background-color:var(--app-bg);--pico-color:var(--app-text);--pico-h1-color:var(--app-text);--pico-h2-color:var(--app-text);--pico-h3-color:var(--app-text);--pico-h4-color:var(--app-text);--pico-muted-color:var(--app-muted);--pico-muted-border-color:var(--app-border);--pico-border-color:var(--app-border);--pico-primary:var(--app-primary);--pico-primary-background:var(--app-primary);--pico-primary-hover:var(--app-primary);--pico-primary-hover-background:color-mix(in srgb, var(--app-primary) 88%, #fff);--pico-primary-border:var(--app-primary);--pico-primary-focus:color-mix(in srgb, var(--app-accent) 35%, transparent);--pico-primary-inverse:var(--app-primary-contrast);--pico-card-background-color:var(--app-surface);--pico-card-sectioning-background-color:var(--app-surface-alt);--pico-card-border-color:var(--app-border);--pico-secondary-background:var(--app-surface-alt);--pico-dropdown-background-color:var(--app-surface);--pico-dropdown-hover-background-color:var(--app-surface-alt);--pico-form-element-background-color:var(--app-surface);--pico-form-element-border-color:var(--app-border);--pico-form-element-color:var(--app-text);--pico-form-element-placeholder-color:var(--app-muted);--pico-form-element-active-background-color:var(--app-surface);--pico-form-element-active-border-color:var(--app-accent);--pico-form-element-focus-color:color-mix(in srgb, var(--app-accent) 35%, transparent);--pico-border-radius:var(--app-radius)}.page{max-width:var(--page-w);padding-top:1.5rem;padding-right:max(var(--page-gutter), env(safe-area-inset-right,0px));padding-bottom:calc(3rem + env(safe-area-inset-bottom,0px));padding-left:max(var(--page-gutter), env(safe-area-inset-left,0px));margin:0 auto}.empty,.muted{color:var(--app-muted)}.status{color:var(--app-danger);font-size:.85rem}.account{align-items:center;display:inline-flex;position:relative}.account-btn{color:var(--app-muted)}.account-btn.signed-in{color:var(--app-accent)}.account-btn svg{display:block}.spinner{border:2px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:currentColor;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.account-menu{z-index:40;background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--app-radius);flex-direction:column;gap:.5rem;min-width:12rem;padding:.7rem;display:flex;position:absolute;top:calc(100% + .4rem);right:0;box-shadow:0 8px 24px rgba(26,26,24,.14)}.account-email{height:2.2rem;margin:0;font-size:.85rem}.sync-btn{width:auto;height:2.2rem;margin:0;padding:0 .8rem;font-size:.85rem}.account-menu .status{margin:0}h1{font-size:1.5rem}h2{margin-top:1.6rem;font-size:1.15rem}.list-head button,.add-item button,.add-ingredient button,.recipes-bar button,.week-bar button,button.small,button.icon{width:auto;margin:0}button.small{padding:.25rem .6rem;font-size:.8rem}button.icon{border-radius:var(--app-radius);color:var(--app-muted);background:0 0;border:none;justify-content:center;align-items:center;padding:.4rem;transition:background .15s,color .15s;display:inline-flex}button.icon:hover{color:var(--app-text);background:var(--app-surface-alt)}button.danger{--pico-background-color:var(--app-danger);--pico-border-color:var(--app-danger)}.week-bar{align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.week-bar button{margin:0}.week-label{text-align:center;min-width:190px;color:var(--app-text);flex:none;font-size:.9rem}.week-bar .today-link{margin-left:.25rem}.today-link{width:auto;color:var(--app-muted);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;margin:0;padding:.2rem .5rem;font-size:.8rem;text-decoration:underline}.today-link:hover{color:var(--app-text);background:0 0}.calendar-grid{border:1px solid var(--app-border);border-radius:var(--app-radius);grid-template-columns:160px 1fr 1fr;display:grid;overflow:hidden}.cal-head{background:var(--app-surface-alt);color:var(--app-muted);text-transform:uppercase;letter-spacing:.14em;padding:.65rem 1rem;font-size:.7rem;font-weight:600}.cal-head:not(:first-child){border-left:1px solid var(--app-border)}.cal-day{background:var(--app-surface);border-top:1px solid var(--app-border);white-space:nowrap;flex-direction:column;justify-content:center;padding:.75rem 1rem;display:flex}.cal-day-name{color:var(--app-text);font-size:.9rem}.cal-day-date{color:var(--app-muted);margin-top:.15rem;font-size:.78rem}.cal-cell{background:var(--app-surface);border-top:1px solid var(--app-border);border-left:1px solid var(--app-border);align-items:stretch;min-height:52px;display:flex;position:relative}.cal-day.cal-row-today,.cal-cell.cal-cell-today{background:color-mix(in srgb, var(--app-accent) 5%, var(--app-surface))}.cal-day.cal-row-today{box-shadow:inset 2px 0 0 var(--app-accent)}.cal-day.cal-row-today .cal-day-name{color:var(--app-accent)}.cal-cell.filled{background:color-mix(in srgb, var(--app-accent) 10%, var(--app-surface))}.cal-cell.cal-cell-today.filled{background:color-mix(in srgb, var(--app-accent) 14%, var(--app-surface))}.cell-input{width:100%;box-shadow:none;color:inherit;font-family:inherit;font-size:var(--control-font);background:0 0;border:none;outline:none;flex:1;margin:0;padding:.55rem 1rem}.cell-name{cursor:pointer;font-size:var(--control-font);flex:1;align-items:center;padding:.55rem 1rem;display:flex}.cell-name:hover{color:var(--app-accent)}.cell-dropdown{z-index:30;background:var(--pico-dropdown-background-color,#fff);border:1px solid var(--pico-dropdown-border-color,var(--pico-muted-border-color));border-radius:0 0 6px 6px;max-height:240px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 6px 18px rgba(0,0,0,.15)}.dd-item,.dd-create{cursor:pointer;padding:.45rem .8rem}.dd-item:hover,.dd-create:hover{background:var(--pico-dropdown-hover-background-color,var(--pico-secondary-background))}.dd-create{color:var(--pico-primary)}.recipe-list,.ingredient-list,.ing-list,.cart-list{margin:.6rem 0;padding:0;list-style:none}.lists{flex-direction:column;gap:2.5rem;margin-top:2.5rem;display:flex}.list-col{min-width:0}.list-head{align-items:center;gap:.6rem;margin-bottom:.75rem;display:flex}.list-head h2{text-transform:uppercase;letter-spacing:.12em;color:var(--app-muted);margin:0 auto 0 0;font-size:.72rem;font-weight:600}.ing-row{align-items:center;gap:.6rem;padding:.4rem 0;display:flex}.ing-row input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--app-accent);cursor:pointer;flex:none;margin:0}.ing-name{cursor:pointer;min-width:0;font-size:var(--control-font);text-overflow:ellipsis;white-space:nowrap;flex:1;transition:color .15s;overflow:hidden}.ing-name:hover{color:var(--app-accent)}.cart-qty{color:var(--app-muted);white-space:nowrap;flex:none;font-size:.8rem}.add-item,.add-ingredient{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.6rem 0;display:flex}.add-item input,.add-ingredient input{height:var(--control-h);font-size:var(--control-font);margin:0}.add-item button,.add-ingredient button{height:var(--control-h);font-size:var(--control-font)}.add-item input:not(.emoji),.add-ingredient input.grow{flex:1;min-width:6rem}input.emoji{text-align:center;width:3.5rem}input.amount{width:5rem}input.unit{width:6rem}.recipes-bar{grid-template-columns:1fr auto;align-items:center;gap:.75rem;display:grid}.search-box{min-width:0;position:relative}.search-box svg{color:var(--app-muted);pointer-events:none;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.recipes-bar .search-input{box-sizing:border-box;width:100%;height:var(--control-h);font-size:var(--control-font);margin:0;padding:0 1rem 0 2.4rem;display:block}.new-recipe{box-sizing:border-box;height:var(--control-h);font-size:var(--control-font);white-space:nowrap;justify-content:center;align-items:center;gap:.4rem;margin:0;padding:0 1.1rem;display:inline-flex}.new-recipe svg{flex:none;display:block}.cat-pills{gap:.4rem;margin:1rem 0;padding:.2rem 0 .4rem;display:flex;overflow-x:auto}.pill{cursor:pointer;background:var(--app-surface);width:auto;color:var(--app-muted);border:1px solid var(--app-border);border-radius:999px;flex:none;margin:0;padding:.3rem .8rem;font-size:.8rem}.pill:hover{color:var(--app-text)}.pill.active{background:var(--app-primary);color:var(--app-primary-contrast);border-color:var(--app-primary)}.recipe-list{border:1px solid var(--app-border);border-radius:var(--app-radius);background:var(--app-surface);margin:1rem 0 0;overflow:hidden}.recipe-cat{background:var(--app-surface-alt);color:var(--app-muted);text-transform:uppercase;letter-spacing:.12em;border-bottom:1px solid var(--app-border);margin:0;padding:.5rem 1.1rem;font-size:.68rem;font-weight:600}.recipe-row{border:none;border-bottom:1px solid var(--app-border);cursor:pointer;text-align:left;background:0 0;border-radius:0;align-items:center;gap:1rem;width:100%;margin:0;padding:.85rem 1.1rem;display:flex}.recipe-list>.recipe-row:last-child{border-bottom:none}.recipe-row:hover{background:color-mix(in srgb, var(--app-surface-alt) 60%, var(--app-surface))}.recipe-row:hover .recipe-name{color:var(--app-accent)}.recipe-bar{background:color-mix(in srgb, var(--app-accent) 30%, transparent);border-radius:999px;flex:none;width:5px;height:2rem;transition:background .15s}.recipe-row:hover .recipe-bar{background:color-mix(in srgb, var(--app-accent) 60%, transparent)}.recipe-main{flex:1;min-width:0}.recipe-title{align-items:baseline;gap:.6rem;display:flex}.recipe-name{color:var(--app-text)}.recipe-cat-tag{color:var(--app-muted);flex:none;font-size:.78rem}.recipe-preview{color:var(--app-muted);text-overflow:ellipsis;white-space:nowrap;margin:.2rem 0 0;font-size:.8rem;overflow:hidden}.recipe-meta{color:var(--app-muted);flex:none;margin-left:auto;font-size:.8rem}.modal-backdrop{background:color-mix(in srgb, var(--app-text) 25%, transparent);backdrop-filter:blur(2px);z-index:50;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--app-radius);flex-direction:column;width:min(440px,92vw);max-height:86vh;display:flex;overflow:hidden;box-shadow:0 12px 40px rgba(26,26,24,.18)}.modal.wide{width:min(580px,94vw)}.modal input,.modal textarea,.modal select{margin-bottom:0}.instructions{white-space:pre-wrap;line-height:1.5}.ingredient-list li{align-items:center;gap:.6rem;padding:.35rem 0;display:flex}.ingredient-list li span{flex:1}.field-row{align-items:center;gap:.5rem;display:flex}.field-row .grow{flex:1}.add-ingredient .grow{flex:1;min-width:8rem}.overlay-header{border-bottom:1px solid var(--app-border);flex:none;justify-content:space-between;align-items:center;padding:.85rem 1.25rem;display:flex}.overlay-label{text-transform:uppercase;letter-spacing:.14em;color:var(--app-muted);font-size:.72rem;font-weight:600}.overlay-actions{align-items:center;gap:.2rem;display:flex}button.icon.accent,button.icon.accent:hover{color:var(--app-accent)}.overlay-actions .icon svg,.week-bar .icon svg,.list-head .icon svg{display:block}.overlay-body{flex-direction:column;flex:auto;padding:.5rem 1.25rem 1.25rem;display:flex;overflow-y:auto}.overlay-body input,.overlay-body textarea,.overlay-body select{background:var(--app-surface-alt);font-size:var(--control-font);border-color:transparent}.overlay-body input{height:var(--control-h)}.field-label{color:var(--app-muted);letter-spacing:.04em;margin:.9rem 0 .25rem;font-size:.72rem;display:block}.overlay-body>.field-label:first-child{margin-top:.4rem}.field-value{margin:0;padding:.1rem 0}.field-grid{grid-template-columns:1fr 1fr;gap:.8rem;display:grid}.field-grid input{width:100%}.used-label{margin-top:1rem;font-size:.85rem}.link-danger{width:auto;color:var(--app-danger);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;align-self:flex-start;margin:1.2rem 0 0;padding:0;font-size:.8rem;text-decoration:underline}.link-danger:hover{color:var(--app-danger);opacity:.8;background:0 0}