:root{--bg:#e4e6e1;--paper:#fbfaf6;--panel:#fbfaf6;--panel-2:#f0f1ed;--ink:#16181a;--ink-2:#42474c;--muted:#565c62;--rule:#d6d9d4;--rule-2:#c3c7c1;--line:#d6d9d4;--line-2:#c3c7c1;--acc:#ce3a1e;--acc-press:#a82e16;--acc-ink:#fff;--accent:#ce3a1e;--accent-2:#2e5d4f;--stamp:#2e5d4f;--warn:#9a5a12;--good:#2e5d4f;--bad:#ce3a1e;--meal-breakfast:#9a5a12;--meal-lunch:#2e5d4f;--meal-dinner:#ce3a1e;--meal-snack:#7a4a55;--meal-ink:#fff;--chip:#ecedea;--hover:#ecedea;--card:var(--panel);--bg-tint:var(--panel-2);--color-error:var(--bad);--elev-1:0 1px 0 #14181a0a;--elev-2:0 1px 0 #14181a0a, 0 12px 32px -18px #14181a33;--elev-3:0 2px 6px #14181a0f, 0 24px 60px -24px #14181a47;--shadow:var(--elev-2);--display:"Instrument Sans", system-ui, sans-serif;--sans:"Instrument Sans", -apple-system, system-ui, sans-serif;--mono:"Instrument Sans", system-ui, sans-serif;--r-xs:6px;--r-sm:8px;--r-md:10px;--r-card:12px;--r-chip:999px;--t-stamp:11px;--t-label:12px;--t-sm:13px;--t-body:15px;--t-lead:17px;--t-h3:21px;--t-h2:26px;--t-h1:clamp(33px, 4.5vw, 40px);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=pass]{--bg:#0e1011;--paper:#1b1e20;--panel:#1b1e20;--panel-2:#24292b;--ink:#f3f4f1;--ink-2:#c3c9cc;--muted:#8b9398;--rule:#2a2f31;--rule-2:#383e41;--line:#2a2f31;--line-2:#383e41;--acc:#f5a524;--acc-press:#d98e14;--acc-ink:#121415;--accent:#f5a524;--accent-2:#7fb39c;--stamp:#7fb39c;--warn:#c98a3a;--good:#7fb39c;--bad:#e8694b;--meal-breakfast:#c8821f;--meal-lunch:#7fb39c;--meal-dinner:#e8694b;--meal-snack:#b07c88;--meal-ink:#121415;--chip:#24292b;--hover:#24292b;--card:var(--panel);--bg-tint:var(--panel-2);--color-error:var(--bad);--elev-1:0 1px 0 #0003;--elev-2:0 1px 0 #0003, 0 14px 40px -18px #0009;--elev-3:0 2px 8px #0000004d, 0 28px 72px -24px #000000b3;--shadow:var(--elev-2);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--t-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.45}.display{font-family:var(--display);letter-spacing:-.01em;font-weight:500}.num{font-family:var(--sans);font-weight:500}b.num{font-weight:600}.ledger-value{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;min-width:5ch}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}hr{border:0;border-top:1px solid var(--rule);margin:0}.app{grid-template-rows:56px 1fr;grid-template-columns:240px 1fr 380px;height:100dvh;min-height:760px;display:grid}.app--no-rail{grid-template-columns:240px 1fr}.app--no-rail .main>*{max-width:1180px;margin-inline:auto}.topbar{border-bottom:1px solid var(--rule);background:var(--paper);grid-column:1/-1;align-items:center;gap:16px;padding:0 24px;display:flex}.brand{font-family:var(--display);font-size:var(--t-h3);letter-spacing:-.02em;align-items:center;gap:10px;font-weight:600;display:flex}.topbar .crumbs{color:var(--muted);font-size:var(--t-sm);align-items:center;gap:8px;display:flex}.topbar .crumbs b{color:var(--ink);font-weight:500}.topbar-page-title{display:none}.topbar .spacer{flex:1}.topbar .pill{background:var(--chip);font-size:var(--t-label);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.topbar .avatar{background:linear-gradient(135deg, var(--acc), var(--warn));width:30px;height:30px;color:var(--acc-ink);font-weight:600;font-size:var(--t-label);border-radius:999px;place-items:center;display:grid}.side{border-right:1px solid var(--rule);background:var(--paper);flex-direction:column;gap:2px;padding:16px 12px;display:flex;overflow-y:auto}.nav-section{font-size:var(--t-stamp);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:14px 12px 6px}.nav-item{font-size:var(--t-sm);color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 12px;display:flex}.nav-item:hover{background:var(--hover);color:var(--ink)}.nav-item.active{background:var(--ink);color:var(--paper)}.nav-item.active .nav-count{color:var(--paper);background:#ffffff2e}.nav-item .ico{opacity:.9;width:16px;height:16px}.nav-count{font-size:var(--t-stamp);background:var(--chip);color:var(--ink-2);border-radius:999px;margin-left:auto;padding:1px 7px}.main{padding:24px 32px 64px;overflow-y:auto}.rail{border-left:1px solid var(--rule);background:var(--paper);padding:20px 20px 40px;overflow-y:auto}.card{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-card);padding:18px}.card.raised{box-shadow:var(--shadow)}.btn{border-radius:var(--r-sm);background:var(--paper);border:1px solid var(--rule-2);white-space:nowrap;font-size:var(--t-sm);align-items:center;gap:6px;padding:8px 14px;font-weight:500;transition:background 80ms,border-color 80ms;display:inline-flex}.btn:hover{background:var(--hover)}.btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn.primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn.ghost{border-color:#0000}.btn.sm{font-size:var(--t-label);border-radius:var(--r-xs);padding:5px 10px}.btn:disabled{background:var(--chip);color:var(--muted);border-color:var(--rule);box-shadow:none;cursor:not-allowed}.btn.primary:disabled{background:var(--chip);color:var(--muted);border-color:var(--rule)}.chip{border-radius:var(--r-chip);background:var(--chip);color:var(--ink-2);border:1px solid var(--rule-2);font-size:var(--t-stamp);align-items:center;gap:5px;padding:3px 9px;font-weight:500;line-height:1.4;display:inline-flex}.chip.outline{border-color:var(--rule-2);box-shadow:none;background:0 0}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chip.good{background:color-mix(in oklab, var(--good) 12%, transparent);color:var(--good);border-color:color-mix(in oklab, var(--good) 32%, transparent)}.chip.warn{background:color-mix(in oklab, var(--warn) 14%, transparent);color:var(--warn);border-color:color-mix(in oklab, var(--warn) 32%, transparent)}.chip.bad{background:color-mix(in oklab, var(--bad) 12%, transparent);color:var(--bad);border-color:color-mix(in oklab, var(--bad) 32%, transparent)}.chip .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.day-chip-week{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-chip-week .day-chip{min-width:0;padding-left:2px;padding-right:2px}.day-chip{text-align:center;flex-direction:column;align-items:center;gap:1px;min-width:40px;padding:5px 8px}.day-chip .day-chip-wd{font-size:var(--t-stamp);text-transform:uppercase;letter-spacing:.03em;opacity:.8}.day-chip .day-chip-num{font-size:var(--t-sm);font-weight:600;line-height:1.1}.day-chip.today{box-shadow:inset 0 0 0 2px var(--accent)}.day-chip.today.on{box-shadow:inset 0 0 0 2px var(--paper)}.tabs{border-bottom:1px solid var(--rule);gap:2px;margin:0 0 18px;display:flex}.tab{font-size:var(--t-sm);color:var(--muted);cursor:pointer;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px}.tab.active{color:var(--ink);border-bottom-color:var(--ink)}.tab:hover{color:var(--ink)}.search{background:var(--paper);border:1px solid var(--rule-2);font-size:var(--t-sm);color:var(--ink-2);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;display:flex}.search input{font:inherit;color:inherit;background:0 0;border:0;outline:0;flex:1}textarea,input[type=text],input[type=url]{font:inherit;border:1px solid var(--rule-2);background:var(--paper);color:var(--ink);border-radius:8px;width:100%;padding:10px 12px}.section-head{justify-content:space-between;align-items:center;margin:22px 0 12px;display:flex}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.recipe-card{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-card);cursor:pointer;flex-direction:column;height:100%;transition:transform .12s,box-shadow .12s;display:flex;overflow:hidden}.recipe-card__media{position:relative}.thumb{aspect-ratio:4/3;border-radius:var(--r-card) var(--r-card) 0 0;overflow:hidden}.detail-hero .thumb{border-radius:var(--r-card)}.thumb--hero{background:var(--panel-2);max-height:40vh}.thumb .badge{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:var(--t-stamp);background:#00000073;border-radius:999px;padding:3px 8px;font-weight:500;position:absolute;top:10px;left:10px}.recipe-photo{object-fit:cover;width:100%;height:100%;display:block}.review-row-thumb{border-radius:8px;flex-shrink:0;width:64px;height:64px;overflow:hidden}.review-row-thumb .thumb{aspect-ratio:1;border-radius:0;width:100%;height:100%}.review-row-thumb .thumb__nophoto{display:none}.ingredient-thumb{border-radius:var(--r-sm);border:1px solid var(--rule);object-fit:cover;background:var(--panel-2);flex-shrink:0;width:36px;height:36px}.ingredient-thumb.sm{width:22px;height:22px}.review-panel{border:1px solid var(--rule);border-radius:var(--r-card);background:var(--paper);overflow:hidden}.review-toolbar{z-index:4;background:color-mix(in oklab, var(--paper) 86%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(8px);backdrop-filter:saturate(1.4)blur(8px);border-bottom:1px solid var(--rule);align-items:center;gap:10px;padding:10px 14px;display:flex;position:sticky;top:0}.review-count{font:500 11.5px var(--sans);letter-spacing:.01em;color:var(--ink-2)}.diff-pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.review-list{flex-direction:column;display:flex}.review-row{border-top:1px solid var(--rule);align-items:stretch;gap:12px;padding:12px 14px;transition:background 90ms;display:flex}.review-row .review-check{align-self:flex-start}.review-row:first-child{border-top:0}.review-row:hover{background:var(--panel-2)}.review-row.is-selected{background:color-mix(in oklab, var(--accent) 7%, transparent)}.review-row .review-row-thumb{width:72px;height:72px}.review-row__body{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.review-row__title{font-family:var(--display);font-size:var(--t-body);letter-spacing:-.005em;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;line-height:1.25;text-decoration:none;display:-webkit-box;overflow:hidden}a.review-row__title:hover{color:var(--accent)}.review-row__meta{color:var(--muted);font-size:var(--t-stamp);flex-wrap:wrap;align-items:center;gap:7px;line-height:1;display:flex}.review-row__meta .dot{opacity:.55;background:currentColor;border-radius:50%;width:3px;height:3px}.review-row__actions{justify-content:flex-end;align-items:center;gap:6px;margin-top:auto;padding-top:2px;display:flex}.review-row__actions .btn{height:30px}.review-row__actions .btn.approve{background:color-mix(in oklab, var(--good) 14%, transparent);color:var(--good);border-color:#0000;padding:0 13px;font-weight:600}.review-row__actions .btn.approve:hover{background:color-mix(in oklab, var(--good) 22%, transparent)}.review-row__actions .btn.approve:disabled{background:var(--chip);color:var(--muted)}.review-row__actions .btn.icon{justify-content:center;width:30px;padding:0}.review-row__actions .btn.icon .ico{display:block}.review-check{appearance:none;border:1.5px solid var(--rule-2);background:var(--paper);cursor:pointer;border-radius:5px;flex-shrink:0;place-items:center;width:18px;height:18px;margin-top:2px;transition:background 90ms,border-color 90ms;display:grid}.review-check:hover{border-color:var(--ink-2)}.review-check:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.review-check:checked,.review-check:indeterminate{background:var(--ink);border-color:var(--ink)}.review-check:checked:after{content:"";border:solid var(--paper);border-width:0 2px 2px 0;width:4.5px;height:8.5px;margin-top:-2px;transform:rotate(45deg)}.review-check:indeterminate:after{content:"";background:var(--paper);border-radius:1px;width:9px;height:2px}.btn.danger-ghost{color:var(--muted);border-color:#0000}.btn.danger-ghost:hover{background:color-mix(in oklab, var(--bad) 12%, transparent);color:var(--bad)}.btn.danger-ghost:disabled{color:var(--muted);opacity:.5;background:0 0}.thumb--placeholder{place-items:center;display:grid;position:relative}.thumb__nophoto{text-align:center;font-size:var(--t-stamp);letter-spacing:.04em;color:var(--ink);opacity:.8;pointer-events:none;position:absolute;bottom:6px;left:0;right:0}.thumb__monogram{font:600 var(--t-h2) var(--display);letter-spacing:.02em;color:var(--ink);opacity:.55;pointer-events:none}.recipe-card__source{z-index:2;position:absolute;top:8px;left:8px}.source-icon{border-radius:var(--r-sm);background:var(--paper);border:1px solid var(--rule);place-items:center;width:26px;height:26px;display:inline-grid;overflow:hidden;box-shadow:0 1px 3px #14181a2e}.source-icon img{object-fit:contain;border-radius:4px;width:20px;height:20px}.source-icon--badge{color:var(--muted)}.recipe-card .body{flex-direction:column;flex:1;padding:8px 10px 10px;display:flex}.recipe-card h4{font-family:var(--display);font-size:var(--t-lead);letter-spacing:-.005em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 4px;font-weight:600;line-height:1.2;display:-webkit-box;overflow:hidden}.recipe-card .meta{color:var(--muted);font-size:var(--t-label);align-items:center;gap:10px;display:flex}.recipe-card .meta .dot{opacity:.5;background:currentColor;border-radius:50%;width:3px;height:3px}.recipe-card__tags{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:10px}.recipe-card__page{z-index:2;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font:600 10.5px var(--sans);letter-spacing:.02em;background:#00000080;border-radius:999px;padding:2px 7px;position:absolute;top:8px;right:8px}.bookshelf{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:20px 16px;display:grid}.book-card{cursor:pointer;flex-direction:column;gap:10px;display:flex}.book-cover{aspect-ratio:2/3;border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--rule);box-shadow:var(--shadow);transition:transform .14s,box-shadow .14s;position:relative;overflow:hidden}.book-card:hover .book-cover{transform:translateY(-3px);box-shadow:0 1px #14181a0a,0 20px 42px -22px #14181a80}.book-cover img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.book-cover--placeholder{background:linear-gradient(150deg, var(--accent-2), color-mix(in oklab, var(--accent-2) 55%, #000));place-items:center;padding:16px;display:grid}.book-spine__title{font-family:var(--display);font-weight:600;font-size:var(--t-body);letter-spacing:-.01em;color:#fff;text-align:center;-webkit-line-clamp:6;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.book-card__body{flex-direction:column;gap:2px;min-width:0;display:flex}.book-card__title{font-family:var(--display);font-size:var(--t-body);letter-spacing:-.005em;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.book-card__author{font-size:var(--t-label);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;line-height:1.3;overflow:hidden}.book-card__count{font-size:var(--t-stamp);color:var(--muted)}.cookbook-hero{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:28px;margin-bottom:28px;display:grid}.cookbook-hero .book-cover{box-shadow:0 1px #14181a0a,0 28px 56px -26px #14181a8c}.cookbook-hero__meta{color:var(--muted);font-size:var(--t-sm);flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 14px;display:flex}.cookbook-hero__meta .dot{opacity:.5;background:currentColor;border-radius:50%;width:3px;height:3px}.cookbook-blurb{font-size:var(--t-body);color:var(--ink-2);max-width:62ch;margin:0 0 6px;line-height:1.6}@media (width<=560px){.cookbook-hero{grid-template-columns:116px minmax(0,1fr);gap:18px}}.row{align-items:center;gap:8px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.grow{flex:1}.h1{font-family:var(--display);font-size:var(--t-h1);letter-spacing:-.02em;margin:0;font-weight:600;line-height:1.1}.h2{font-family:var(--display);font-size:var(--t-h3);letter-spacing:-.01em;margin:0;font-weight:600}.h3{font-family:var(--display);font-size:var(--t-lead);margin:0;font-weight:600}.lead{font-family:var(--display);font-size:var(--t-lead);color:var(--ink-2);font-weight:400;line-height:1.45}.small{font-size:var(--t-label);color:var(--muted)}.micro{font-size:var(--t-stamp);color:var(--muted);text-transform:uppercase;letter-spacing:.12em}.eyebrow{font-size:var(--t-stamp);text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.seg{background:var(--chip);border-radius:8px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{font-size:var(--t-label);color:var(--muted);border-radius:6px;padding:5px 11px}.seg button.on{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px #0000000f}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:1.5px solid var(--rule-2);border-top-color:var(--ink);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}.empty,.error-card{border:1px dashed var(--rule-2);border-radius:var(--r-card);text-align:center;color:var(--muted);padding:28px}.empty:before{content:"";width:30px;height:30px;box-shadow:inset 0 0 0 1.5px var(--rule-2);opacity:.85;background:linear-gradient(var(--rule-2), var(--rule-2)) center / 56% 1.5px no-repeat, linear-gradient(var(--rule-2), var(--rule-2)) center / 1.5px 56% no-repeat;border-radius:50%;margin:0 auto 12px;display:block}.basket-section .empty:before,.empty--no-mark:before{display:none}.error-card{border-style:solid;border-color:var(--bad);color:var(--bad);background:color-mix(in oklab, var(--bad) 6%, transparent)}@keyframes shimmer{0%{opacity:.5}to{opacity:.9}}.skel{background:var(--rule);border-radius:6px;animation:1s ease-in-out infinite alternate shimmer}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.fade-in{animation:.2s ease-out both fade-in}.hide-scroll::-webkit-scrollbar{display:none}.hide-scroll{scrollbar-width:none}.detail-back{top:max(8px, env(safe-area-inset-top));z-index:20;margin-bottom:12px;display:inline-flex;position:sticky}.detail-back .btn{background:var(--paper);border:1px solid var(--rule);box-shadow:0 2px 8px #14181a24}.detail-hero{grid-template-columns:1fr 2fr;gap:24px;margin-bottom:24px;display:grid}.detail-hero.basket-hero{grid-template-columns:minmax(0,1fr) 320px}.detail-body{grid-template-columns:1fr 1fr;gap:24px;display:grid}.basket-line__name{text-transform:capitalize;color:var(--ink);font-weight:500;display:block}.basket-line__product{overflow-wrap:anywhere;display:block}.basket-line__meta{flex-wrap:wrap;align-items:center;gap:10px;margin-top:5px;display:flex}.basket-line__warn{color:var(--bad);margin-top:3px;display:block}.search-cell{flex:0 0 320px;min-width:280px}@media (width<=900px){.app{grid-template-rows:56px auto 1fr auto;grid-template-columns:1fr;height:auto;min-height:100vh}.topbar{padding:env(safe-area-inset-top) max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left));align-items:center;gap:10px;overflow:hidden}.topbar .crumbs,.brand--interior,.topbar .pill{display:none}.topbar-page-title{color:var(--ink);font-size:16px;font-weight:600;display:block}.nav-item{font-size:var(--t-label);background:var(--chip);color:var(--ink);flex:none;padding:6px 10px}.nav-item.active{background:var(--ink);color:var(--paper)}.main{padding:16px max(16px, env(safe-area-inset-right)) 32px max(16px, env(safe-area-inset-left));min-width:0;overflow:visible}.rail{border-left:0;border-top:1px solid var(--rule);padding:20px 16px 32px;display:none}.h1{font-size:var(--t-h2)}.h2{font-size:var(--t-h3)}.recipe-grid{grid-template-columns:repeat(2,1fr);gap:12px}.detail-hero{grid-template-columns:1fr;gap:16px;margin-bottom:16px}.detail-hero.basket-hero{grid-template-columns:1fr}.detail-body{grid-template-columns:1fr;gap:20px}.search-cell{flex:100%;min-width:0}.docket--sticky{position:static}.tabs{overflow-x:auto}.tab{white-space:nowrap}}.planner-month-headers{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;display:grid}.planner-month-header{font-size:var(--t-label);color:var(--ink-2,#555);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.planner-month-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.planner-month-cell{background:var(--card,#fff);border:1px solid var(--rule);border-radius:var(--r-xs);cursor:pointer;text-align:left;min-height:80px;font:inherit;color:inherit;flex-direction:column;gap:4px;padding:8px;display:flex}.planner-month-cell:hover{border-color:var(--ink-2,#888)}.planner-month-cell.out{opacity:.4}.planner-month-num{font-size:var(--t-sm);font-weight:500}.planner-month-dots{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.planner-month-dot{background:var(--accent,#c97a4a);border-radius:50%;width:6px;height:6px;display:inline-block}@media (width<=900px){.planner-month-cell{min-height:56px;padding:4px}.planner-month-num{font-size:var(--t-stamp)}}.planner-modal{background:var(--card,#fff);border-radius:var(--r-md);width:100%;max-width:480px;max-height:90dvh;overflow-y:auto;box-shadow:0 10px 40px #0003}.planner-modal-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.planner-modal__slots{flex-direction:column;gap:4px;display:flex}@media (width<=900px){.planner-modal{border-radius:8px;max-width:none}}@keyframes drawer-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.more-sheet-group{flex-direction:column;display:flex}.more-sheet-group+.more-sheet-group{margin-top:10px}.more-sheet-group__head{padding:4px 2px 6px}.bottom-nav-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:6px;right:calc(50% - 16px)}.planner-drawer-list{flex-direction:column;flex:1;padding:8px 0 16px;display:flex;overflow-y:auto}.planner-drawer-row{text-align:left;cursor:pointer;font:inherit;color:inherit;border:none;border-bottom:1px solid var(--rule);background:0 0;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 20px;display:flex}.planner-drawer-row:hover{background:var(--bg-tint,#f5f1ec)}.planner-drawer-row:last-child{border-bottom:none}.planner-drawer-row.active{background:var(--bg-tint);font-weight:600}.planner-drawer-title{font-weight:500;font-size:var(--t-body)}.bottom-nav{display:none}@media (width<=900px){.side{display:none}.app{grid-template-rows:calc(56px + env(safe-area-inset-top)) 1fr auto}.main{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.bottom-nav{height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:var(--paper);border-top:1px solid var(--rule);z-index:90;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-tab{color:var(--ink-2);font-size:var(--t-stamp);text-transform:uppercase;letter-spacing:.08em;font:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex;position:relative}.bottom-nav-tab span{font-size:var(--t-stamp)}.bottom-nav-tab.active{color:var(--ink)}.bottom-nav-tab.active:before{content:"";background:var(--ink);border-radius:2px;width:20px;height:3px;position:absolute;top:2px;left:50%;transform:translate(-50%)}.bottom-nav-tab .ico{opacity:.9;width:22px;height:22px}.bottom-nav-tab.active .ico{opacity:1}}.basket-section{margin-bottom:22px}.basket-section-header{border-bottom:1px solid var(--rule);margin-bottom:8px;padding-bottom:6px}.basket-section .empty{color:var(--muted);font-size:var(--t-sm);padding:12px 0}.extras-editor{margin:18px 0}.extras-editor-row input,.extras-editor-row select{height:36px}.extras-editor-row button[aria-label=remove\ row]{border:1px solid var(--rule);border-radius:999px;flex-shrink:0;place-items:center;width:36px;height:36px;padding:0;display:grid}@media (width<=700px){.extras-editor-row{flex-wrap:wrap}.extras-editor-row input[aria-label=ingredient]{flex:calc(100% - 44px);min-width:0}.extras-editor-row input[aria-label=amount],.extras-editor-row select[aria-label=unit]{order:2}.extras-editor-row button[aria-label=remove\ row]{flex-shrink:0;order:1}}.candidate-panel{background:var(--paper);border:1px solid var(--rule);border-radius:8px;max-height:360px;margin-top:8px;padding:6px;overflow-y:auto}.candidate-empty{color:var(--muted);font-size:var(--t-sm);text-align:center;padding:16px 8px}.candidate-row{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px 6px;display:flex}.candidate-row:hover{background:var(--hover)}.candidate-row.selected{background:var(--ink);color:var(--paper)}.candidate-thumb{width:40px;height:40px;font-size:var(--t-lead);background:#eee;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.candidate-thumb img{object-fit:cover;width:100%;height:100%}.candidate-meta{flex:1;min-width:0}.candidate-title{font-size:var(--t-sm);text-overflow:ellipsis;line-height:1.3;overflow:hidden}.candidate-sub{font-size:var(--t-stamp);opacity:.7;margin-top:2px}.candidate-price{font-family:var(--display);font-size:var(--t-body);flex-shrink:0}.picked-thumb{width:40px;height:40px;font-size:var(--t-lead);background:#eee;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.picked-thumb img{object-fit:cover;width:100%;height:100%}.picked-title{font-size:var(--t-sm);font-weight:500;line-height:1.3}.picked-sub{font-size:var(--t-stamp);color:var(--muted);margin-top:2px}.review-editor{grid-template-columns:minmax(220px,300px) 1fr;align-items:start;gap:24px;display:grid}.review-editor-image{position:sticky;top:16px}.review-editor-form{min-width:0}.input{font:inherit;box-sizing:border-box;border:1px solid var(--rule-2);background:var(--paper);width:100%;color:var(--ink);border-radius:8px;padding:9px 11px}.input:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}textarea.input{resize:vertical;min-height:44px;line-height:1.45;display:block;overflow:hidden}.ingredient-row{grid-template-columns:minmax(0,2.4fr) minmax(0,.9fr) minmax(0,1.4fr) auto auto;align-items:center;gap:6px;display:grid}.ingredient-row .input{min-width:0;font-size:var(--t-sm);padding:8px 9px}.ingredient-row .ingredient-meta{display:contents}.ingredient-note-btn{flex-shrink:0;padding:7px 9px}.ingredient-note-btn.has-note{color:var(--accent);background:color-mix(in oklab, var(--accent) 14%, transparent)}.step-row{grid-template-columns:auto 1fr auto;align-items:start;gap:8px;display:grid}.step-row .step-num{padding-top:11px}@media (width<=760px){.review-editor{grid-template-columns:1fr;gap:18px}.review-editor-image{max-width:320px;position:static}}.action-row{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:16px;margin:14px 0 4px;display:flex;position:relative}.action-row__item{flex-direction:column;align-items:center;gap:5px;display:flex}.action-row__btn{background:var(--panel-2);width:48px;height:48px;color:var(--ink);border:1px solid var(--rule);cursor:pointer;border-radius:999px;place-items:center;transition:transform 80ms,background 80ms;display:grid;position:relative}.action-row__btn:hover{background:var(--panel)}.action-row__btn:active{transform:scale(.94)}.action-row__btn:disabled{opacity:.5;cursor:not-allowed}.action-row__btn--active{background:var(--accent-2);color:var(--paper);border-color:#0000}.action-row__btn--primary{background:var(--accent);color:var(--paper);border:0}.action-row__btn--primary:hover{background:var(--accent-2)}.action-row__btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.action-row__badge{z-index:1;background:var(--ink);min-width:18px;height:18px;color:var(--paper);font:600 var(--t-stamp)/1 var(--sans);letter-spacing:0;box-shadow:0 0 0 2px var(--paper);pointer-events:none;border-radius:999px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex;position:absolute;top:-4px;right:-4px}:where(a,button,[role=button],input,select,textarea,.recipe-card,.nav-item,.tab,.seg button,.bottom-nav-tab,.chip,.category-pills .pill):focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:inherit}.nav-item.active:focus-visible,.chip.on:focus-visible,.category-pills .pill.on:focus-visible,.bottom-nav-tab.active:focus-visible{outline-color:var(--paper)}.action-row__label{font-size:var(--t-stamp);color:var(--ink-2)}.action-row__menu{z-index:20;background:var(--paper);border:1px solid var(--rule-2);border-radius:var(--r-md);box-shadow:var(--shadow);flex-direction:column;min-width:160px;padding:6px;display:flex;position:absolute;top:56px;right:0}.action-row__menu button{text-align:left;border-radius:var(--r-xs);font-size:var(--t-sm);color:var(--ink);cursor:pointer;background:0 0;border:0;padding:8px 10px}.action-row__menu button:hover{background:var(--hover)}.action-row__menu-item--danger{color:var(--color-error,#ce3a1e);border-top:1px solid var(--rule-2);border-radius:0 0 var(--r-xs) var(--r-xs);margin-top:4px}.action-row__menu-item--danger:hover{background:#ce3a1e1a}html{-webkit-tap-highlight-color:#ce3a1e1f}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (hover:hover){.recipe-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.btn:hover{background:var(--hover)}.nav-item:hover{background:var(--hover);color:var(--ink)}}.btn:active,.bottom-nav-tab:active,.recipe-card:active{transform:scale(.985)}@media (width<=900px){.btn,.seg button,.tab,.nav-item,.candidate-row{min-height:44px}.btn.sm{min-height:40px}input,textarea,select,.search input,.input,.search{font-size:16px}}.dlg-backdrop{z-index:120;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dlg{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-md);width:100%;max-width:480px;max-height:90dvh;box-shadow:var(--shadow);overflow-y:auto}.dlg-sheet-backdrop{align-items:flex-end;padding:0}.dlg-sheet{max-width:560px;max-height:88dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;transition:transform .18s;animation:.18s ease-out drawer-slide-up}.dlg-sheet:before{content:"";background:var(--line-2);border-radius:999px;width:36px;height:4px;margin:10px auto 4px;display:block}@media (width>=901px){.dlg-sheet-backdrop{align-items:center;padding:16px}.dlg-sheet{border-radius:var(--r-md)}.dlg-sheet:before{display:none}}.sheet-head{justify-content:space-between;align-items:center;padding:6px 16px 12px;display:flex}.dlg .picker,.dlg .meal-assistant,.dlg .optimiser-rail,.dlg-body{padding:0 16px 16px}.dlg .slot-action{padding:0 8px 8px}.readout{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--panel);padding:7px 11px 6px}.readout-label{font:600 8.5px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.readout-value{font:500 20px var(--sans);margin-top:1px;line-height:1.05}.readout-value.acc{color:var(--acc)}.gauge{background:var(--panel-2);border-radius:999px;height:6px;overflow:hidden}.gauge>i{background:var(--acc);border-radius:999px;height:100%;display:block}.ro3{gap:8px;margin:12px 0;display:flex}.ro3 .readout{flex:1}.photo{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.recipes-filterbar{top:env(safe-area-inset-top,0px);z-index:10;background:var(--paper);border-bottom:1px solid var(--rule);margin:0 -16px;padding:8px 16px;position:sticky;box-shadow:0 2px 8px #14181a0f}.recipes-count{font:500 13px var(--sans);color:var(--ink)}.feature{border-radius:var(--r-md);border:1px solid var(--line-2);aspect-ratio:16/10;margin:0 0 16px;position:relative;overflow:hidden}.feature .ov{background:linear-gradient(#0000000d 42%,#0000009e);position:absolute;inset:0}.feature .cap{color:#fff;z-index:2;position:absolute;bottom:12px;left:14px;right:14px}.feature .cap .e{font:600 9px var(--sans);letter-spacing:.14em;text-transform:uppercase;opacity:.9}.feature .cap .t{font:600 19px var(--display);letter-spacing:-.01em;margin-top:3px;line-height:1.1}.tool{border:1px solid var(--line-2);border-radius:10px;height:92px;margin:12px 0;position:relative;overflow:hidden}.tool .ov{background:linear-gradient(90deg,var(--panel) 4%,#0000 60%);position:absolute;inset:0}.tool .lab{z-index:2;position:absolute;top:50%;left:15px;transform:translateY(-50%)}.tool .lab .e{font:600 9px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.tool .lab .t{font:600 15px var(--display);color:var(--ink);margin-top:2px}.spec-strip{gap:8px;margin-bottom:14px;display:flex}.spec{border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--panel-2);flex-direction:column;flex:1 1 0;align-items:center;gap:2px;min-width:0;padding:9px 6px;display:flex}.spec__value{font-size:var(--t-lead);color:var(--ink);font-weight:600;line-height:1.1}.spec__label{font:600 10px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.recipe-provenance{align-items:center;gap:10px;margin-bottom:12px;display:flex}.recipe-provenance__cover{object-fit:cover;border-radius:var(--r-xs);border:1px solid var(--rule);background:var(--panel-2);flex:none;width:34px;height:46px}.recipe-provenance__cover--ph{color:var(--muted);place-items:center;display:grid}.recipe-provenance__text{flex-direction:column;gap:1px;min-width:0;display:flex}.recipe-provenance__eyebrow{font:600 10px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.recipe-provenance__title{font-family:var(--display);font-size:var(--t-body);letter-spacing:-.005em;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}a.recipe-provenance__title:hover{color:var(--accent)}.recipe-provenance__sub{font-size:var(--t-label);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.step-ings{margin-top:8px}.step-ings__toggle{font:600 10.5px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);cursor:pointer;align-items:center;gap:5px;padding:2px 0;display:inline-flex}.step-ings__toggle:hover{color:var(--ink)}.step-ings__toggle .ico{transition:transform .14s}.step-ings .step-chips{margin-top:6px}.ingredient-group+.ingredient-group{margin-top:4px}.ingredient-group__head{font:600 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;opacity:.85;padding:14px 0 6px}.ingredient-line{border-bottom:1px solid var(--rule);padding:10px 0}.ingredient-group:last-child .ingredient-line:last-child{border-bottom:0}.ingredient-line__amt{font-size:var(--t-sm);text-align:right;opacity:.9;min-width:56px}.ingredient-line.done>:not(.step-done-btn){opacity:.45}.ingredient-line.done .ingredient-line__name{text-decoration:line-through}.step-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.step-box{border:1px solid var(--rule);border-radius:var(--r-md);background:var(--panel);align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.step-box__num{background:var(--accent);width:24px;height:24px;color:var(--paper);font-size:var(--t-label);border-radius:999px;flex:none;place-items:center;display:grid}.step-box__text{flex:1;line-height:1.45}.planner-head .btn.ghost.sm[aria-label^=Previous],.planner-head .btn.ghost.sm[aria-label^=Next]{justify-content:center;min-width:44px;min-height:44px}.stepper{align-items:center;gap:6px;display:inline-flex}.stepper__btn{border-radius:var(--r-sm);border:1px solid var(--rule-2);background:var(--panel);width:44px;height:44px;font-size:var(--t-lead);cursor:pointer;place-items:center;display:grid}.stepper__btn:disabled{opacity:.4;cursor:not-allowed}.stepper__value{text-align:center;width:64px}.cook-mode{z-index:120;background:var(--bg);padding:max(12px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;display:flex;position:fixed;inset:0}.cook-mode__head{align-items:center;gap:12px;display:flex}.cook-mode__title{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.cook-mode__title strong{font:600 var(--t-lead) var(--display);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cook-mode__close{min-width:44px;min-height:44px}.cook-mode__progress{background:var(--rule);border-radius:1px;height:2px;margin:10px 0 0}.cook-mode__progress-fill{background:var(--accent);border-radius:1px;height:100%;transition:width .18s}.cook-mode__body{flex:1;padding:24px 0;overflow-y:auto}.cook-mode__count{margin-bottom:10px}.cook-mode__text{font-size:var(--t-h3);max-width:34ch;margin:0 0 16px;line-height:1.55}.cook-mode__text.done{opacity:.45;text-decoration:line-through}.cook-mode__chips{flex-wrap:wrap;gap:6px;display:flex}.cook-mode__foot{align-items:stretch;gap:10px;display:flex}.cook-mode__nav{justify-content:center;min-width:56px;min-height:52px}.cook-mode__main{flex:1;justify-content:center;min-height:52px;font-size:16px}.offline-banner{z-index:9999;background:var(--bad);color:#fff;text-align:center;font-size:var(--t-sm);padding:8px max(16px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left));font-weight:500;line-height:1.4;position:fixed;bottom:0;left:0;right:0}@media (width<=900px){.offline-banner{bottom:calc(56px + env(safe-area-inset-bottom,0px));padding-bottom:8px}}.sr-only{clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.meal-grid{grid-template-columns:auto repeat(4,1fr);align-items:stretch;gap:6px;display:grid}.meal-grid-colhead{font:600 8.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center;cursor:pointer;background:0 0;border:0;padding:2px 0}.meal-grid-colhead:hover{color:var(--ink)}.meal-grid-day{font:600 11px var(--sans);color:var(--ink-2);cursor:pointer;white-space:nowrap;background:0 0;border:0;align-items:center;gap:6px;padding-right:6px;display:flex}.meal-grid-day:hover{color:var(--ink)}.meal-grid-day .dow{color:var(--muted)}.meal-cell{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--panel);cursor:pointer;height:34px;transition:background .12s,border-color .12s;position:relative}.meal-cell:hover{border-color:var(--ink-2)}.meal-cell.on{border-color:#0000}.meal-cell.on[data-meal=breakfast]{background:var(--meal-breakfast)}.meal-cell.on[data-meal=lunch]{background:var(--meal-lunch)}.meal-cell.on[data-meal=dinner]{background:var(--meal-dinner)}.meal-cell.on[data-meal=snack]{background:var(--meal-snack)}.meal-cell.planned:after{content:"";background:var(--ink-2);border-radius:50%;width:5px;height:5px;position:absolute;top:5px;right:5px}.meal-cell.on.planned:after{background:var(--meal-ink)}.cal{-webkit-user-select:none;user-select:none}.cal-nav{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.cal-title{font:600 14px var(--sans)}.cal-head,.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-dow{font:600 8.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center;padding-bottom:4px}.cal-cell{border-radius:var(--r-sm);background:var(--panel-2);height:36px;color:var(--ink);font:500 13px var(--sans);cursor:pointer;border:1px solid #0000;position:relative}.cal-cell:hover{border-color:var(--line-2)}.cal-cell.out{color:var(--muted);background:0 0}.cal-cell.today{border-color:var(--accent)}.cal-cell.sel{background:var(--accent);color:var(--acc-ink);border-color:#0000}.cal-cell__dot{border-radius:999px;width:4px;height:4px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.cal-cell__dot--any{background:var(--muted)}.cal-cell__dot--recipe{background:var(--accent)}.cal-cell.sel .cal-cell__dot--any{background:var(--acc-ink);opacity:.6}.cal-cell.sel .cal-cell__dot--recipe{background:var(--acc-ink)}.cal-cell.out .cal-cell__dot{opacity:.45}.swipe-tabs__bar{border-bottom:1px solid var(--rule);gap:0;margin-bottom:0;display:flex}.swipe-tabs__tab{font-size:var(--t-sm);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:11px 10px;font-weight:500;transition:color 80ms,border-color 80ms}.swipe-tabs__tab--active{color:var(--ink);border-bottom-color:var(--ink)}.swipe-tabs__tab:hover{color:var(--ink)}.swipe-tabs__panel{outline:none;padding-top:18px}@keyframes swipe-enter-left{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes swipe-enter-right{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:none}}.swipe-tabs__panel--enter-left{animation:.16s ease-out both swipe-enter-left}.swipe-tabs__panel--enter-right{animation:.16s ease-out both swipe-enter-right}.recipe-hero{position:relative}.recipe-hero__badge{z-index:4;background:var(--accent);width:24px;height:24px;color:var(--acc-ink);border-radius:50%;place-items:center;display:grid;position:absolute;top:8px;right:8px;box-shadow:0 1px 4px #00000047}.chef-tips{border:1px solid var(--rule);border-radius:var(--r-md);background:var(--panel);margin:16px 0}.chef-tips__summary{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;font-size:var(--t-sm);align-items:center;gap:8px;padding:12px 16px;list-style:none;display:flex}.chef-tips__summary::-webkit-details-marker{display:none}.chef-tips__label{flex:1}.chef-tips__count{font-size:var(--t-stamp)}details[open] .chef-tips__summary .ico{transform:rotate(180deg)}.chef-tips__body{flex-direction:column;gap:14px;padding:0 16px 16px;display:flex}.chef-tips__category{margin-bottom:4px}.chef-tips__title{font-size:var(--t-body);margin:4px 0 6px}.chef-tips__content{font-size:var(--t-sm);color:var(--ink-2);margin:0;line-height:1.5}.step-chips{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.chip--ing{background:color-mix(in oklab, var(--accent-2) 12%, transparent);color:var(--accent-2);font-family:var(--sans);font-weight:500;font-size:var(--t-stamp)}.step-warnings{gap:3px;margin-top:6px;display:grid}.step-warning{color:var(--warn);font-size:var(--t-stamp);line-height:1.4}.step-box.done .step-box__text{opacity:.45;text-decoration:line-through}.step-done-btn{border:1.5px solid var(--rule-2);background:var(--panel);cursor:pointer;border-radius:999px;flex-shrink:0;place-items:center;width:22px;height:22px;transition:background 80ms,border-color 80ms;display:grid;position:relative}.step-done-btn:after{content:"";position:absolute;inset:-11px}.step-done-btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--paper)}.recipe-card__fav-badge{z-index:2;background:var(--accent);width:24px;height:24px;color:var(--acc-ink);font-size:var(--t-stamp);pointer-events:none;border-radius:50%;place-items:center;line-height:1;display:grid;position:absolute;top:8px;right:8px;box-shadow:0 1px 4px #00000047}.recipe-card__meta-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;padding-top:8px;display:flex}.category-pills{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;gap:6px;margin:0 0 14px;padding-bottom:2px;display:flex;overflow-x:auto}.category-pills::-webkit-scrollbar{display:none}@media (width<=900px){.category-pills{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px;scroll-padding-inline:16px}}.category-pills .pill{white-space:nowrap;border-radius:var(--r-chip);background:var(--chip);color:var(--ink-2);font:500 12px var(--sans);cursor:pointer;border:0;flex:none;align-items:center;padding:4px 11px;transition:background .1s,color .1s;display:inline-flex}.category-pills .pill:hover{background:var(--hover);color:var(--ink)}.category-pills .pill.on{background:var(--ink);color:var(--paper)}.auth-screen{background:var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-card{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-card);flex-direction:column;gap:14px;width:100%;max-width:380px;padding:28px 24px;display:flex}.auth-title{font-size:var(--t-h3);margin:4px 0 2px}.auth-error{border-radius:var(--r-sm);background:color-mix(in oklab, var(--bad) 12%, transparent);color:var(--bad);font-size:var(--t-sm);margin:0;padding:9px 11px}.auth-hint{color:var(--muted);font-size:var(--t-label)}.auth-alt{font-size:var(--t-sm);color:var(--muted);margin:4px 0 0}.auth-loading{min-height:100dvh;color:var(--muted);place-items:center;display:grid}.field{font-size:var(--t-sm);flex-direction:column;gap:5px;display:flex}.field>span{color:var(--muted)}.field input{border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);padding:10px 12px;font-size:16px}.field input:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.field input[aria-invalid=true]:focus-visible{outline-color:var(--bad)}.field-reveal{display:flex;position:relative}.field-reveal input{flex:1;padding-right:44px}.field-reveal__toggle{cursor:pointer;width:44px;height:44px;color:var(--ink);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:50%;right:0;transform:translateY(-50%)}.auth-forgot{cursor:pointer;color:var(--muted);font-size:var(--t-sm);background:0 0;border:0;align-self:flex-start;margin:-4px 0 10px;padding:0;text-decoration:underline}.account-identity{align-items:center;gap:8px;padding:4px 20px 10px;display:flex}.account-email{font-size:var(--t-sm);color:var(--ink);word-break:break-all}.account-role{font-size:var(--t-stamp);border-radius:var(--r-chip);background:var(--accent);color:var(--acc-ink);padding:1px 7px}.account-logout{justify-content:center;margin:8px 20px 0}.store-card .body{flex-direction:column;gap:6px;display:flex}.store-card .book-cover{box-shadow:none;border:0;border-radius:0}.store-card .book-cover--placeholder{color:#fff;place-items:center;display:grid}.store-card__desc{font-size:var(--t-label);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:2px 0 0;display:-webkit-box;overflow:hidden}.store-card__foot{justify-content:space-between;align-items:center;gap:8px;margin-top:6px;display:flex}.store-card__foot .num{font-size:var(--t-body);font-weight:600}.planner-head{flex-direction:column;gap:8px;margin-bottom:18px;display:flex}.planner-head__nav{align-items:center;gap:8px;display:flex}.planner-head__nav h1{flex:1;min-width:0;margin:0}.planner-head__right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.planner-head__right .seg{flex-wrap:nowrap;flex:none}.week-list{flex-direction:column;gap:10px;margin-bottom:4px;display:flex}.week-list__day{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:4px 12px 10px}.week-list__day.is-today{border-color:var(--accent)}.week-list__head{cursor:pointer;width:100%;min-height:44px;font:600 var(--t-label) var(--sans);letter-spacing:.08em;color:var(--ink);background:0 0;border:0;align-items:center;gap:10px;padding:0;display:flex}.week-list__today{color:var(--accent)}.week-list__meals{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.week-list__meal{align-items:center;gap:10px;min-height:28px;display:flex}.week-list__tick{border-radius:2px;flex:none;width:3px;height:18px}.week-list__meal-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--t-body);flex:1;overflow:hidden}.week-list__meal-slot{opacity:.7;flex:none}.week-list__add{cursor:pointer;border:1px dashed var(--rule-2);border-radius:var(--r-sm);min-height:36px;color:var(--muted);font-size:var(--t-sm);background:0 0;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.planner-strip{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:10px;margin:0 -16px;padding:4px 16px 8px;scroll-padding-inline:16px;display:flex;overflow-x:auto}.planner-strip::-webkit-scrollbar{display:none}.planner-strip>.day-card{scroll-snap-align:start;flex:0 0 224px;min-width:0}.planner-strip:after{content:"";flex:0 0 calc(100% - 250px)}.day-card--dim{opacity:.55;transition:opacity .15s}@media (prefers-reduced-motion:reduce){.day-card--dim{transition:none}}.day-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;gap:6px;padding:10px;display:flex}.day-card.is-today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.day-card__head{align-items:center;gap:8px;min-height:24px;display:flex}.day-card__dow{font:600 12px var(--sans);letter-spacing:.08em}.day-card__time{font:500 11px var(--sans);color:var(--ink-2);margin-left:auto}.day-card__head:not(:has(.day-card__time)) .day-card__add{margin-left:auto}.day-card__add{border:1px dashed var(--line);width:24px;height:24px;color:var(--ink-2);background:0 0;border-radius:6px;place-items:center;display:grid}.slot-row-wrap{flex-direction:column;gap:4px;display:flex;position:relative}.slot-row{text-align:left;width:100%;min-height:48px;font:400 13px var(--sans);color:var(--ink);background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:4px 6px;display:flex}.slot-row:active{background:var(--panel-2)}.slot-row__tick{background:var(--line);border-radius:2px;align-self:stretch;width:3px}.slot-row__main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.slot-row[data-meal=breakfast] .slot-row__tick{background:var(--meal-breakfast)}.slot-row[data-meal=lunch] .slot-row__tick{background:var(--meal-lunch)}.slot-row[data-meal=dinner] .slot-row__tick{background:var(--meal-dinner)}.slot-row[data-meal=snack] .slot-row__tick{background:var(--meal-snack)}.slot-row__label{font:600 10.5px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}.slot-row__title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.slot-row__hint{color:var(--ink-2)}.slot-row__chip{font:500 11px var(--sans);color:var(--ink-2);flex:none}.slot-row--empty{color:var(--ink-2)}.slot-thumb{object-fit:cover;width:34px;height:34px;font:600 12px var(--sans);color:#fff;border-radius:8px;flex:none;place-items:center;display:grid}.slot-thumb--empty{border:1px dashed var(--line);color:var(--ink-2);background:0 0}.slot-thumb--glyph{background:var(--panel-2);font-size:16px}.slot-thumb--initials{letter-spacing:.04em}.planner-ribbon{gap:4px;margin:8px 0;display:flex}.planner-ribbon__day{font:500 11px var(--sans);color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 2px;display:flex}.planner-ribbon__day.is-active{border-color:var(--line);background:var(--panel);color:var(--ink)}.planner-ribbon__day.is-today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.planner-ribbon__day.is-today .planner-ribbon__label{color:var(--accent);font-weight:700}.planner-ribbon__dots{gap:3px;display:flex}.planner-ribbon__dots i{opacity:.25;border-radius:50%;width:5px;height:5px}.planner-ribbon__dots i[data-meal=breakfast]{background:var(--meal-breakfast)}.planner-ribbon__dots i[data-meal=lunch]{background:var(--meal-lunch)}.planner-ribbon__dots i[data-meal=dinner]{background:var(--meal-dinner)}.planner-ribbon__dots i[data-meal=snack]{background:var(--meal-snack)}.planner-ribbon__dots i.on{opacity:1}.popover{z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:200px;max-width:calc(100vw - 24px);padding:6px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 28px #00000040}.day-card:nth-child(-n+2) .popover{left:0;right:auto}.slot-action{flex-direction:column;gap:2px;display:flex}.slot-action__entry-title{font:600 12px var(--sans);color:var(--ink-2);padding:6px 8px 2px}.slot-action__item{text-align:left;width:100%;font:400 14px var(--sans);color:var(--ink);background:0 0;border:none;border-radius:8px;padding:10px 8px;display:block}.slot-action__item:active{background:var(--panel-2)}.slot-action__item--danger{color:var(--bad)}.picker-chips{gap:6px;padding:4px 0 8px;display:flex}.picker-chips .chip[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.picker-search{border:1px solid var(--line);background:var(--panel-2);width:100%;font:400 16px var(--sans);color:var(--ink);border-radius:8px;margin-bottom:8px;padding:8px 10px}.picker-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.picker-row{text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 6px;display:flex}.picker-row:active{background:var(--panel-2)}.picker-row__main{flex-direction:column;flex:1;min-width:0;display:flex}.picker-row__title{font:500 14px var(--sans);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.picker-row__tags{font:400 11.5px var(--sans);color:var(--ink-2)}.picker-row__time{font:500 12px var(--sans);color:var(--ink-2);flex:none}.picker-empty{color:var(--ink-2);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:24px 0;display:flex}.planner-action-row{gap:8px;margin:10px 0;display:flex}.planner-basket-bar{bottom:calc(env(safe-area-inset-bottom,0px) + 8px);z-index:40;background:var(--bg,#e7e8e4);align-items:center;gap:10px;margin-top:10px;padding:8px 0;display:flex;position:sticky}.planner-basket-bar .btn{flex:1}@media (width<=900px){.planner-basket-bar{bottom:calc(64px + env(safe-area-inset-bottom,0px))}}.week-cost .readout-value{margin-left:6px}.week-cost--loading .readout-value{opacity:.5;animation:1.2s linear infinite shimmer}.week-cost--error{cursor:pointer}@media (width>=901px),(orientation:landscape) and (width>=700px){.planner-strip{scroll-snap-type:none;grid-template-columns:repeat(7,minmax(0,1fr));margin:0;padding:4px 0 8px;display:grid;overflow-x:visible}.planner-strip>.day-card{flex:none}.planner-strip:after{content:none}.day-card--dim{opacity:1}.planner-ribbon{display:none}.day-card--compact .slot-thumb{width:22px;height:22px;font-size:var(--t-stamp);border-radius:6px}.day-card--compact .slot-row{gap:6px;min-height:48px;padding:2px 4px}.day-card--compact .slot-row__title{white-space:nowrap;text-overflow:ellipsis;font-size:var(--t-label);line-height:1.3;overflow:hidden}.day-card--compact .slot-row__label,.day-card--compact .day-card__time,.day-card--compact .slot-row__hint{display:none}.day-card--compact .day-card__dow{font-size:var(--t-stamp);letter-spacing:.04em;white-space:nowrap}}.reg-mark{color:var(--ink-2);border-radius:50%;flex:none;display:inline-block;position:relative;box-shadow:inset 0 0 0 1.5px}.reg-mark:before,.reg-mark:after{content:"";background:currentColor;position:absolute}.reg-mark:before{height:1.5px;margin-top:-.75px;top:50%;left:15%;right:15%}.reg-mark:after{width:1.5px;margin-left:-.75px;top:15%;bottom:15%;left:50%}.reg-mark--accent{color:var(--acc)}.reg-mark--spin{animation:1.4s linear infinite spin}.stamp{border-radius:var(--r-xs);font-size:var(--t-stamp);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);background:color-mix(in oklab, currentColor 7%, transparent);transform-origin:50%;border:2px solid;align-items:center;gap:6px;padding:4px 10px;font-weight:600;display:inline-flex;transform:rotate(-4deg)}.stamp--approved{color:var(--stamp)}.stamp--fired{color:var(--acc)}.stamp--86{color:var(--bad)}@keyframes stamp-in{0%{opacity:0;transform:rotate(-4deg)scale(1.06)}to{opacity:1;transform:rotate(-4deg)scale(1)}}.ledger{gap:0;display:grid}.ledger__row{border-bottom:1px solid var(--rule);grid-template-columns:1fr auto;align-items:baseline;gap:16px;padding:7px 0;display:grid}.ledger__row:last-child{border-bottom:0}.ledger__label{color:var(--muted);font-size:var(--t-sm)}.ledger__row--total{border-top:1.5px solid var(--rule-2);border-bottom:0;margin-top:2px;padding-top:9px}.ledger__row--total .ledger-value{font-weight:600;font-size:var(--t-lead)}.docket{background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-sm);box-shadow:var(--elev-2);margin-top:7px;padding:18px 16px 14px;position:relative}.docket:before{content:"";background:radial-gradient(circle 4px at 8px -1px, var(--bg) 4px, transparent 4.5px) repeat-x;background-size:16px 7px;height:7px;position:absolute;top:-1px;left:6px;right:6px}.docket__head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.docket__foot{align-items:center;gap:12px;margin-top:13px;display:flex}.docket--sticky{position:sticky;top:0}.tick{background:var(--line);border-radius:2px;flex:none;align-self:stretch;width:2px;min-height:14px;transition:background .12s}.tick--on{background:var(--acc)}.gauge--scaled{position:relative;overflow:visible}.gauge--scaled:before,.gauge--scaled:after{content:"";background:var(--rule-2);width:1.5px;position:absolute;top:-2px;bottom:-2px}.gauge--scaled:before{left:0}.gauge--scaled:after{right:0}@keyframes docket-print{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@media (prefers-reduced-motion:no-preference){.docket--print{animation:.22s ease-out both docket-print}.stamp{animation:.16s ease-out both stamp-in}.gauge>i{transition:width .6s cubic-bezier(.22,1,.36,1)}}.lab{max-width:760px;margin:0 auto;padding:28px 20px 80px}.lab-head{padding:8px 0 12px}.lab-title{font-size:var(--t-h1);letter-spacing:-.02em;margin:6px 0 4px}.lab-sub{color:var(--muted);font-size:var(--t-sm);margin:0}.lab-section{border-top:1px solid var(--rule);padding:20px 0}.lab-section__head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.lab-section__note{color:var(--muted);font-size:var(--t-sm)}.lab-row{flex-wrap:wrap;gap:18px;display:flex}.lab-row--center{align-items:center}.lab-stack{flex-direction:column;gap:12px;display:flex}.lab-tickrow{font-size:var(--t-sm);align-items:center;gap:12px;min-height:28px;display:flex}.lab-muted{color:var(--muted);font-size:var(--t-sm)}.build-notice{border:1px solid var(--good);border-radius:var(--r-sm);background:color-mix(in oklab, var(--good) 9%, var(--panel));align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;animation:.2s ease-out fade-in;display:flex}.build-notice__x{color:var(--muted);margin-left:auto;display:inline-flex}
