@font-face{font-family:Oxygen;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/oxygen-400.woff2) format("woff2")}@font-face{font-family:Oxygen;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/oxygen-700.woff2) format("woff2")}:root,[data-theme=cotton],[data-theme=frost]{--cotton: #fbfaf4;--ink: #000000;--plum: #63254f;--lavender: #c4b4f0;--peach: #e9956d;--lemon: #eeff5b;--blush: #e4c7e7;--taupe: #bfa587;--bg: var(--cotton);--bg-elev: var(--cotton);--text: var(--ink);--muted: color-mix(in srgb, var(--ink) 52%, var(--taupe));--accent: var(--plum);--accent-dim: var(--plum);--accent-soft: var(--blush);--ok: var(--plum);--danger: var(--peach);--border: color-mix(in srgb, var(--taupe) 48%, var(--cotton));--border-hover: var(--taupe);--input-bg: var(--cotton);--btn-fg: var(--cotton);--nav-bg: color-mix(in srgb, var(--cotton) 92%, transparent);--scrim: rgba(0, 0, 0, .4);--checked-bg: transparent;--checked-box: var(--plum);--missing-bg: var(--blush);--heart-bg: var(--blush);--heart: var(--plum);--radius: 8px;--font: "Oxygen", "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font)}h1,h2,h3{color:var(--ink)}#app{min-height:100dvh;padding-bottom:4.5rem}.screen{max-width:920px;margin:0 auto;padding:1rem 1rem 1.5rem}.shop-screen{max-width:40rem}.topbar{display:flex;flex-wrap:nowrap;gap:.55rem .75rem;align-items:center;justify-content:flex-start;margin-bottom:1.1rem;padding-right:0}.topbar-actions{margin-left:auto;flex:0 0 auto;justify-content:flex-end}.topbar-actions:empty{display:none}.topbar-actions button,.topbar-actions .ghost{padding:.4rem .75rem;font-size:.85rem}.brand-wordmark{display:block;width:auto;max-width:100%}.brand-wordmark--nav{height:1.35rem;width:auto;max-width:12.5rem;object-fit:contain;object-position:left center;flex:0 0 auto}.brand-wordmark--auth{height:2.4rem;max-width:min(18rem,100%);margin:0 0 .9rem}.topbar-action{padding:.45rem .7rem;font-size:.85rem}.topbar h1{margin:0;flex:1 1 auto;min-width:0;font-size:1.15rem;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar #back{flex:0 0 auto}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.topbar-context{margin-left:auto;justify-content:flex-end}.kitchen-switch-label{min-width:min(13rem,45vw)}.kitchen-switch{margin:0;padding:.45rem 2rem .45rem .65rem;font-size:.85rem;font-weight:650}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}button,.buttonish{background:var(--plum);border:1px solid var(--plum);border-radius:10px;padding:.65rem .95rem;cursor:pointer;color:var(--cotton);font-weight:650;text-decoration:none;display:inline-block;font-size:.95rem}button:hover,button:active,.buttonish:hover,.buttonish:active{background:var(--ink);border-color:var(--ink);color:var(--cotton)}button:disabled{opacity:.55;cursor:not-allowed}button.ghost,a.ghost,a.buttonish.ghost{background:transparent;color:var(--ink);border:1px solid transparent}button.ghost:hover,a.ghost:hover,a.buttonish.ghost:hover,button.ghost:active,a.ghost:active{background:var(--blush);color:var(--ink);border-color:transparent}button.ghost.pressed{background:var(--lemon);color:var(--ink);box-shadow:none}button.text-link{display:inline;background:none;border:none;border-radius:0;padding:0;color:var(--plum);font:inherit;font-weight:650;text-decoration:underline;cursor:pointer}button.text-link:hover,button.text-link:active{background:none;color:var(--ink);border:none}button.danger,button.ghost.danger{background:var(--peach);color:var(--ink);border-color:transparent}button.danger:hover,button.ghost.danger:hover,button.danger:active,button.ghost.danger:active{background:var(--ink);color:var(--cotton);border-color:var(--ink)}.book-heading:hover,.book-heading:active,.meal-title:hover,.meal-title:active,.shop-recipe-open:hover,.shop-recipe-open:active,.heart-btn:hover,.heart-btn:active,.ing-main:hover,.ing-main:active,.step-focus:hover,.step-focus:active{background:transparent;color:inherit;border:none}.book-cover-btn:hover,.book-cover-btn:active{background:var(--cotton);color:inherit}button.tag-chip{border:none;color:var(--ink)}button.tag-chip:not(.selected):hover,button.tag-chip:not(.selected):active{background:var(--blush);color:var(--ink);border:none}button.tag-chip.selected:hover,button.tag-chip.selected:active{background:var(--ink);color:var(--cotton);border:none}.tag-x,.tag-x:hover,.tag-x:active{background:transparent;border:none;color:var(--ink)}input[type=search],input[type=text],input[type=number],input[type=date],textarea,select{width:100%;background:color-mix(in srgb,var(--taupe) 11%,var(--cotton));border:none;border-radius:var(--radius);padding:.65rem .75rem;color:inherit;margin-bottom:.75rem}::placeholder{color:var(--muted);opacity:1}.muted{color:var(--muted)}.error{color:var(--ink);background:var(--peach);border-radius:8px;padding:.45rem .65rem}.empty{color:var(--muted);text-align:center;padding:2rem 0}.mochi{display:block;pointer-events:none;-webkit-user-select:none;user-select:none;object-fit:contain}.mochi--empty{width:min(8.25rem,46vw);height:auto;margin:0 auto}.mochi--quiet{width:min(5.25rem,34vw);height:auto;margin:0 auto .35rem}.mochi--thumb{width:100%;height:100%;min-height:4.5rem;background:var(--cotton)}.mochi--inline{width:1.6rem;height:1.6rem;margin:0;flex:0 0 auto}.mochi--toast{width:min(10rem,48vw);height:auto;margin:0}.mochi--auth{width:min(6.75rem,42vw);height:auto;margin:.15rem auto .35rem}.mochi-empty{text-align:center;padding:.85rem 0 .15rem}.mochi-empty .empty{padding:.35rem .85rem .2rem;margin:0}.mochi-empty.is-loading{padding-top:1.1rem}.mochi-toast{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:0;background:transparent;pointer-events:none;animation:mochi-center-in .18s ease-out}@keyframes mochi-center-in{0%{opacity:0}to{opacity:1}}.status-line{min-height:1.2rem;font-size:.9rem;margin-top:.5rem}.auth-screen{min-height:100dvh;display:grid;place-items:center;padding:1.25rem}.auth-card{width:min(28rem,100%);padding:1.5rem;background:var(--cotton);border:none;border-radius:var(--radius)}.auth-card h1{margin:.2rem 0 .75rem}.auth-kicker{margin:0;color:var(--accent);font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}.auth-google{width:100%;margin-top:.75rem;text-align:center}.account-page{display:grid;gap:.85rem}.account-card{background:transparent;border:none;border-radius:0;padding:.15rem 0 .55rem}.account-heading{margin:0 0 .4rem;font-size:1.02rem;letter-spacing:-.02em}.account-you{color:var(--muted);font-size:.78rem;font-weight:650}.account-delete{width:100%;margin-top:.55rem}.account-foot{display:flex;flex-wrap:wrap;gap:.5rem .65rem;align-items:center;padding-top:.35rem}.account-foot .ghost{padding:.4rem .7rem}.kitchen-modal-head,.kitchen-modal-foot,.kitchen-section-head,.kitchen-member,.kitchen-member-actions{display:flex;gap:.65rem;align-items:center;justify-content:space-between}.kitchen-modal-head{margin-bottom:.75rem}.kitchen-modal-foot{align-items:flex-end}.kitchen-modal-foot .status-line{flex:1}.kitchen-user,.kitchen-member-person{display:flex;gap:.6rem;align-items:center;min-width:0}.kitchen-user img,.kitchen-member-person img{width:2.35rem;height:2.35rem;border-radius:50%;object-fit:cover}.kitchen-user span,.kitchen-member-person span{min-width:0}.kitchen-user small,.kitchen-member-person small{display:block;overflow:hidden;color:var(--muted);text-overflow:ellipsis}.kitchen-section{padding:.85rem 0}.kitchen-section h2,.kitchen-section h3{margin:0 0 .35rem}.kitchen-section-head h3{margin:0}.kitchen-inline-form,.invite-copy-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:start}.kitchen-inline-form input,.invite-copy-row input,.kitchen-member-actions select{margin:0}.kitchen-members{display:grid;gap:.55rem;margin:.75rem 0 0;padding:0;list-style:none}.kitchen-member{padding:.35rem 0;background:transparent;border:none;border-radius:0}.kitchen-member-actions{justify-content:flex-end}.kitchen-member-actions select{width:auto;min-width:6.5rem}.kitchen-member-actions button{padding:.45rem .6rem}.kitchen-role{color:var(--muted);font-size:.82rem;text-transform:capitalize}.invite-row{padding:.65rem 0}.invite-row:last-child{border-bottom:0}.invite-row .toolbar{margin-top:.45rem;justify-content:space-between}.invite-note{margin:.2rem 0;font-size:.85rem}@media (max-width: 560px){.topbar-context{width:100%}.kitchen-switch-label{flex:1;min-width:0}.kitchen-member{align-items:flex-start}.kitchen-member-actions{flex-direction:column;align-items:stretch}}.chef-toast{position:fixed;left:50%;bottom:calc(4.75rem + env(safe-area-inset-bottom));transform:translate(-50%);z-index:30;max-width:calc(100vw - 2rem);padding:.75rem 1.15rem;border-radius:999px;background:var(--checked-bg);color:var(--text);font-weight:700;letter-spacing:-.01em;box-shadow:0 8px 24px #00000059;animation:chef-toast-in .2s ease-out}@keyframes chef-toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.flash-toast{position:fixed;left:50%;bottom:calc(4.75rem + env(safe-area-inset-bottom));transform:translate(-50%);z-index:30;max-width:calc(100vw - 2rem);padding:.65rem 1rem;border-radius:var(--radius);background:var(--bg-elev);border:1px solid var(--border);color:var(--text);font-size:.9rem;box-shadow:0 8px 24px #00000059;animation:chef-toast-in .2s ease-out}.manual-ing-row{display:grid;grid-template-columns:1fr 4rem 4rem auto;gap:.35rem;margin-bottom:.35rem;align-items:center}.manual-ing-row input{min-width:0}.book-block.manual-book .book-heading-title{font-style:italic}.tried-toggle{display:block;margin:.35rem 0 .5rem;font-size:.95rem}.card-panel{background:var(--bg-elev);border:none;border-radius:var(--radius);padding:1rem 0;margin-bottom:.85rem}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.85rem}.book-card{background:var(--bg-elev);border:none;border-radius:var(--radius);overflow:hidden;cursor:pointer;text-align:left;padding:0;color:inherit;display:block;width:100%}.book-card:hover{background:color-mix(in srgb,var(--blush) 35%,var(--cotton))}.book-cover{aspect-ratio:3 / 4;width:100%;object-fit:cover;display:block;background:var(--input-bg)}.book-cover.placeholder{display:grid;place-items:center;color:var(--muted);font-size:2rem}.book-meta{padding:.65rem .7rem .75rem}.book-title{display:block;font-weight:650;font-size:.95rem;line-height:1.25}.book-author{display:block;color:var(--muted);font-size:.8rem;margin-top:.15rem}.book-count{display:block;color:var(--muted);font-size:.75rem;margin-top:.25rem}.book-block{margin-bottom:1.35rem}.book-heading{display:block;width:100%;text-align:left;background:transparent;color:inherit;border:none;padding:.35rem .2rem;margin:0;cursor:pointer;border-radius:0;min-height:0}.book-heading:hover,.book-heading:active{background:transparent;color:inherit;border:none}.book-cover-btn{position:relative;flex-shrink:0;padding:0;border:none;background:var(--bg-elev);border-radius:var(--radius);overflow:hidden}.book-cover-btn:hover,.book-cover-btn:focus-visible{border-color:var(--border-hover);box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 18%,transparent)}.book-cover-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.book-heading-row{overflow:hidden;align-items:stretch;min-height:4.5rem}.book-heading-cover{width:3.4rem;height:100%;min-height:4.5rem;object-fit:cover;border-radius:0;background:var(--input-bg);display:block}.book-heading-cover.placeholder{display:grid;place-items:center;color:var(--muted);font-size:1.2rem}.book-heading-cover.mochi{object-fit:contain;background:var(--cotton)}.book-heading-title{display:block;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.book-block .recipe-list{margin-top:.65rem}.book-block.collapsed .recipe-list,.book-block.collapsed .book-empty{display:none}.book-heading-row{display:flex;gap:.4rem;align-items:stretch}.book-heading-row .book-heading{flex:1;min-width:0}.book-heading-row{align-items:center}.recipe-row-wrap.hearted .recipe-row{background:var(--heart-bg);border-color:#e8a0ad}.heart-btn{flex-shrink:0;width:2.1rem;padding:.2rem 0;border:none;background:transparent;font-size:1.15rem;line-height:1;color:var(--muted)}.heart-btn.on,.recipe-row-wrap.hearted .heart-btn{color:var(--heart)}.recipe-row{display:flex;gap:.45rem;align-items:center;cursor:pointer}.recipe-row-hit{display:flex;gap:.55rem;align-items:center;min-width:0}.shop-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.3rem}.shop-item{cursor:pointer}.photo-preview-wrap,.photo-frame{position:relative}.photo-rotate-bar{position:absolute;left:.35rem;right:.35rem;bottom:.4rem;display:flex;justify-content:space-between;pointer-events:none}.photo-rotate-btn{pointer-events:auto;width:2.1rem;height:2.1rem;padding:0;border-radius:999px;background:#ffffffe0;border:1px solid var(--border);font-size:1.05rem;line-height:1}.step-edit-row{display:grid;gap:.3rem}.step-edit-row textarea{min-width:0;width:100%;margin:0;resize:none;overflow:hidden;line-height:1.45;padding:.5rem .6rem;font-size:.95rem}.step-edit-btns{display:flex;justify-content:flex-end;gap:.25rem}.step-edit-btn{display:grid;place-items:center;width:2.15rem;height:2.15rem;min-height:0;padding:0;font-size:.9rem;font-weight:700;line-height:1;border-radius:8px;background:transparent;color:var(--text);border:1px solid var(--border)}.step-edit-btn:hover,.step-edit-btn:active{background:var(--blush);color:var(--ink);border-color:var(--taupe)}.step-edit-btn.danger{background:var(--peach);color:var(--ink);border-color:transparent}.step-edit-btn.danger:hover,.step-edit-btn.danger:active{background:var(--ink);color:var(--cotton);border-color:var(--ink)}.step-add-row{margin-top:.55rem}.steps-edit{gap:.7rem}.meal-list{display:grid;gap:.35rem}.meal-day-label{margin:.7rem 0 0;font-size:.78rem;font-weight:650;color:var(--muted)}.meal-list>.meal-day-label:first-child{margin-top:.1rem}.meal-day-label.is-today{color:var(--ink)}.meal-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.4rem .85rem;position:relative;background:transparent;border:none;border-radius:0;padding:.55rem 0;color:inherit}.meal-copy{flex:1 1 12rem;min-width:0}.meal-row .meal-title{display:block;width:100%;font-weight:700;border:none;background:none;padding:0;text-align:left;color:inherit;cursor:pointer}.meal-row .meal-book{margin:.1rem 0 0;color:var(--muted);font-size:.82rem}.meal-picks{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .55rem;margin-top:.2rem}.meal-pick{width:auto;max-width:11rem;margin:0;padding:.1rem 1.05rem .1rem 0;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath fill='%236f6254' d='M1 1h8L5 5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .05rem center;background-size:.62rem;border:none;border-radius:0;color:var(--muted);font:inherit;font-size:.82rem;font-weight:650;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none}.meal-pick:hover,.meal-pick:active{background-color:transparent;color:var(--ink);border:none}.meal-pick:focus-visible{outline:2px solid var(--accent);outline-offset:2px;background-color:transparent;color:var(--ink);border:none}.meal-actions{display:flex;align-items:center;gap:.55rem;flex:0 0 auto;margin-left:auto}.meal-actions button:not(.text-link){width:auto;min-height:0;padding:.32rem .7rem;font-size:.8rem}.meal-actions .text-link{color:var(--muted);text-decoration:none;font-size:.82rem}.meal-actions .text-link:hover,.meal-actions .text-link:active{color:var(--ink)}.meal-drag{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;border:none;background:transparent;color:var(--muted);padding:.45rem .35rem;font-size:1.05rem;line-height:1;letter-spacing:-.08em}.meal-drag:active{cursor:grabbing}.meal-row.dragging{opacity:.7}.meal-drag-spacer{width:1.4rem}.meal-note{margin:.35rem 0 0;color:var(--text);font-size:.88rem;white-space:pre-wrap}.meal-note-editor{margin-top:.45rem}.meal-note-editor textarea{min-height:4.5rem}.meal-notes-btn{margin-top:.4rem;padding:.3rem .55rem;font-size:.78rem}.recipe-title-row .heart-btn{margin-left:auto}#recipe-book{margin-bottom:.35rem}.meal-check{display:grid;place-items:center;padding-top:.2rem}.meal-check input{width:auto;margin:0;accent-color:var(--checked-box)}.recipe-row .heart-btn{margin-left:auto}.recipe-actions{margin:.35rem 0 .65rem}.shop-block{display:grid;gap:.45rem;margin:0 0 1.15rem}.shop-block .section-title{margin:0;font-size:.92rem}.shop-empty{margin:0;padding:0;text-align:left}.shop-hint{margin:0;color:var(--muted);font-size:.82rem}.shop-recipe-list{display:grid;gap:.2rem}.shop-recipe-row{display:flex;gap:.5rem;align-items:center;justify-content:space-between;padding:.4rem 0}.shop-recipe-open{min-width:0;flex:1;margin:0;padding:0;border:none;background:none;text-align:left;color:inherit;font:inherit}.shop-recipe-open .check-meta{display:block;margin-top:.1rem}.shop-recipe-btns{display:flex;flex-shrink:0;gap:.25rem;align-items:center}.shop-recipe-btns button{padding:.32rem .55rem;font-size:.8rem;min-height:0}.shop-recipe-btns .ghost{width:2rem;padding:.32rem 0}.shop-add-row{display:flex;gap:.4rem;align-items:center;margin-top:.45rem}.shop-add-row input{flex:1;min-width:0;margin:0}.shop-add-row button{flex-shrink:0;padding:.4rem .7rem;font-size:.85rem}.shop-inline-del{width:2rem;padding:.2rem 0;min-height:0;font-size:.85rem}.recipe-list{display:grid;gap:.55rem}.recipe-row-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.25rem .35rem;align-items:center}.recipe-row-wrap[hidden],.book-block[hidden]{display:none}.recipe-pick{display:grid;place-items:center;box-sizing:border-box;min-width:0;padding:.25rem .15rem .25rem .35rem;margin:0;cursor:default}.recipe-pick:has(input){cursor:pointer}.recipe-pick input{width:1.2rem;height:1.2rem;margin:0;accent-color:var(--accent)}.recipe-picks{display:grid;gap:.35rem;margin-bottom:.85rem}.pick-row{display:flex;gap:.55rem;align-items:start;color:inherit}.pick-row input{width:auto;margin:.3rem 0 0;accent-color:var(--checked-box)}.shop-item{padding:.4rem 0;border:none}.shop-item.done{opacity:1;background:transparent}.shop-item.done .ing-line-name{text-decoration:line-through;text-decoration-thickness:1.5px}.shop-item .check-row{border:none;background:transparent;padding:0;gap:.5rem;align-items:flex-start}.shop-item .ing-line{min-width:0}.shop-item .check-row input{flex-shrink:0;width:1.1rem;height:1.1rem;margin:.2rem 0 0}.check-list.shop-list{gap:0}.shop-contrib{list-style:none;margin:.15rem 0 0 1.7rem;padding:0;display:grid;gap:.08rem}.shop-contrib li{display:flex;gap:.5rem;justify-content:space-between;color:var(--muted);font-size:.8rem;line-height:1.35}.shop-contrib-recipe{min-width:0}.shop-contrib-qty{flex-shrink:0;font-variant-numeric:tabular-nums}.shop-pantry .shop-item{opacity:.92}.shop-pantry-btn{flex-shrink:0;font-size:.78rem;color:var(--muted);text-decoration:none}.shop-pantry-btn:hover,.shop-pantry-btn:active{color:var(--ink)}.qty-edit-btn{flex-shrink:0;padding:.3rem .55rem;font-size:.78rem}.qty-edit-btn.pressed{box-shadow:inset 0 0 0 1.5px var(--text);background:var(--missing-bg)}.qty-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--scrim);display:grid;place-items:center;padding:1rem}.qty-modal-card{width:min(26rem,100%);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.15rem 1.2rem}.qty-modal-card h2{margin:0 0 .35rem;font-size:1.15rem}.recipe-row{display:flex;flex-direction:row;gap:.35rem;align-items:center;position:relative;background:transparent;border:none;border-radius:0;padding:.55rem 0;color:inherit;width:100%;text-align:left;cursor:pointer}.recipe-row:hover{background:transparent}.recipe-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.recipe-row-hit{display:grid;grid-template-columns:72px minmax(0,1fr);gap:.75rem;align-items:start;background:transparent;border:none;padding:0;margin:0;color:inherit;flex:1 1 auto;min-width:0;width:auto;text-align:left;font:inherit;pointer-events:none}.recipe-row.no-cover .recipe-row-hit{grid-template-columns:1fr}.recipe-row-copy{display:grid;gap:.2rem;min-width:0}.recipe-row .tag-row{margin:0;padding:0;justify-content:flex-start;max-width:none;width:100%}.recipe-thumb{width:72px;height:72px;object-fit:cover;border-radius:8px;background:var(--input-bg)}.recipe-thumb.placeholder{display:grid;place-items:center;color:var(--muted);font-size:1.4rem}.recipe-row-hit span{min-width:0}.recipe-title{font-weight:650;overflow-wrap:anywhere;display:block}.recipe-status{color:var(--muted);font-size:.82rem;margin-top:.15rem}.recipe-status.error{color:var(--ink);background:var(--peach);display:inline-block;padding:.1rem .4rem;border-radius:6px}.tag-filters{display:flex;flex-wrap:wrap;gap:.3rem;margin:0 0 .65rem;align-items:center}.tag-edit-chip{background:transparent;color:var(--muted);border:none;font-weight:600}button.tag-chip.tag-edit-chip:hover,button.tag-chip.tag-edit-chip:active{background:var(--blush);color:var(--ink)}.tag-manager{display:grid;gap:.45rem;margin:0 0 1rem}.tag-manage-row{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.tag-manage-row input{flex:1;min-width:8rem}.tag-row{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin-top:.3rem}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;background:transparent;border:none;color:var(--muted);border-radius:var(--radius);padding:.15rem .4rem;font-size:.78rem;font-weight:650;line-height:1.3;cursor:default}button.tag-chip,.tag-chip.assign,.tag-chip[data-tag-go]{cursor:pointer}button.tag-chip{margin:0}.tag-chip.selected,.tag-chip.assign:hover{background:var(--blush);color:var(--ink);box-shadow:none}.tag-x{background:transparent;border:none;color:var(--muted);padding:0 .1rem;margin:0;font-size:1rem;line-height:1;font-weight:700;border-radius:999px}.tag-x:hover{color:var(--danger)}.tag-suggest{display:inline-flex;align-items:center;gap:.05rem}.tag-add{display:grid;grid-template-columns:1fr auto;gap:.45rem;align-items:start;margin-top:.65rem}.tag-add input{margin-bottom:0}.page-gallery{display:flex;gap:.65rem;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -1rem 1rem;padding:0 1rem .25rem}.page-gallery img{flex:0 0 min(88vw,420px);scroll-snap-align:start;border-radius:var(--radius);border:1px solid var(--border);max-height:55vh;object-fit:contain;background:var(--input-bg)}.page-figure{flex:0 0 min(88vw,420px);scroll-snap-align:start;margin:0}.page-figure img{flex:none;width:100%;display:block}.page-figure figcaption{font-size:.8rem;color:var(--muted);text-align:center;margin-top:.35rem}.cover-block{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;margin-bottom:1rem}.section-title{margin:1.25rem 0 .65rem;font-size:1.05rem;color:var(--plum)}.section-head{display:flex;flex-wrap:wrap;gap:.55rem .85rem;align-items:center;justify-content:space-between;margin:1.25rem 0 .65rem}.section-head .section-title{margin:0}.seg{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;background:var(--input-bg)}.seg-btn{background:transparent;color:var(--muted);border:none;border-radius:0;padding:.4rem .65rem;font-size:.82rem;font-weight:650}.seg-btn:hover,.seg-btn:active{background:var(--blush);color:var(--ink);border:none}.seg-btn.active{background:var(--plum);color:var(--cotton)}.seg-btn.active:hover,.seg-btn.active:active{background:var(--ink);color:var(--cotton)}.steps{margin:0;padding-left:1.4rem;display:grid;gap:.45rem;line-height:1.55}.steps>li{margin:0}.steps>li.done .step-row{background:var(--checked-bg);border-radius:8px;padding:.2rem .4rem}.steps>li.done .check-label,.ing-card.done .check-label,.shop-item.done .check-label{text-decoration:line-through;text-decoration-thickness:1.5px}.steps .step-row{display:grid;grid-template-columns:1.1rem 1fr;gap:.35rem;align-items:start;margin-left:.15rem}.steps .step-row input{width:auto;margin:.35rem 0 0;accent-color:var(--checked-box)}.steps .step-row .check-label{min-width:0;line-height:1.5}.steps .step-timers{margin-left:1.45rem}.step-marker{display:flex;align-items:center;justify-content:center;width:1.1rem;min-height:1.35rem}.step-arrow{display:block;width:0;height:0;border-top:.28rem solid transparent;border-bottom:.28rem solid transparent;border-left:.42rem solid var(--ok)}.check-list{display:grid;gap:.45rem}.check-row{display:flex;gap:.65rem;align-items:start;background:transparent;border:none;padding:.45rem 0}.check-row.done{opacity:1;background:var(--checked-bg)}.check-row input{width:auto;margin:.35rem 0 0;accent-color:var(--checked-box)}.check-label{flex:1;line-height:1.35}.check-meta{display:block;color:var(--muted);font-size:.8rem;margin-top:.15rem}.ing-card{background:transparent;border:none}.ing-card.dragging{opacity:.7}.ing-drag{flex-shrink:0;width:auto;min-width:2rem;min-height:2rem;margin:0;padding:.2rem .25rem;background:transparent;border:none;color:var(--muted);cursor:grab;touch-action:none;font-size:.95rem;line-height:1;letter-spacing:-.08em}.ing-drag:active{cursor:grabbing}.ing-card.done{opacity:1;background:var(--checked-bg)}.ing-card.special,.shop-item.special{border-color:var(--border-hover)}.ing-card .check-row{border:none;background:transparent}.ing-main{flex:1;background:transparent;border:none;color:inherit;text-align:left;padding:0;border-radius:0;font-weight:500;cursor:pointer}.ing-edit{padding:0 .75rem .75rem}.ing-qty-row{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.ing-edit-actions{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.75rem}.ing-edit-actions [data-ing-del]{width:auto}.conv-block{margin-top:.65rem}.conv-block .seg{margin-bottom:.55rem}.conv-block input[type=number]{margin-bottom:.35rem}.missing-badge{display:inline-block;margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:var(--missing-bg);color:var(--text);font-size:.68rem;font-weight:700;vertical-align:middle}.tried-badge{display:inline-block;margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:var(--checked-bg);color:var(--text);font-size:.68rem;font-weight:700;vertical-align:middle}.journal-panel{margin:1.15rem 0 .5rem}.journal-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.55rem}.journal-head .panel-heading{margin:0}.journal-head .toolbar{gap:.35rem}.journal-timeline{display:grid;gap:.55rem}.journal-item{display:grid;gap:.3rem;min-width:0}.journal-photo{grid-template-columns:4.4rem 1fr;gap:.55rem;align-items:start}.journal-thumb{display:block;padding:0;border:none;background:transparent;border-radius:8px;overflow:hidden}.journal-thumb img{display:block;width:4.4rem;height:4.4rem;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.journal-item-body{min-width:0}.journal-item-head{display:flex;flex-wrap:wrap;gap:.3rem .4rem;align-items:center}.journal-item-head input[type=date]{width:auto;margin:0;padding:.2rem .35rem;font-size:.78rem}.journal-item input[type=text],.journal-item textarea{margin:0;font-size:.88rem;padding:.35rem .45rem}.journal-mini{padding:.12rem .4rem;font-size:.72rem;font-weight:600}.journal-note-add{display:grid;gap:.4rem;margin-bottom:.65rem}.cover-badge{position:absolute;top:.35rem;left:.35rem;font-size:.7rem;font-weight:650;background:var(--accent-soft);color:var(--text);padding:.1rem .35rem;border-radius:4px}.mise-block{display:grid;gap:.65rem;margin:0 0 1.1rem}.mise-photo{margin:0;max-width:220px}.mise-photo figcaption{margin-top:.35rem;color:var(--muted);font-size:.8rem}.mise-note{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:.75rem .85rem;line-height:1.45;white-space:pre-wrap}.extra-pending-img{width:100%;max-height:220px;object-fit:contain;border-radius:10px;background:var(--input-bg);margin-bottom:.5rem}.note-card{background:color-mix(in srgb,var(--taupe) 11%,var(--cotton));border:none;border-radius:var(--radius);padding:.65rem;margin-bottom:.55rem}.note-head{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.4rem}.note-head input{margin:0;flex:1}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--scrim);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:2.5rem .75rem 1rem}.lightbox[hidden]{display:none}.lightbox figure{margin:0;text-align:center}.lightbox img{max-width:100%;max-height:78dvh;object-fit:contain;border-radius:10px}.lightbox figcaption{color:var(--muted);margin-top:.5rem}.lightbox-close{position:absolute;top:.6rem;right:.6rem;background:var(--bg-elev);color:var(--text);border:1px solid var(--border)}.lightbox-nav{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);font-size:1.6rem;padding:.4rem .7rem}.pantry-badge,.special-badge{display:inline-block;margin-left:.35rem;padding:0;border-radius:0;background:transparent;color:var(--muted);font-size:.72rem;font-weight:650;vertical-align:middle}.transcript{white-space:pre-wrap;font-size:.92rem;line-height:1.55;background:color-mix(in srgb,var(--taupe) 11%,var(--cotton));border:none;border-radius:var(--radius);padding:.85rem;max-height:320px;overflow:auto}details.collapsible{background:var(--bg-elev);border:none;border-radius:var(--radius);margin-top:.75rem}details.collapsible summary{cursor:pointer;padding:.75rem 1rem;font-weight:600}details.collapsible .inner{padding:0 1rem 1rem}.field-label{display:block;margin:.5rem 0 .35rem;color:var(--muted);font-size:.85rem}.toggle{display:flex;gap:.45rem;align-items:center;color:var(--muted);margin:.5rem 0 .75rem}.toggle input{width:auto;margin:0}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 1fr;gap:.5rem;padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));background:var(--nav-bg);border-top:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav:has(>:nth-child(3)){grid-template-columns:1fr 1fr 1fr}.bottom-nav:has(>:nth-child(4)){grid-template-columns:1fr 1fr 1fr 1fr}.bottom-nav button{text-align:center;background:transparent;color:var(--ink);border:none}.bottom-nav button:hover,.bottom-nav button:active{background:var(--blush);color:var(--ink);border:none}.bottom-nav button.active{background:var(--plum);color:var(--cotton);border:none}.bottom-nav button.active:hover,.bottom-nav button.active:active{background:var(--ink);color:var(--cotton)}.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem}@media (max-width: 700px){.compare-grid{grid-template-columns:1fr}}.compare-col{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem 1rem;min-width:0}.compare-col h3{margin:0 0 .35rem;font-size:1rem}.compare-col h4{margin:.85rem 0 .35rem;font-size:.98rem}.compare-meta{color:var(--muted);font-size:.82rem;margin:0 0 .5rem}.compare-recipe ul,.compare-recipe ol{margin:.25rem 0 .65rem;padding-left:1.15rem;line-height:1.45}.compare-recipe li{margin-bottom:.25rem}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-.15rem;margin-right:.35rem}@keyframes spin{to{transform:rotate(360deg)}}.panel-heading{margin:0 0 .5rem;font-size:1rem}.photo-picker{margin:.25rem 0 .75rem}.photo-picker-hint{margin:.55rem 0 0;font-size:.85rem}.photo-picker-empty{margin:.65rem 0 0}.photo-slot-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}.photo-slot-actions button{padding:.4rem .55rem;font-size:.8rem;width:auto}.camera-block{margin:.75rem 0 1rem}.recipe-link-list{display:grid;gap:.55rem}.recipe-link-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;align-items:center}.recipe-link-open{min-width:0;border:none;background:transparent;color:inherit;text-align:left;padding:0}.recipe-link-open strong{display:block}.recipe-link-add{margin-top:.85rem}.recipe-link-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:center}.recipe-link-add-row select{min-width:0;margin:0}.ing-card.pantry{opacity:.92}.camera-actions{display:grid;grid-template-columns:1fr;gap:.5rem}.camera-btn{width:100%;font-size:1.05rem;padding:.85rem 1rem;background:var(--accent-soft);color:var(--text)}.camera-block .ghost{width:100%;text-align:center}.camera-block .camera-more{margin-top:.5rem}.photo-previews{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.75rem}.photo-preview-wrap{margin:0}.photo-preview-wrap figcaption{font-size:.75rem;color:var(--muted);text-align:center;margin-top:.25rem}.photo-preview{width:100%;max-width:220px;border-radius:var(--radius);border:none;display:block}.photo-preview-empty{min-height:100px;background:var(--input-bg)}.photo-preview-btn{display:block;width:100%;padding:0;background:none;border:none;border-radius:10px;cursor:pointer}.photo-preview-btn .photo-preview{max-width:none}.recipe-pages{margin:0 0 1.1rem}.recipe-pages .photo-picker{margin:0}.recipe-pages .photo-previews{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.55rem}.recipe-pages .photo-preview{max-width:none;width:100%}.recipe-pages .photo-picker.view .photo-preview{cursor:default}.recipe-page-reveal{margin:0 0 1rem}.recipe-page-full{display:grid;gap:.75rem;margin-top:.65rem}.recipe-page-full img{width:100%;height:auto;display:block;border-radius:0}.recipe-opts-card .recipe-opts-actions{display:grid;gap:.45rem;margin:.75rem 0 .65rem}.recipe-opts-card .recipe-opts-actions button{width:100%}#offline-banner{position:sticky;top:0;z-index:50;padding:.7rem 1rem;text-align:center;font-size:.9rem;font-weight:650;background:var(--accent-soft);color:var(--text);border-bottom:1px solid var(--border)}.ing-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem 1rem;flex:1;align-items:baseline;text-align:left}.ing-line-name{font-weight:400}.ing-line-qty{font-variant-numeric:tabular-nums;text-align:right;min-width:4.5rem;color:var(--muted)}.ing-line-note{display:block;color:var(--muted);font-size:.8rem;margin-top:.12rem}.ing-card.highlight .ing-line-name,.ing-card.highlight .ing-line-qty{color:var(--ok);font-weight:700}.steps>li.highlight .check-label{font-weight:700}.ing-drag{font-size:1.15rem;min-width:2.4rem;min-height:2.4rem}.step-time{font-weight:700;border:none;background:transparent;color:var(--accent);padding:0;text-decoration:underline;text-underline-offset:.15em}.step-focus{width:100%;border:none;background:transparent;text-align:left;padding:.2rem 0;color:inherit}.step-timers{display:grid;gap:.28rem;margin:.2rem 0 .15rem}.cook-timer{display:flex;flex-wrap:wrap;gap:.25rem .45rem;align-items:center;font-size:.82rem;position:relative;background:var(--plum);color:var(--cotton);border-radius:999px;padding:.28rem .55rem .28rem .7rem;overflow:hidden}.cook-timer-track{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.cook-timer-fill{display:block;height:100%;background:var(--lemon)}.cook-timer-time,.cook-timer-done,.cook-timer .cook-timer-btn{position:relative;z-index:1}.cook-timer-time{font-variant-numeric:tabular-nums;font-size:.92rem;color:var(--cotton)}.cook-timer-done{color:var(--ink)}.cook-timer.done{background:var(--lemon);color:var(--ink)}.cook-timer.done .cook-timer-fill{display:none}.cook-timer .cook-timer-btn{background:var(--lemon);color:var(--ink);border:none;padding:.08rem .4rem;font-size:.72rem;font-weight:600}.cook-timer .cook-timer-btn:hover,.cook-timer .cook-timer-btn:active{background:var(--ink);color:var(--cotton)}.cook-timer.done .cook-timer-btn{background:var(--plum);color:var(--cotton)}.note-date{display:block;color:var(--muted);font-size:.8rem;margin:0}.aisle-title{font-size:.95rem;font-weight:700;margin:1.1rem 0 .35rem}.aisle-pick{width:auto;max-width:7.5rem;min-width:0;margin:0;padding:.2rem .4rem;font-size:.78rem;line-height:1.2}.plan-day{margin-bottom:1.25rem}.plan-day .section-title{margin-bottom:.15rem}.plan-day-prompt{margin:.1rem 0 .45rem;color:var(--muted);font-size:.9rem}.plan-day-add:not(:has(.plan-add.is-open)){display:none}.plan-day-pick{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;margin:0}.plan-day-pick:has(.plan-add.is-open){margin:0 0 .55rem}.plan-add{width:min(22rem,100%);margin:0}.meal-purchased .meal-book{color:var(--ok)}.kitchen-footer{max-width:920px;margin:2.25rem auto 0;padding:.75rem 0 .25rem;display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;opacity:.82}.kitchen-footer .kitchen-switch{font-size:.78rem;font-weight:500;padding:.3rem 1.6rem .3rem .45rem}.kitchen-footer .topbar-action{font-size:.78rem;padding:.25rem .5rem;background:transparent}.recipe-heading{margin:0 0 .7rem}.recipe-kicker{display:flex;align-items:baseline;gap:.5rem}.recipe-kicker .recipe-book-sub{flex:1;min-width:0;margin:0}.recipe-meal-btn{flex:0 0 auto;padding:.1rem .4rem;font-size:.75rem;font-weight:600;color:var(--muted)}.recipe-page-title{margin:0;font-size:1.25rem;letter-spacing:-.02em}.recipe-meta-edit #recipe-title{margin:0;font-size:1.15rem;font-weight:700}.recipe-edit-btn{padding:.1rem .4rem;font-size:.75rem;font-weight:600;color:var(--muted)}.recipe-edit-tools{margin-top:.2rem}.recipe-book-sub{margin:0;color:var(--muted);font-size:.85rem}.book-page-head{margin:0 0 .75rem}.book-page-head .recipe-book-sub{margin:0}.book-meta-edit{display:grid;gap:.45rem}.book-cover-hero{display:block;width:min(9.5rem,42vw);padding:0;border:none;background:transparent;border-radius:10px;overflow:hidden;margin:0 0 1rem;cursor:zoom-in}.book-cover-hero img{display:block;width:100%;aspect-ratio:3 / 4;object-fit:cover;background:var(--input-bg)}.book-cover-edit{margin-bottom:1rem}.recipe-heading-tags{margin-top:.3rem}.recipe-heading-tags .tag-chip{font-size:.7rem;font-weight:500;padding:.08rem .45rem;background:transparent;color:var(--muted)}.recipe-meta-edit{margin-top:.65rem;display:grid;gap:.35rem}.recipe-meta-edit .panel-heading{margin-top:.45rem}.recipe-row,.shop-list-row,.meal-row,.card-panel{box-shadow:none}#offline-banner.pending,#offline-banner.syncing{background:var(--checked-bg);border-bottom-color:var(--ok)}body.offline .online-only,body.offline .qty-edit-btn,body.offline .ing-edit,body.offline .tag-suggest,body.offline [data-tag-remove],body.offline .heart-btn,body.offline .recipe-pick,body.offline [data-unshop],body.offline .photo-picker .camera-actions,body.offline #cover-picker,body.offline #add-panel,body.offline #compare-panel,body.offline .card-panel:has(#book-title),body.offline .card-panel:has(#cover-picker){display:none!important}body.offline .ing-main,body.offline [data-extra-label],body.offline [data-extra-date],body.offline [data-note-date],body.offline [data-note-body],body.offline #rename-list,body.offline #list-title,body.offline #book-title,body.offline #book-author,body.offline #recipe-title,body.offline #recipe-book{pointer-events:none}.admin-page{max-width:1100px}.admin-section{margin:1.5rem 0}.admin-section h2{margin:0 0 .6rem;font-size:1.05rem}.admin-table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th,.admin-table td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--border);vertical-align:middle}.admin-actions{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:flex-end}.admin-allowlist{list-style:none;padding:0;margin:.75rem 0 0}.admin-allowlist li{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding:.35rem 0;border-bottom:1px solid var(--border)}
