:root{--text:#453e33;--text-h:#2a2520;--bg:#faf8f2;--surface:#fffefa;--border:#e2dcc9;--code-bg:#efe9da;--accent:#86794f;--accent-strong:#695f3c;--accent-bg:#86794f17;--accent-border:#86794f59;--shadow:#2a252012 0 4px 10px -2px, #2a25200a 0 2px 4px -2px;--identity-s:50%;--identity-l:42%;--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Quicksand", sans-serif;--mono:ui-monospace, Consolas, monospace;--script:var(--heading);font:16px/150% var(--sans);letter-spacing:0;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2.5rem;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:20px}body{background:var(--bg);min-height:100dvh;margin:0}#root{box-sizing:border-box;flex-direction:column;width:100%;min-height:100dvh;display:flex}h1,h2,h3{font-family:var(--heading);color:var(--text-h)}h1{letter-spacing:-.4px;margin:0 0 20px;font-size:26px;font-weight:650}h2{letter-spacing:-.2px;margin:0 0 10px;font-size:18px;font-weight:650;line-height:130%}h3{margin:0 0 6px;font-size:15px;font-weight:600}p{margin:0}a{color:var(--accent-strong)}button{font:inherit;color:#fff;background:var(--accent);border:1px solid var(--accent);cursor:pointer;border-radius:6px;padding:.45rem .9rem;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s}@media (hover:hover){button:hover{background:var(--accent-strong);border-color:var(--accent-strong)}}button:active{box-shadow:inset 0 1px 2px #0003}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{color:var(--text);background:var(--surface);border-color:var(--border)}@media (hover:hover){button.secondary:hover{background:var(--code-bg);border-color:#cfcabf}}button.danger{color:#8c342a;background:var(--surface);border-color:#8c342a59}@media (hover:hover){button.danger:hover{color:#fff;background:#8c342a;border-color:#8c342a}}input[type=text],input[type=search],input[type=number],textarea,select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.45rem .6rem;font-size:14px}input[type=text]:focus,input[type=search]:focus,input[type=number]:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);outline:none}input[type=text][readonly]{background:var(--bg);color:var(--text);opacity:.75;cursor:default}input[type=text][readonly]:focus{box-shadow:none;border-color:var(--border)}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:3px solid var(--accent-border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.page-loading{padding:var(--space-6) 0;justify-content:center;align-items:center;display:flex}.recipe-browse-page h1,.recipe-detail-page h1{font-family:var(--script);letter-spacing:0;color:var(--accent-strong);font-weight:700}.recipe-browse-page h1{font-size:40px}.recipe-detail-page h1{margin-bottom:8px;font-size:44px;line-height:1.15}.recipe-detail-page h2{font-family:var(--script);letter-spacing:0;color:var(--accent-strong);border-bottom:1px solid var(--accent-border);padding-bottom:.35rem;font-size:26px;font-weight:600}.recipe-browse-layout{align-items:flex-start;gap:1.5rem;display:flex}.recipe-main{flex:1;min-width:0}.cuisine-sidebar{flex-direction:column;flex:0 0 180px;gap:.15rem;display:flex;position:sticky;top:1rem}.cuisine-sidebar h3{color:var(--text);opacity:.6;text-transform:uppercase;letter-spacing:.04em;margin:0 0 .5rem .6rem;font-size:12px}.cuisine-sidebar-link{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:space-between;gap:.5rem;padding:.4rem .6rem;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}@media (hover:hover){.cuisine-sidebar-link:hover{background:var(--code-bg)}}.cuisine-sidebar-link.active{background:var(--accent-bg);color:var(--accent-strong);font-weight:650}@media (width<=720px){.recipe-browse-layout{flex-direction:column}.cuisine-sidebar{scrollbar-width:none;-ms-overflow-style:none;flex-flow:row;flex:none;gap:.4rem;width:100%;margin-bottom:.85rem;padding-bottom:.15rem;position:static;overflow-x:auto}.cuisine-sidebar::-webkit-scrollbar{display:none}.cuisine-sidebar h3{display:none}.cuisine-sidebar-link{white-space:nowrap;border:1px solid var(--border);border-radius:999px;flex:none;width:auto}.cuisine-sidebar-link.active{border-color:var(--accent-border)}}.browse-mode-toggle{flex-wrap:wrap;gap:.4rem;display:flex}.browse-controls{flex-direction:column;gap:.6rem;margin-bottom:1rem;display:flex}.browse-control-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.browse-control-row-fields{align-items:flex-end}.identity-ring{box-shadow:0 0 0 2px hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 55%);border-radius:50%;flex-shrink:0;display:inline-flex}.people-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-auto-flow:dense;gap:var(--space-3);display:grid}@media (width>=900px){.people-card-rich{grid-column:span 2}}.people-card-sparse{gap:.35rem;padding:.7rem .85rem}.people-card{border-top:3px solid hsl(var(--identity-h) var(--identity-s) var(--identity-l));flex-direction:column;gap:.5rem;padding:.9rem 1rem;display:flex;position:relative}.people-card-specialties{flex-wrap:wrap;gap:.3rem;display:flex}.chip.chip-identity{background:hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 14%);color:var(--text);border-color:hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 45%)}.people-card-top{align-items:center;gap:.65rem;display:flex}.people-card-identity{min-width:0}.people-card-link{color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;font-weight:600;text-decoration:none;display:block;overflow:hidden}.people-card-link:after{content:"";position:absolute;inset:0}.people-card-link:hover,.people-card-link:focus-visible{text-decoration:underline}.people-card-handle{color:var(--text);opacity:.6;font-size:.85rem}.people-card-bio{color:var(--text);opacity:.85;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:.9rem;display:-webkit-box;overflow:hidden}.people-card-stats{color:var(--text);opacity:.7;margin:0;font-size:.82rem}.people-card-pins{gap:.4rem;display:flex}.people-card-pin{border-radius:var(--radius-md);border:1px solid var(--border);min-width:0;color:var(--text);background:var(--surface);flex:1;text-decoration:none;position:relative;overflow:hidden}.people-card-pin-name{white-space:nowrap;text-overflow:ellipsis;padding:.2rem .35rem;font-size:.72rem;display:block;overflow:hidden}.people-card-follow{align-self:flex-start;margin-top:auto;position:relative}.feed-entries{gap:var(--space-3);flex-direction:column;display:flex}.feed-entry{border-left:3px solid hsl(var(--identity-h) var(--identity-s) var(--identity-l));flex-direction:column;gap:.6rem;padding:.85rem 1rem;display:flex}.feed-entry-plain{border-left-width:2px;padding:.65rem .85rem}.feed-entry-compact{border-left-width:3px;padding:.75rem .95rem}.feed-entry-standard{border-left-width:3px;padding:.85rem 1.05rem}.feed-entry-generous{border-left-width:4px;padding:.95rem 1.1rem}.feed-entry-rich{border-left-width:5px;padding:1.05rem 1.2rem}.feed-entry-has-note{padding-bottom:1rem}.feed-entry-person{align-items:center;gap:.6rem;display:flex;position:relative}.feed-entry-person-identity{flex-wrap:wrap;align-items:baseline;gap:0 .4rem;min-width:0;display:flex}.feed-entry-person-link{color:var(--text-h);font-weight:600;text-decoration:none}.feed-entry-person-link:after{content:"";position:absolute;inset:0}.feed-entry-person-link:hover,.feed-entry-person-link:focus-visible{text-decoration:underline}.feed-entry-person-handle,.feed-entry-person-cadence{color:var(--text);opacity:.6;font-size:.82rem}.feed-entry-recipe{align-items:flex-start;gap:.6rem;display:flex;position:relative}.feed-entry-recipe-body{flex:1;min-width:0}.feed-entry-recipe-link{color:var(--text-h);font-size:1.05rem;font-weight:600;text-decoration:none}.feed-entry-recipe-link:after{content:"";position:absolute;inset:0}.feed-entry-recipe-link:hover,.feed-entry-recipe-link:focus-visible{text-decoration:underline}.feed-entry-recipe-chips{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.35rem;display:flex}.feed-entry-recipe-chips .chip{background:hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 14%);color:var(--text);border-color:hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 45%)}.feed-entry-recipe-time{color:var(--text);opacity:.65;font-size:.82rem}.feed-entry-note{border-left:2px solid var(--border);color:var(--text);opacity:.85;margin:.4rem 0 0;padding:.1rem 0 .1rem .6rem;font-size:.92rem;font-style:italic}.feed-entry-rich .feed-entry-note{background:hsl(var(--identity-h) var(--identity-s) var(--identity-l) / 10%);border-radius:0 var(--radius-md) var(--radius-md) 0;padding:.3rem .6rem}.recipe-owner-note{border-left:2px solid var(--border);color:var(--text);opacity:.85;max-width:60ch;margin:.5rem 0;padding:.2rem 0 .2rem .75rem;font-style:italic}@media (width<=480px){.feed-entry-recipe-art{aspect-ratio:1;width:36px!important;height:auto!important}}.browse-field{flex-direction:column;gap:.15rem;display:flex}.browse-field-label{letter-spacing:.02em;text-transform:uppercase;color:var(--text);opacity:.7;font-size:11.5px;font-weight:600}.recipe-tiles{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.recipe-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent-border);border-radius:var(--radius-md);transition:box-shadow .15s,border-color .15s,transform .15s;position:relative;overflow:hidden}@media (hover:hover){.recipe-card:hover{box-shadow:var(--shadow);border-color:#cfcabf;border-left-color:var(--accent);transform:translateY(-1px)}}.recipe-card-body{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.recipe-card-title-row{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.recipe-card-title{color:var(--text-h);min-width:0;font-size:1.1rem;font-weight:600}.recipe-card-title-link{text-decoration:none}.recipe-card-title-link:after{content:"";position:absolute;inset:0}.recipe-card-title-link:focus-visible:after{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius-md)}.recipe-card-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.recipe-card-meta{color:var(--text);opacity:.7;font-size:var(--text-sm)}.recipe-card-nutrition{color:var(--text);opacity:.75;font-size:.82rem}.recipe-card-missing{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.recipe-card-missing-label{color:var(--text);opacity:.6;font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}.chip{font-size:var(--text-xs);white-space:nowrap;background:var(--accent-bg);color:var(--accent-strong);border:1px solid var(--accent-border);border-radius:999px;align-items:center;padding:.15rem .55rem;font-weight:600;display:inline-flex}.chip-muted{background:var(--bg);color:var(--text);opacity:.85;border-color:var(--border)}.recipe-card-favorite-overlay{top:var(--space-2);right:var(--space-2);color:#fff;cursor:pointer;z-index:1;background:#14120f73;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:1.05rem;line-height:1;transition:background .15s,transform .15s;display:flex;position:absolute}@media (hover:hover){.recipe-card-favorite-overlay:hover{background:#14120fa6}}.recipe-card-favorite{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:1.25rem;line-height:1}.recipe-card-skeleton{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.recipe-card-skeleton-banner{background:var(--code-bg);height:72px}.recipe-card-skeleton-body{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.recipe-card-skeleton-line{border-radius:var(--radius-sm);background:var(--code-bg);height:12px}.recipe-card-skeleton-line.short{width:55%}@media (prefers-reduced-motion:no-preference){.recipe-card-skeleton-banner,.recipe-card-skeleton-line{background:linear-gradient(90deg, var(--code-bg) 25%, var(--border) 50%, var(--code-bg) 75%);background-size:200% 100%;animation:1.4s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.recipe-tiles .recipe-card{animation:.2s ease-out both recipe-card-in}.recipe-tiles .recipe-card:first-child{animation-delay:0s}.recipe-tiles .recipe-card:nth-child(2){animation-delay:20ms}.recipe-tiles .recipe-card:nth-child(3){animation-delay:40ms}.recipe-tiles .recipe-card:nth-child(4){animation-delay:60ms}.recipe-tiles .recipe-card:nth-child(5){animation-delay:80ms}.recipe-tiles .recipe-card:nth-child(6){animation-delay:.1s}.recipe-tiles .recipe-card:nth-child(7){animation-delay:.12s}.recipe-tiles .recipe-card:nth-child(8){animation-delay:.14s}@keyframes recipe-card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}button:not(.secondary):not(.danger):active{transform:scale(.98)}}.pantry-columns{columns:280px 3;column-gap:1.5rem}.pantry-page h1{font-family:var(--script);letter-spacing:0;color:var(--accent-strong);font-size:40px;font-weight:700}.pantry-section{break-inside:avoid-column;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-bottom:1.5rem;padding:.9rem 1.05rem 1.1rem}.pantry-section .section-head{border-bottom:1px solid var(--accent-border);justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.75rem;padding-bottom:.55rem;display:flex}.pantry-section h2{font-family:var(--script);text-transform:none;letter-spacing:0;color:var(--accent-strong);opacity:1;margin:0;font-size:24px;font-weight:600}.pantry-section .section-count{color:var(--accent-strong);background:var(--accent-bg);white-space:nowrap;border-radius:999px;padding:.15rem .55rem;font-size:12px;font-weight:600}.pantry-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.6rem;display:grid}.pantry-tile{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.4rem;padding:.7rem .8rem;transition:box-shadow .15s,border-color .15s,transform .15s;display:flex}@media (hover:hover){.pantry-tile:hover{box-shadow:var(--shadow);border-color:var(--accent-border);transform:translateY(-1px)}}.pantry-tile .name{color:var(--text-h);cursor:pointer;text-align:center;font-size:14px;font-weight:600;line-height:130%;text-decoration:none}@media (hover:hover){.pantry-tile .name:hover{color:var(--accent-strong);text-decoration:underline}}@media (hover:none){.pantry-tile .name{color:var(--accent-strong)}}.pantry-tile .qty-row{justify-content:space-between;align-items:center;gap:.4rem;display:flex}.pantry-tile .qty-row button{padding:.2rem .55rem;font-size:13px;line-height:1}.pantry-tile .qty-row span{color:var(--text);opacity:.85;white-space:nowrap;font-size:13px}.pantry-tile-editing{border:1px dashed var(--accent-border);background:var(--accent-bg)}.pantry-tile-editing input,.pantry-tile-editing select{font:inherit;padding:.25rem .35rem;font-size:13px}.pantry-tile-editing .qty-row button{flex:1;padding:.2rem .4rem;font-size:12px}.edit-hint{color:var(--text);opacity:.75;margin-top:.75rem;font-size:13px}.nutrition-tiles{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem;display:grid}.nutrition-tile{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.15rem;padding:.6rem .7rem;display:flex}.nutrition-tile .value{color:var(--text-h);font-size:1.1rem;font-weight:650}.nutrition-tile .label{text-transform:uppercase;letter-spacing:.03em;opacity:.6;font-size:.75rem}.nutrition-tile-subs{border-top:1px solid var(--border);flex-direction:column;gap:.15rem;margin-top:.35rem;padding-top:.35rem;display:flex}.nutrition-tile-sub{opacity:.8;justify-content:space-between;gap:.5rem;font-size:.78rem;display:flex}.error-banner{color:#8c342a;background:#fdf0ee;border:1px solid #8c342a40;border-radius:6px;margin-bottom:1rem;padding:.5rem .75rem;font-size:14px}.success-banner{color:#3f6b3f;background:#eef6ee;border:1px solid #3f6b3f40;border-radius:6px;padding:.5rem .75rem;font-size:14px}.warning-banner{color:#8a6314;background:#fdf6e3;border:1px solid #8a63144d;border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:1rem;padding:.6rem .85rem;font-size:14px;display:flex}.page-header{justify-content:space-between;align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.text-muted{color:var(--text);opacity:.7;font-size:var(--text-sm)}.empty-state{text-align:center;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);flex-direction:column;display:flex}.empty-state p{color:var(--text);opacity:.75;max-width:28rem}.modal-overlay{z-index:100;background:#26222073;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal{box-sizing:border-box;width:100%;max-width:520px;max-height:100%;padding:1.1rem 1.3rem 1.3rem;overflow-y:auto}.modal-header{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.modal-header h2{margin:0}.modal-close{padding:.15rem .55rem;font-size:18px;line-height:1}.tour-card{border:2px solid var(--accent-strong);box-shadow:0 12px 32px #00000059}.modal-actions{justify-content:flex-end;gap:.6rem;margin-top:1.25rem;display:flex}.complete-recipe-rows{flex-direction:column;gap:.5rem;margin-top:.6rem;display:flex}.complete-recipe-row{align-items:center;gap:.5rem;display:flex}.complete-recipe-row .name{flex:1}.complete-recipe-row .hint{color:var(--text);opacity:.6;font-size:13px}.meal-calendar{margin-top:.75rem}.meal-calendar-picking-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.meal-calendar-day-names{flex-direction:column;gap:.15rem;margin:.25rem 0 0;padding:0;list-style:none;display:flex}.meal-calendar-day-name{font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:.15rem 0;font-size:14px}.meal-calendar-day-name:hover,.meal-calendar-day-name:focus-visible{color:var(--text-h);text-decoration:underline}@media (width<=720px){.page-header h1{margin-bottom:.5rem;font-size:1.5rem}.section-tabs{margin-bottom:.75rem}}.getting-started-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.getting-started-toggle{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:baseline;gap:.4rem;min-width:0;padding:0;display:flex}.getting-started-caret{opacity:.6;font-size:.8em}.getting-started-next{margin:.4rem 0 0;font-size:14px}.page-title-tab{opacity:.7;font-weight:400}.nav-drawer-section+.nav-drawer-section{margin-top:1rem}.nav-drawer-heading{letter-spacing:.06em;text-transform:uppercase;opacity:.6;color:var(--text);margin:0 0 .3rem;font-size:12px}.app-nav-menu{padding:.4rem .7rem;font-size:20px;line-height:1}.nav-drawer-scrim{z-index:60;background:#0006;position:fixed;inset:0}.nav-drawer{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:1rem;width:min(78vw,300px);padding:1rem .9rem;animation:.16s ease-out nav-drawer-in;display:flex;position:absolute;top:0;bottom:0;left:0;overflow-y:auto}@media (prefers-reduced-motion:reduce){.nav-drawer{animation:none}}@keyframes nav-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.nav-drawer-links,.nav-drawer-chrome{flex-direction:column;gap:.4rem;display:flex}.nav-drawer-chrome{border-top:1px solid var(--border);margin-top:auto;padding-top:.9rem}.nav-drawer .app-nav-link,.nav-drawer button{text-align:left;justify-content:flex-start;width:100%}.page-subhead{color:var(--text-h);margin:0;font-size:1.15rem}.planner-tabs-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.grocery-list-controls{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.grocery-extras{border-top:1px solid var(--border);margin:.75rem 0 1rem;padding-top:.75rem}.grocery-extras h3{margin:0 0 .4rem;font-size:14px}.grocery-extras-list{flex-direction:column;gap:.2rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.grocery-extras-list li{align-items:center;gap:.5rem;display:flex}.grocery-extras-list label{flex:1;align-items:center;gap:.4rem;min-width:0;display:flex}.grocery-extras-list .is-checked{opacity:.55;text-decoration:line-through}.grocery-extras-add{flex-wrap:wrap;gap:.4rem;display:flex}.grocery-extras-add input{flex:12rem;min-width:0}.meal-calendar-next-trip{border-left:3px solid var(--accent-strong);background:var(--surface);color:var(--text);border-radius:0 8px 8px 0;margin:0 0 .75rem;padding:.5rem .8rem;font-size:14px}.meal-calendar-window-empty{border:1px dashed var(--border);color:var(--text);opacity:.85;border-radius:8px;margin:0 0 .75rem;padding:.6rem .8rem;font-size:14px}.meal-calendar-day-add{opacity:0;color:var(--text);pointer-events:none;font-size:15px;line-height:1;transition:opacity .12s;position:absolute;bottom:.3rem;right:.35rem}.meal-calendar-day:hover .meal-calendar-day-add,.meal-calendar-day:focus-within .meal-calendar-day-add{opacity:.55}@media (pointer:coarse){.meal-calendar-day-add{opacity:.35}}.meal-calendar-nav{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.overflow-menu{display:inline-flex;position:relative}.overflow-menu-panel{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.35rem;min-width:12rem;padding:.5rem;display:flex;position:absolute;top:calc(100% + .3rem);left:0;box-shadow:0 6px 20px #00000026}.overflow-menu-panel button{text-align:left;justify-content:flex-start;width:100%}.meal-plan-month-label-button{cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.meal-plan-month-label-button:hover,.meal-plan-month-label-button:focus-visible{text-decoration:underline}.meal-plan-view-picker{gap:.25rem;margin-left:auto;display:inline-flex}.meal-plan-month-label{color:var(--text-h);white-space:nowrap;margin:0;font-size:1.25rem}.meal-plan-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.25rem 0 .75rem;display:flex}.meal-calendar-weekdays,.meal-calendar-grid{grid-template-columns:repeat(7,1fr);gap:.5rem;display:grid}.meal-calendar-weekdays{margin-bottom:.4rem}.meal-calendar-weekday{text-align:center;color:var(--text);opacity:.6;text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.meal-calendar-grid{margin-bottom:.5rem}.meal-calendar-day{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.3rem;min-width:0;height:88px;min-height:0;padding:.4rem;transition:border-color .15s,background .15s;display:flex;position:relative}.meal-calendar-day-blank{background:0 0;border:none}.meal-calendar-day.today{border-color:var(--accent-strong);box-shadow:inset 0 0 0 2px var(--accent-border)}.meal-calendar-day.trip{background:var(--accent-bg)}.meal-calendar-day.past{background:var(--bg)}.meal-calendar-day.past .meal-calendar-day-date{opacity:.55}.meal-calendar-day.past.trip{background:var(--accent-bg)}.meal-calendar-day.drop-over{border-color:var(--accent-strong);box-shadow:0 0 0 2px var(--accent-bg)}.meal-calendar-day.not-current-month{opacity:.45}.meal-calendar-day.grocery-selected{background:var(--accent-bg);border-color:var(--accent-strong)}.meal-calendar-day.pickable{cursor:pointer}@media (hover:hover){.meal-calendar-day.pickable:hover{border-color:var(--accent-strong)}}.meal-calendar-day.pickable:focus-visible{box-shadow:0 0 0 2px var(--accent-bg);border-color:var(--accent-strong);outline:none}.meal-calendar-day-head{flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.meal-calendar-day-date{color:var(--text-h);background:0 0;border:none;padding:0;font-size:13px;font-weight:600}.meal-calendar-day.today .meal-calendar-day-date{color:var(--accent-strong)}.meal-calendar-trip-badge{cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;line-height:1}.meal-calendar-nutrition-badge{text-align:center;cursor:pointer;border:none;border-radius:999px;width:16px;height:16px;padding:0;font-size:11px;font-weight:700;line-height:16px}.meal-calendar-nutrition-badge.status-good{color:#3f6b4f;background:#dcece1}.meal-calendar-nutrition-badge.status-flagged{color:#7a5c10;background:#f7e4b0}.meal-calendar-day-count{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-self:flex-start;align-items:center;gap:.3rem;max-width:100%;margin-top:auto;padding:.2rem .5rem;font-size:12px;font-weight:600;line-height:1.4;display:flex;overflow:hidden}@media (hover:hover){.meal-calendar-day-count:hover{border-color:var(--accent-strong)}}.meal-calendar-occurrence-schedule{flex-basis:100%;order:99;align-items:center;gap:.4rem;display:flex}.meal-calendar-occurrence-schedule input[type=date]{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.2rem .35rem}.meal-calendar-occurrence-schedule button{min-height:0;padding:.2rem .5rem;font-size:12px}.meal-calendar-occurrence{background:var(--accent-bg);border:1px solid var(--accent-border);cursor:grab;border-radius:6px;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.3rem;min-width:0;padding:.25rem .4rem;font-size:12px;display:flex}.meal-calendar-occurrence .name{min-width:0;color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.meal-calendar-incomplete-badge{text-align:center;color:#7a5c10;background:#f7e4b0;border-radius:999px;flex-shrink:0;width:16px;height:16px;font-size:11px;font-weight:700;line-height:16px;display:inline-block}.meal-calendar-occurrence-remove,.meal-calendar-occurrence-made-action,.meal-calendar-occurrence-step{color:var(--text);opacity:.6;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.meal-calendar-occurrence-remove:disabled,.meal-calendar-occurrence-made-action:disabled,.meal-calendar-occurrence-step:disabled{opacity:.25;cursor:default}@media (hover:hover){.meal-calendar-occurrence-remove:hover:not(:disabled),.meal-calendar-occurrence-made-action:hover:not(:disabled),.meal-calendar-occurrence-step:hover:not(:disabled){opacity:1}}.meal-calendar-occurrence-made-action{color:var(--accent-strong,var(--text));opacity:.85;font-size:15px}.meal-calendar-occurrence-made{color:var(--accent-strong,var(--text));opacity:.55;font-size:14px;line-height:1}.meal-calendar-unscheduled{background:var(--surface);border:1px dashed var(--border);border-radius:8px;margin-top:1rem;padding:.85rem 1rem}.meal-calendar-unscheduled.drop-over{border-color:var(--accent-strong);box-shadow:0 0 0 2px var(--accent-bg)}.meal-calendar-unscheduled-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.meal-calendar-unscheduled-head h3{color:var(--text-h);margin:0}.meal-calendar-unscheduled-list{flex-wrap:wrap;gap:.4rem;display:flex}.meal-calendar-unscheduled-list .meal-calendar-occurrence{flex:none}.meal-calendar-unscheduled-empty{color:var(--text);opacity:.6;margin:0;font-size:13px}.meal-calendar-nutrition-rows{flex-direction:column;gap:.4rem;display:flex}.meal-calendar-nutrition-row{background:var(--bg);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .7rem;display:flex}.meal-calendar-nutrition-row .metric{color:var(--text-h);font-weight:600}.meal-calendar-nutrition-row .target{opacity:.7;font-weight:400}.meal-calendar-nutrition-row .status-label{white-space:nowrap;border-radius:999px;padding:.15rem .5rem;font-size:12px;font-weight:600}.meal-calendar-nutrition-row.status-good .status-label{color:#3f6b4f;background:#dcece1}.meal-calendar-nutrition-row.status-short .status-label,.meal-calendar-nutrition-row.status-low .status-label,.meal-calendar-nutrition-row.status-high .status-label{color:#7a5c10;background:#f7e4b0}.meal-calendar-nutrition-row.status-no_goal .status-label{background:var(--border);color:var(--text);opacity:.75}.meal-templates-section{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-top:1rem;padding:.85rem 1rem}.meal-templates-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.meal-templates-head h3{color:var(--text-h);margin:0}.meal-templates-empty{color:var(--text);opacity:.7;margin:0;font-size:13px}.meal-templates-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.meal-templates-item{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:6px;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:13px;display:flex}.meal-templates-item .name{min-width:0;color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.meal-templates-count{opacity:.7;white-space:nowrap;font-size:12px}.meal-templates-delete{color:var(--text);opacity:.6;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}@media (hover:hover){.meal-templates-delete:hover{opacity:1}}.template-builder-lines{flex-direction:column;gap:.35rem;max-height:220px;margin:.75rem 0;padding:0;list-style:none;display:flex;overflow-y:auto}.template-builder-line{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:.5rem;padding:.35rem .5rem;font-size:13px;display:flex}.template-builder-line .name{min-width:0;color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.template-builder-line input[type=number]{box-sizing:border-box;width:48px;padding:.2rem .3rem}.recipe-form-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.recipe-form-grid label{color:var(--text);opacity:.85;flex-direction:column;gap:.3rem;font-size:13px;display:flex}.recipe-form-row{flex-wrap:wrap;align-items:center;gap:.5rem;padding:.6rem .75rem;display:flex}.recipe-form-row .field-ingredient{flex:200px;min-width:0}.recipe-form-row .field-qty{flex:none;width:70px}.recipe-form-row .field-unit{flex:none;width:110px}.recipe-form-row .field-section{flex:none;width:130px}.recipe-form-row .field-notes{flex:120px;min-width:0}.recipe-form-row .field-step{flex:200px;min-width:0;min-height:40px}.recipe-form-row .field-step-number{color:var(--text-h);font-weight:600}.recipe-form-row-actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}@media (width<=720px){.recipe-form-row{flex-direction:column;align-items:stretch}.recipe-form-row .field-ingredient,.recipe-form-row .field-qty,.recipe-form-row .field-unit,.recipe-form-row .field-section,.recipe-form-row .field-notes,.recipe-form-row .field-step{box-sizing:border-box;flex:none;width:100%}.recipe-form-row .field-step{min-height:5rem}.recipe-form-row .field-step-number{align-self:flex-start}.recipe-form-row-actions{justify-content:flex-end}.recipe-form-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}}.reference-panel{margin-bottom:1rem}.reference-panel-disclaimer{color:var(--text);opacity:.85;margin:0 0 .6rem;font-size:13px}.reference-panel-disclaimer:last-of-type{margin-bottom:.8rem}.reference-instructions{color:var(--text);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;gap:.5rem;margin:0;padding-left:1.4rem;font-size:14px;display:flex}.reference-step-section{color:var(--text-h)}.recipe-form-grid .field-name{grid-column:1/-1}code{font-family:var(--mono);color:var(--text-h);background:var(--code-bg);border-radius:4px;padding:3px 6px;font-size:13px;line-height:135%;display:inline-flex}.app-nav{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.85rem 1.5rem;display:flex}.app-nav-left,.app-nav-right{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.app-nav-right{gap:.5rem}.app-nav-brand{color:var(--text-h);font-family:var(--heading);white-space:nowrap;align-items:center;gap:.4rem;margin-right:.6rem;font-size:1.15rem;font-weight:650;display:inline-flex}.app-nav-link{color:var(--text);background:0 0;border-radius:6px;align-items:center;padding:.4rem .65rem;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.app-nav-link.active{color:var(--accent-strong);background:var(--accent-bg);font-weight:600}.section-tabs{border-bottom:1px solid var(--border);scrollbar-width:none;-ms-overflow-style:none;align-items:flex-end;gap:.2rem;margin-bottom:1.25rem;display:flex;overflow-x:auto}.section-tabs::-webkit-scrollbar{display:none}@media (width<=720px){.section-tabs{display:none}}.section-tab{white-space:nowrap;border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--text);opacity:.7;background:var(--code-bg);border:1px solid #0000;border-bottom:none;flex:none;align-items:center;margin-bottom:-1px;padding:.5rem 1rem;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,opacity .15s,border-color .15s;display:inline-flex}@media (hover:hover){.section-tab:not(.active):hover{opacity:.9}}.section-tab.active{opacity:1;color:var(--accent-strong);background:var(--bg);border-color:var(--border);border-bottom:1px solid var(--bg);box-shadow:inset 0 2px 0 var(--accent-border);font-weight:650}.neighborhood-subtabs{gap:1.25rem;margin:-.5rem 0 1.25rem;font-size:13px;display:flex}.neighborhood-subtab{color:var(--text);opacity:.65;border-bottom:2px solid #0000;padding-bottom:.2rem;text-decoration:none;transition:opacity .15s,border-color .15s,color .15s}@media (hover:hover){.neighborhood-subtab:not(.active):hover{opacity:.9}}.neighborhood-subtab.active{opacity:1;color:var(--accent-strong);border-bottom-color:var(--accent-border);font-weight:600}.inline-text-button{color:var(--accent-strong);cursor:pointer;background:0 0;border:none;margin-left:.5rem;padding:0;font-size:12px;text-decoration:underline}.app-nav-guide{color:var(--accent-strong);background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .8rem;font-weight:600;display:inline-flex}@media (hover:hover){.app-nav-guide:hover{background:var(--accent);color:var(--surface)}}.app-nav-user{color:var(--text);opacity:.85;text-overflow:ellipsis;white-space:nowrap;max-width:45vw;padding:.3rem .65rem;font-size:.85rem;overflow:hidden}.app-nav-logout{align-items:center;gap:.35rem;display:inline-flex}.meal-calendar-agenda{flex-direction:column;gap:.5rem;display:flex}.meal-calendar-agenda .meal-calendar-day{height:auto;min-height:3.5rem}.meal-calendar-agenda .meal-calendar-day-date{font-size:14px}.meal-calendar-agenda .meal-calendar-day-count{padding:.35rem .7rem;font-size:14px}.meal-calendar-agenda .meal-calendar-occurrence{padding:.45rem .55rem;font-size:14px}.meal-plan-log-entry button{padding:.3rem .65rem;font-size:13px}.meal-plan-log-made{color:var(--accent-strong,var(--text));opacity:.75;white-space:nowrap;font-size:13px}.landing{color:var(--text);overflow-x:clip}.landing-inner{max-width:68rem;margin:0 auto;padding:0 1.25rem}.landing-top{z-index:20;justify-content:space-between;align-items:center;gap:var(--space-4);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);max-width:68rem;margin:0 auto;padding:.7rem 1.25rem;display:flex;position:sticky;top:0}.landing-brand{font-family:var(--heading,inherit);color:var(--text-h);align-items:center;gap:.5rem;font-size:1.15rem;display:inline-flex}.landing-top-actions{align-items:center;gap:.5rem;display:inline-flex}.landing-hero{padding-bottom:15rem;position:relative;overflow:hidden}.landing-hero-copy{z-index:1;max-width:68rem;margin:0 auto;padding:4rem 1.25rem 0;position:relative}.landing-glow{pointer-events:none;position:absolute;inset:0;overflow:hidden}.landing-glow span{filter:blur(70px);opacity:.6;border-radius:50%;display:block;position:absolute}.landing-glow-a{background:radial-gradient(circle, var(--accent-bg), transparent 68%);width:40rem;height:40rem;top:-16rem;right:-8rem}.landing-glow-b{background:radial-gradient(circle, var(--accent-bg), transparent 68%);width:28rem;height:28rem;top:30%;left:-12rem}.landing.animate .landing-glow-a{animation:26s ease-in-out infinite landing-drift-a}.landing.animate .landing-glow-b{animation:32s ease-in-out infinite landing-drift-b}@keyframes landing-drift-a{0%,to{transform:translate(0,0)scale(1)}50%{transform:translate(-3rem,2.5rem)scale(1.12)}}@keyframes landing-drift-b{0%,to{transform:translate(0,0)scale(1.08)}50%{transform:translate(2.5rem,-2rem)scale(1)}}.landing-pill{margin:0 0 var(--space-4);border:1px solid var(--border);background:var(--surface);color:var(--text);opacity:.9;border-radius:999px;align-items:center;gap:.5rem;padding:.3rem .8rem;font-size:.8rem;display:inline-flex}.landing-pill-dot{background:var(--accent);border-radius:50%;width:.45rem;height:.45rem}.landing.animate .landing-pill-dot{animation:2.6s ease-in-out infinite landing-pulse}@keyframes landing-pulse{0%,to{opacity:.9;transform:scale(1)}50%{opacity:.35;transform:scale(1.5)}}.landing-hero h1{color:var(--text-h);letter-spacing:-.015em;margin:0 0 var(--space-4);max-width:18ch;font-size:3.1rem;line-height:1.08}.landing-accent{color:var(--accent-strong)}.landing-word{white-space:pre;padding-bottom:.06em;display:inline-block}.landing.animate .landing-word{opacity:0;animation:.62s cubic-bezier(.22,1,.36,1) forwards landing-rise}@keyframes landing-rise{0%{opacity:0;transform:translateY(.55em)}to{opacity:1;transform:translate(0,0)}}.landing-lede{max-width:54ch;margin:0 0 var(--space-5);opacity:.9;font-size:1.12rem;line-height:1.6}.landing.animate .landing-lede{opacity:0;animation:.7s cubic-bezier(.22,1,.36,1) .62s forwards landing-rise}.landing-cta{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.landing.animate .landing-cta{opacity:0;animation:.7s cubic-bezier(.22,1,.36,1) .78s forwards landing-rise}.landing-primary{padding:.72rem 1.5rem;font-size:1.02rem;transition:transform .18s,box-shadow .18s}@media (hover:hover){.landing.animate .landing-primary:hover{box-shadow:var(--shadow);transform:translateY(-2px)}}.landing-trust{opacity:.85;align-items:flex-start;gap:.55rem;max-width:56ch;margin:0;font-size:.92rem;line-height:1.55;display:flex}.landing.animate .landing-trust{opacity:0;animation:.7s cubic-bezier(.22,1,.36,1) .9s forwards landing-rise}.landing-tick{color:var(--accent-strong);flex:none;font-weight:700}.landing-hero-art{inset-inline:0;pointer-events:none;-webkit-user-select:none;user-select:none;height:17rem;position:absolute;bottom:0}.landing-hero-art svg{width:100%;height:100%;display:block}.landing-t-alt{opacity:0}.landing.animate .landing-tva-1{animation:80s ease-in-out infinite pantry-va-t1}.landing.animate .landing-tva-2{animation:80s ease-in-out infinite pantry-va-t2}.landing.animate .landing-tva-3{animation:80s ease-in-out infinite pantry-va-t3}.landing.animate .landing-tvb-1{animation:80s ease-in-out infinite pantry-vb-t1}.landing.animate .landing-tvb-2{animation:80s ease-in-out infinite pantry-vb-t2}.landing.animate .landing-tvb-3{animation:80s ease-in-out infinite pantry-vb-t3}.landing.animate .landing-tvc-1{animation:80s ease-in-out infinite pantry-vc-t1}.landing.animate .landing-tvc-2{animation:80s ease-in-out infinite pantry-vc-t2}.landing.animate .landing-tvc-3{animation:80s ease-in-out infinite pantry-vc-t3}.landing.animate .landing-tvd-1{animation:80s ease-in-out infinite pantry-vd-t1}.landing.animate .landing-tvd-2{animation:80s ease-in-out infinite pantry-vd-t2}.landing.animate .landing-tvd-3{animation:80s ease-in-out infinite pantry-vd-t3}.landing.animate .landing-tve-1{animation:80s ease-in-out infinite pantry-ve-t1}.landing.animate .landing-tve-2{animation:80s ease-in-out infinite pantry-ve-t2}.landing.animate .landing-tve-3{animation:80s ease-in-out infinite pantry-ve-t3}@keyframes pantry-va-t1{0%,1.2%{offset-distance:0%;opacity:0}1.8%,7.6%{offset-distance:0%;opacity:1}10.4%{offset-distance:100%;opacity:1}11%,16%{offset-distance:100%;opacity:0}17%,to{offset-distance:0%;opacity:0}}@keyframes pantry-va-t2{0%,2%{offset-distance:0%;opacity:0}2.6%,8.8%{offset-distance:0%;opacity:1}11.6%{offset-distance:100%;opacity:1}12.2%,16%{offset-distance:100%;opacity:0}17%,to{offset-distance:0%;opacity:0}}@keyframes pantry-va-t3{0%,2.8%{offset-distance:0%;opacity:0}3.4%,10%{offset-distance:0%;opacity:1}12.8%{offset-distance:100%;opacity:1}13.4%,16%{offset-distance:100%;opacity:0}17%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vb-t1{0%,21.2%{offset-distance:0%;opacity:0}21.8%,27.6%{offset-distance:0%;opacity:1}30.4%{offset-distance:100%;opacity:1}31%,36%{offset-distance:100%;opacity:0}37%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vb-t2{0%,22%{offset-distance:0%;opacity:0}22.6%,28.8%{offset-distance:0%;opacity:1}31.6%{offset-distance:100%;opacity:1}32.2%,36%{offset-distance:100%;opacity:0}37%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vb-t3{0%,22.8%{offset-distance:0%;opacity:0}23.4%,30%{offset-distance:0%;opacity:1}32.8%{offset-distance:100%;opacity:1}33.4%,36%{offset-distance:100%;opacity:0}37%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vc-t1{0%,41.2%{offset-distance:0%;opacity:0}41.8%,47.6%{offset-distance:0%;opacity:1}50.4%{offset-distance:100%;opacity:1}51%,56%{offset-distance:100%;opacity:0}57%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vc-t2{0%,42%{offset-distance:0%;opacity:0}42.6%,48.8%{offset-distance:0%;opacity:1}51.6%{offset-distance:100%;opacity:1}52.2%,56%{offset-distance:100%;opacity:0}57%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vc-t3{0%,42.8%{offset-distance:0%;opacity:0}43.4%,50%{offset-distance:0%;opacity:1}52.8%{offset-distance:100%;opacity:1}53.4%,56%{offset-distance:100%;opacity:0}57%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vd-t1{0%,61.2%{offset-distance:0%;opacity:0}61.8%,67.6%{offset-distance:0%;opacity:1}70.4%{offset-distance:100%;opacity:1}71%,76%{offset-distance:100%;opacity:0}77%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vd-t2{0%,62%{offset-distance:0%;opacity:0}62.6%,68.8%{offset-distance:0%;opacity:1}71.6%{offset-distance:100%;opacity:1}72.2%,76%{offset-distance:100%;opacity:0}77%,to{offset-distance:0%;opacity:0}}@keyframes pantry-vd-t3{0%,62.8%{offset-distance:0%;opacity:0}63.4%,70%{offset-distance:0%;opacity:1}72.8%{offset-distance:100%;opacity:1}73.4%,76%{offset-distance:100%;opacity:0}77%,to{offset-distance:0%;opacity:0}}@keyframes pantry-ve-t1{0%,81.2%{offset-distance:0%;opacity:0}81.8%,87.6%{offset-distance:0%;opacity:1}90.4%{offset-distance:100%;opacity:1}91%,96%{offset-distance:100%;opacity:0}97%,to{offset-distance:0%;opacity:0}}@keyframes pantry-ve-t2{0%,82%{offset-distance:0%;opacity:0}82.6%,88.8%{offset-distance:0%;opacity:1}91.6%{offset-distance:100%;opacity:1}92.2%,96%{offset-distance:100%;opacity:0}97%,to{offset-distance:0%;opacity:0}}@keyframes pantry-ve-t3{0%,82.8%{offset-distance:0%;opacity:0}83.4%,90%{offset-distance:0%;opacity:1}92.8%{offset-distance:100%;opacity:1}93.4%,96%{offset-distance:100%;opacity:0}97%,to{offset-distance:0%;opacity:0}}.landing.animate .landing-puff{opacity:0;transform-box:fill-box;transform-origin:50%;animation:16s ease-out infinite pantry-steam}@keyframes pantry-steam{0%,58%{opacity:0;transform:translateY(6px)scale(.6)}64%{opacity:.5;transform:translateY(-4px)scale(1)}74%{opacity:.28;transform:translateY(-16px)scale(1.15)}82%,to{opacity:0;transform:translateY(-26px)scale(1.3)}}.landing-plate{opacity:0}.landing.animate .landing-plate{animation:16s ease-in-out infinite pantry-plate}@keyframes pantry-plate{0%,72%{opacity:0;transform:translate(0)}78%{opacity:1;transform:translate(30px)}90%{opacity:1;transform:translate(120px)}97%,to{opacity:0;transform:translate(170px)}}.landing-bag{opacity:0}.landing.animate .landing-bag{animation:16s ease-in-out infinite pantry-bag}@keyframes pantry-bag{0%,2%{opacity:1;transform:translate(-160px)}12%,30%{opacity:1;transform:translate(300px)}36%{opacity:0;transform:translate(300px)}to{opacity:0;transform:translate(-160px)}}.landing.animate .landing-cal-day{animation:80s linear infinite pantry-cal}@keyframes pantry-cal{0%,19.9%{transform:translate(0)}20%,39.9%{transform:translate(16px)}40%,59.9%{transform:translate(32px)}60%,79.9%{transform:translate(48px)}80%,99.9%{transform:translate(64px)}to{transform:translate(0)}}.landing-band{border-top:1px solid var(--border);padding:4.5rem 0}.landing-band.alt{background:var(--surface)}.landing-eyebrow{margin:0 0 var(--space-2);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-strong);font-size:.75rem;font-weight:600}.landing-h2{margin:0 0 var(--space-3);letter-spacing:-.01em;max-width:24ch;color:var(--text-h);font-size:2rem;line-height:1.2}.landing-section-lede{opacity:.85;max-width:60ch;margin:0;line-height:1.6}.landing.animate .landing-reveal{opacity:0;transition:opacity .6s,transform .6s cubic-bezier(.22,1,.36,1);transform:translateY(1.1rem)}.landing.animate .landing-reveal.is-in{opacity:1;transform:translate(0,0)}.landing-loop-card{margin-top:var(--space-6);padding:var(--space-5);border:1px solid var(--border);background:var(--surface);border-radius:12px}.landing-band.alt .landing-loop-card{background:var(--bg)}.landing-loop{margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;gap:.4rem .3rem;display:flex}.landing-loop-item{align-items:center;gap:.3rem;display:inline-flex}.landing-loop-chip{border:1px solid var(--border);background:var(--bg);white-space:nowrap;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.8rem;transition:color .5s,border-color .5s,background .5s;display:inline-flex}.landing-band.alt .landing-loop-chip{background:var(--surface)}.landing-loop-chip.done{border-color:var(--accent-border);color:var(--accent-strong)}.landing-loop-chip.now{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-strong)}.landing-loop-dot{background:var(--border);border-radius:50%;width:.4rem;height:.4rem;transition:background .5s}.landing-loop-chip.done .landing-loop-dot,.landing-loop-chip.now .landing-loop-dot{background:var(--accent)}.landing.animate .landing-loop-chip.now .landing-loop-dot{animation:1.6s ease-in-out infinite landing-pulse}.landing-loop-link{background:var(--border);width:.9rem;height:1px;transition:background .5s}.landing-loop-link.done{background:var(--accent-border)}.landing-loop-note{opacity:.8;max-width:60ch;margin:0;font-size:.9rem;line-height:1.55}.landing-demo{margin-top:var(--space-5);padding:var(--space-5);border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow);border-radius:14px}.landing-demo-hint{margin:0 0 var(--space-4);opacity:.8;max-width:56ch;font-size:.9rem;line-height:1.55}.landing-chips{margin-bottom:var(--space-4);flex-wrap:wrap;gap:.5rem;display:flex}.landing-chip{color:var(--text);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:.4rem .9rem;font-size:.92rem;transition:transform .15s,background .15s,border-color .15s,color .15s}.landing.animate .landing-demo .landing-chip{opacity:0;transition:opacity .42s,transform .42s cubic-bezier(.22,1,.36,1),background .15s,border-color .15s,color .15s;transform:scale(.85)}.landing.animate .landing-demo.is-in .landing-chip{opacity:1;transform:scale(1)}.landing-chip.on{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent-strong)}.landing.animate .landing-chip:active{transform:scale(.94)}@media (hover:hover){.landing-chip:hover{border-color:var(--accent-border)}}.landing-demo-count{margin:0 0 var(--space-3);color:var(--text-h);font-size:1.02rem}.landing-demo-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.landing-demo-list li{justify-content:space-between;align-items:baseline;gap:var(--space-4);background:var(--surface);border:1px solid #0000;border-radius:8px;padding:.5rem .7rem;font-size:.94rem;transition:background .2s,border-color .2s;display:flex}.landing-band.alt .landing-demo-list li{background:var(--surface)}.landing-demo-list li.ready{background:var(--accent-bg);border-color:var(--accent-border)}.landing-demo-missing{opacity:.7;white-space:nowrap;font-size:.82rem}.landing-demo-list li.ready .landing-demo-missing{color:var(--accent-strong);opacity:.95}.landing-features{gap:var(--space-4);margin-top:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.landing-features>*{height:100%}.landing-feature{height:100%;padding:var(--space-4);border:1px solid var(--border);background:var(--surface);border-radius:12px;transition:transform .2s,box-shadow .2s,border-color .2s}.landing-band.alt .landing-feature{background:var(--bg)}@media (hover:hover){.landing.animate .landing-feature:hover{border-color:var(--accent-border);box-shadow:var(--shadow);transform:translateY(-3px)}}.landing-feature-icon{border:1px solid var(--border);background:var(--accent-bg);width:2.4rem;height:2.4rem;color:var(--accent-strong);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.landing-feature-icon svg{width:1.25rem;height:1.25rem}.landing-feature h3{margin:var(--space-3) 0 var(--space-2);color:var(--text-h);font-size:1rem;line-height:1.3}.landing-feature p{opacity:.82;margin:0;font-size:.92rem;line-height:1.55}.landing-price{margin-top:var(--space-6);padding:var(--space-5);border:1px solid var(--accent-border);background:var(--accent-bg);border-radius:14px}.landing-bignum{margin:0 0 var(--space-4);flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.landing-bignum strong{font-family:var(--heading,inherit);color:var(--accent-strong);font-variant-numeric:tabular-nums;font-size:2.4rem;line-height:1}.landing-bignum span{opacity:.85;font-size:.98rem}.landing-price-list{margin:0 0 var(--space-5);gap:.55rem var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));padding:0;list-style:none;display:grid}.landing-price-list li{align-items:flex-start;gap:.5rem;font-size:.93rem;line-height:1.5;display:flex}.landing-foot{justify-content:space-between;align-items:center;gap:var(--space-4);max-width:68rem;padding:var(--space-5) 1.25rem;border-top:1px solid var(--border);flex-wrap:wrap;margin:0 auto;display:flex}.landing-foot .landing-brand{opacity:.75;font-size:.95rem}.landing-foot a{opacity:.7;font-size:.85rem}@media (width<=720px){.landing-inner{padding:0 .9rem}.landing-top{padding:.6rem .9rem}.landing-top-cta{display:none}.landing-hero{padding-bottom:11rem}.landing-hero-copy{padding:2.25rem .9rem 0}.landing-hero h1{font-size:1.9rem}.landing-lede{font-size:1rem}.landing-hero-art{height:12rem}.landing-band{padding:3rem 0}.landing-h2{font-size:1.5rem}.landing-cta button,.landing-price .landing-primary{width:100%}.landing-features,.landing-price-list{grid-template-columns:1fr}.landing-demo{padding:var(--space-4)}.landing-demo-list li{flex-direction:column;align-items:flex-start;gap:.15rem}.landing-demo-missing{white-space:normal}}@media (width>=721px) and (width<=1000px){.landing-features{grid-template-columns:repeat(2,minmax(0,1fr))}}.landing.is-settled .landing-word,.landing.is-settled .landing-lede,.landing.is-settled .landing-cta,.landing.is-settled .landing-trust{opacity:1}@media (prefers-reduced-motion:reduce){.landing *,.landing :before,.landing :after{transition:none!important;animation:none!important}.landing .landing-word,.landing .landing-lede,.landing .landing-cta,.landing .landing-trust,.landing .landing-chip,.landing .landing-reveal{opacity:1!important;transform:none!important}.landing .landing-puff{opacity:.35!important}.landing .landing-plate,.landing .landing-bag,.landing .landing-t-alt{opacity:0!important}}.app-main{padding:1.5rem}@media (width<=720px){.app-main{padding:1rem .75rem}.app-nav{gap:.4rem .5rem;padding:.6rem .75rem}.app-nav-brand{margin-right:.25rem}.app-nav-link{padding:.4rem .5rem}.recipe-browse-page h1,.recipe-detail-page h1,.pantry-page h1{font-size:30px}.modal-overlay{padding:.75rem}}@media (width<=480px){.app-nav-brand{margin-right:0;font-size:.95rem}.app-nav-link{padding:.4rem}}@media (pointer:coarse){button,.app-nav-link,.section-tab,.cuisine-sidebar-link{min-height:44px}.inline-text-button{padding:.35rem .25rem;font-size:14px}input[type=text],input[type=search],input[type=number],input[type=date],textarea,select{min-height:44px;font-size:16px}input[type=checkbox]{width:22px;height:22px}.meal-calendar-trip-badge,.meal-calendar-occurrence-remove,.meal-calendar-occurrence-made-action,.meal-templates-delete,.recipe-card-favorite,.recipe-card-favorite-overlay,.modal-close{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.meal-calendar-nutrition-badge{width:28px;height:28px;min-height:0;font-size:14px;line-height:26px;position:relative}.meal-calendar-nutrition-badge:after{content:"";width:38px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.meal-calendar-occurrence-step{width:20px;min-height:0;font-size:16px;position:relative}.meal-calendar-occurrence-step:after{content:"";width:32px;height:32px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pantry-tile .qty-row button{min-width:44px;min-height:44px;padding:.2rem .55rem}.pantry-tile-editing .qty-row button{min-width:0;padding:.2rem .4rem}}.help-tip-button{border-radius:50%;flex:none;width:1.6rem;height:1.6rem;padding:0;font-size:.9rem;line-height:1}.help-tip-pop{z-index:60;text-align:left;width:min(340px,82vw);padding:.75rem 1rem;font-size:13px;font-weight:400;position:absolute;top:calc(100% + 6px)}.help-tip-pop ul{flex-direction:column;gap:.4rem;margin:0;padding-left:1.1rem;display:flex}.mascot-says{align-items:flex-start;gap:.6rem;margin:.75rem 0;display:flex}.mascot-figure{flex-direction:column;flex:none;align-items:center;display:flex}.mascot-name{opacity:.7;margin-top:.1rem;font-size:11px}.mascot-bubble{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-self:center;max-width:34rem;padding:.6rem .85rem;font-size:13px;position:relative}.mascot-bubble:before,.mascot-bubble:after{content:"";border:8px solid #0000;border-left-width:0;position:absolute;top:50%;transform:translateY(-50%)}.mascot-bubble:before{border-right-color:var(--border);left:-8px}.mascot-bubble:after{border-right-color:var(--surface);left:-6.6px}.toast-container{left:50%;bottom:var(--space-5);z-index:200;align-items:center;gap:var(--space-2);pointer-events:none;flex-direction:column-reverse;width:min(26rem,100vw - 2rem);display:flex;position:fixed;transform:translate(-50%)}.toast{pointer-events:auto;align-items:center;gap:var(--space-2);box-sizing:border-box;border-radius:var(--radius-md);width:100%;font-size:var(--text-sm);cursor:pointer;box-shadow:var(--shadow);background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.65rem .9rem;display:flex}.toast-error{color:#8c342a;background:#fdf0ee;border-color:#8c342a59}.toast-success{color:#3f6b3f;background:#eef6ee;border-color:#3f6b3f59}@media (prefers-reduced-motion:no-preference){.toast{animation:.2s ease-out both toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-leaving{animation:.2s ease-in both toast-out}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(8px)}}}.draft-banner{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--text);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin:0 0 1rem;padding:.6rem .85rem;font-size:14px;display:flex}.draft-banner.queued{justify-content:flex-start}.loading-state{color:var(--text);align-items:center;gap:.75rem;display:flex}.loading-state-message{opacity:.8}.loading-state-mascot{transform-origin:50% 70%;animation:1.6s ease-in-out infinite loading-flip;display:inline-flex}@keyframes loading-flip{0%,to{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}.loading-state-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:45vh;padding:2rem}.loading-state-page .loading-state-message{font-size:15px}.loading-state-inline{padding:.75rem 0;font-size:14px}.loading-state-strip{border:1px solid var(--accent-border);background:var(--accent-bg);border-radius:8px;margin-bottom:.75rem;padding:.5rem .85rem;font-size:14px}@media (prefers-reduced-motion:reduce){.loading-state-mascot{animation:none}}.tour-spotlight{outline:3px solid var(--accent);outline-offset:4px;box-shadow:0 0 0 8px var(--accent-bg), 0 0 22px 6px #0000002e;pointer-events:none;border-radius:4px;animation:1.8s ease-in-out infinite tour-spotlight-pulse}.tour-spotlight.tour-spotlight-interactive{pointer-events:auto}@keyframes tour-spotlight-pulse{0%,to{outline-color:var(--accent);box-shadow:0 0 0 8px var(--accent-bg), 0 0 22px 6px #0000002e}50%{outline-color:var(--accent-strong);box-shadow:0 0 0 12px var(--accent-bg), 0 0 26px 8px #00000038}}@media (prefers-reduced-motion:reduce){.tour-spotlight{animation:none}}[data-theme=classic]{--text:#453e33;--text-h:#2a2520;--bg:#faf8f2;--surface:#fffefa;--border:#e2dcc9;--code-bg:#efe9da;--accent:#86794f;--accent-strong:#695f3c;--accent-bg:#86794f17;--accent-border:#86794f59;--shadow:#2a252012 0 4px 10px -2px, #2a25200a 0 2px 4px -2px;--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Quicksand", sans-serif;--script:var(--heading);--identity-s:50%;--identity-l:42%;--art-s:42%;--art-l:76%}[data-theme=fitness]{--text:#1c2b24;--text-h:#10201a;--bg:#f4f9f6;--surface:#fff;--border:#d7e6dd;--code-bg:#e8f3ec;--accent:#1f9d5c;--accent-strong:#167a46;--accent-bg:#1f9d5c1a;--accent-border:#1f9d5c59;--shadow:#10201a14 0 4px 10px -2px, #10201a0d 0 2px 4px -2px;--heading:"Anton", sans-serif;--script:var(--heading);--identity-s:55%;--identity-l:38%;--art-s:48%;--art-l:74%}[data-theme=brainrot]{--text:#1a1a1a;--text-h:#000;--bg:#f7f3ff;--surface:#fff;--border:#e4d6ff;--code-bg:#efe4ff;--accent:#ff3d81;--accent-strong:#d81b60;--accent-bg:#ff3d811f;--accent-border:#ff3d8166;--shadow:#0000001a 0 4px 10px -2px, #0000000f 0 2px 4px -2px;--heading:"Bungee", system-ui, sans-serif;--script:var(--heading);--identity-s:70%;--identity-l:55%;--art-s:65%;--art-l:78%}[data-theme=cyberpunk]{--text:#c7d0e0;--text-h:#4be8ff;--bg:#0a0a14;--surface:#131320;--border:#2c2c44;--code-bg:#181828;--accent:#ff2ec4;--accent-strong:#e0119e;--accent-bg:#ff2ec41f;--accent-border:#ff2ec466;--shadow:#0000008c 0 4px 10px -2px, #4be8ff2e 0 0 16px -4px;--heading:"Orbitron", sans-serif;--script:var(--heading);--identity-s:85%;--identity-l:65%;--art-s:55%;--art-l:38%}[data-theme=fine-dining]{--text:#d8d2c4;--text-h:#f2ede0;--bg:#17140f;--surface:#201c15;--border:#332d24;--code-bg:#241f18;--accent:#b8933f;--accent-strong:#9c7a2f;--accent-bg:#b8933f1a;--accent-border:#b8933f59;--shadow:#0006 0 4px 10px -2px, #0000004d 0 2px 4px -2px;--heading:"Playfair Display", serif;--script:var(--heading);--identity-s:45%;--identity-l:55%;--art-s:32%;--art-l:34%}[data-theme=retro-diner]{--text:#3a2c28;--text-h:#241a17;--bg:#fbf3e6;--surface:#fff;--border:#e8d9c2;--code-bg:#f3e8d4;--accent:#c0392b;--accent-strong:#96281b;--accent-bg:#c0392b14;--accent-border:#c0392b59;--shadow:#241a171f 0 4px 10px -2px, #241a1714 0 2px 4px -2px;--heading:"Bebas Neue", system-ui, sans-serif;--script:var(--heading);--identity-s:60%;--identity-l:45%;--art-s:50%;--art-l:76%}[data-theme=great-hall]{--text:#c7cec0;--text-h:#eef2e6;--bg:#0c130d;--surface:#16211a;--border:#2c3f2e;--code-bg:#1b2a1e;--accent:#d9a536;--accent-strong:#b3841f;--accent-bg:#d9a5361f;--accent-border:#d9a53666;--shadow:#0000008c 0 4px 10px -2px, #d9a53624 0 0 14px -4px;--heading:"Cinzel Decorative", serif;--script:var(--heading);--identity-s:55%;--identity-l:60%;--art-s:42%;--art-l:34%}[data-theme=hobbit]{--text:#3b2f1f;--text-h:#241a0e;--bg:#f4ecd8;--surface:#fffaf0;--border:#d8c9a3;--code-bg:#eadfc0;--accent:#4c6b3f;--accent-strong:#37502c;--accent-bg:#4c6b3f1a;--accent-border:#4c6b3f59;--shadow:#241a0e1f 0 4px 10px -2px, #241a0e14 0 2px 4px -2px;--heading:"Uncial Antiqua", cursive;--script:var(--heading);--identity-s:38%;--identity-l:38%;--art-s:34%;--art-l:75%}[data-theme=gothic]{--text:#b7b0c2;--text-h:#e9e3f2;--bg:#0c0a10;--surface:#17141d;--border:#332c3d;--code-bg:#1f1a26;--accent:#7a1530;--accent-strong:#5c0f24;--accent-bg:#7a153024;--accent-border:#7a153066;--shadow:#0009 0 4px 10px -2px, #7a153026 0 0 14px -4px;--heading:"UnifrakturMaguntia", cursive;--script:var(--heading);--identity-s:40%;--identity-l:45%;--art-s:30%;--art-l:30%}[data-theme=power-up]{--text:#17233a;--text-h:#0d1526;--bg:#eaf4fb;--surface:#fff;--border:#cfe3f0;--code-bg:#dcedf7;--accent:#d92b2b;--accent-strong:#a81f1f;--accent-bg:#d92b2b1a;--accent-border:#d92b2b66;--shadow:#17233a26 0 4px 10px -2px, #17233a14 0 2px 4px -2px;--heading:"Press Start 2P", system-ui, sans-serif;--script:var(--heading);--identity-s:70%;--identity-l:48%;--art-s:60%;--art-l:76%}
