@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(/assets/Literata_opsz_wght_-Ct_rYJwd.woff2) format("woff2")}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(/assets/Literata-Italic_opsz_wght_-DIQoxRl8.woff2) format("woff2")}:root{color-scheme:light;--color-background: #f7f2ea;--color-surface: #fdfaf5;--color-surface-raised: #ffffff;--color-text: #262119;--color-text-muted: #6e6457;--color-border: #e0d7c9;--color-primary: #38634a;--color-primary-text: #fcfaf6;--color-danger: #b23a2e;--color-tag-background: #ece4d6;--color-tag-text: #55503f;--color-warning: #8a5d07;--color-warning-soft: #f5ebd3;--color-focus-ring: rgb(56 99 74 / 35%);--color-primary-hover: #2f5540;--color-danger-soft: #f6e3df;--color-overlay: rgb(23 18 14 / 45%);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--text-caption: 13px;--text-body: 16px;--text-body-large: 18px;--text-title: 22px;--text-large-title: 32px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 999px;--transition-fast: .12s ease;--transition: .18s ease;--touch-target: 44px;--shadow-sm: 0 1px 2px rgb(23 18 14 / 6%);--shadow-md: 0 2px 8px rgb(23 18 14 / 8%);--shadow-lg: 0 8px 24px rgb(23 18 14 / 14%);--content-width: 1120px;--content-width-narrow: 780px;--font-sans: system-ui, -apple-system, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif;--font-serif: "Literata", georgia, "Times New Roman", serif}[data-theme=era]{color-scheme:light;--color-background: #fff7f3;--color-surface: #fffcfa;--color-surface-raised: #ffffff;--color-text: #3a231e;--color-text-muted: #8a5348;--color-border: #f3ddd2;--color-primary: #c92a5d;--color-primary-text: #fff9f6;--color-danger: #ad2e24;--color-tag-background: #ffe0be;--color-tag-text: #a44a02;--color-warning: #a44a02;--color-warning-soft: #ffe0be;--color-focus-ring: rgb(201 42 93 / 35%);--color-primary-hover: #a81f4c;--color-danger-soft: #fbe4e1;--color-overlay: rgb(58 35 30 / 45%);--shadow-sm: 0 1px 2px rgb(58 35 30 / 6%);--shadow-md: 0 2px 8px rgb(58 35 30 / 8%);--shadow-lg: 0 8px 24px rgb(58 35 30 / 14%)}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--color-background: #151210;--color-surface: #1e1a16;--color-surface-raised: #28231e;--color-text: #ede6db;--color-text-muted: #a79b8b;--color-border: #3b342c;--color-primary: #8cc1a0;--color-primary-text: #142a1d;--color-danger: #e06a54;--color-tag-background: #332d25;--color-tag-text: #cbbfae;--color-warning: #d9a554;--color-warning-soft: #3a2f17;--color-focus-ring: rgb(140 193 160 / 40%);--color-primary-hover: #9dcbae;--color-danger-soft: #33201c;--color-overlay: rgb(0 0 0 / 60%);--shadow-sm: 0 1px 2px rgb(0 0 0 / 40%);--shadow-md: 0 2px 8px rgb(0 0 0 / 45%);--shadow-lg: 0 8px 24px rgb(0 0 0 / 55%)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-body);line-height:1.5;background:var(--color-surface);color:var(--color-text);-webkit-font-smoothing:antialiased}#root{min-height:100vh}img{max-width:100%;display:block}::selection{background:var(--color-tag-background);color:var(--color-tag-text)}h1,h2,h3{margin:0;line-height:1.25;font-weight:650;letter-spacing:-.01em}h1,h2{font-family:var(--font-serif);font-weight:560}h1{font-size:var(--text-large-title)}h2{font-size:var(--text-title)}h3{font-size:var(--text-body-large)}p{margin:0}a{color:var(--color-primary);text-decoration-thickness:1px;text-underline-offset:2px}a:hover{color:var(--color-primary-hover)}.muted{color:var(--color-text-muted)}.caption{color:var(--color-text-muted);font-size:var(--text-caption)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100%;left:var(--space-md);z-index:100;padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:var(--color-primary-text);border-radius:var(--radius-sm);font-weight:700;text-decoration:none;transition:top var(--transition-fast)}.skip-link:focus-visible{top:var(--space-md);outline-offset:4px}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}input,select,textarea{font:inherit;color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-sm) 10px;min-height:38px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}textarea{min-height:72px;resize:vertical;width:100%}input::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:1}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--color-text-muted)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}select{cursor:pointer}label{font-size:var(--text-caption);font-weight:600;color:var(--color-text-muted);letter-spacing:.02em;text-transform:uppercase}.field{display:flex;flex-direction:column;gap:var(--space-xs)}.field input,.field textarea{width:100%}[role=alert]{color:var(--color-danger);font-size:var(--text-caption)}button{font:inherit;font-weight:550;color:var(--color-text);background:var(--color-surface-raised);border:1.5px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) 12px;min-height:38px;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}button:hover:not(:disabled){background:var(--color-surface);border-color:var(--color-text-muted)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-text)}button.primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.button-primary{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-md);min-height:var(--touch-target);border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-primary-text);font-weight:650;text-decoration:none}.button-primary:hover{background:var(--color-primary-hover);color:var(--color-primary-text)}button.danger{color:var(--color-danger);border-color:var(--color-border)}button.danger:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}button.link-button{align-self:flex-start;padding:0;background:none;border:none;color:var(--color-primary);font-weight:600;text-decoration:underline}button.link-button:hover:not(:disabled){background:none;color:var(--color-primary-hover)}.tag{display:inline-flex;align-items:center;gap:var(--space-xs);padding:3px var(--space-sm);border-radius:var(--radius-pill);background:var(--color-tag-background);color:var(--color-tag-text);font-size:var(--text-caption);font-weight:600;line-height:1.4;white-space:nowrap}.tag-do-ahead{background:var(--color-warning-soft);color:var(--color-warning)}button.tag{border:1px solid transparent;min-height:0}button.tag-removable:hover:not(:disabled){background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger)}.tag-button{cursor:pointer;text-decoration:none;border:1px solid transparent}.tag-button:hover:not(:disabled){background:var(--color-primary);color:var(--color-primary-text)}.chip{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) 12px;min-height:34px;border-radius:var(--radius-pill);border:1.5px solid var(--color-border);background:var(--color-surface-raised);color:var(--color-text);font-size:var(--text-caption);font-weight:600;white-space:nowrap}button.chip:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-surface)}.chip-active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-text)}button.chip-active:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-text)}.chip>button{padding:0;min-height:0;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-pill);background:transparent;color:inherit;font-size:11px;line-height:1}.chip>button:hover:not(:disabled){background:var(--color-danger);color:var(--color-primary-text)}@media(max-width:640px){button,input,select,.chip{min-height:var(--touch-target)}}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-nav{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);background:var(--color-surface-raised);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.app-nav:before{content:"CookEra";font-family:var(--font-serif);font-size:var(--text-title);font-weight:560;letter-spacing:-.02em;color:var(--color-primary);margin-right:var(--space-xs)}.app-nav a{padding:var(--space-sm) 12px;border-radius:var(--radius-sm);color:var(--color-text);font-weight:600;text-decoration:none;white-space:nowrap;transition:background var(--transition-fast)}.app-nav a:hover{background:var(--color-surface);color:var(--color-text)}.app-nav a[aria-current=page]{background:var(--color-tag-background);color:var(--color-tag-text)}.app-nav select{margin-left:auto}.app-nav select+button,.app-nav a+button{margin-left:auto}.app-nav select~button{margin-left:0}.app-main{flex:1;width:100%;max-width:var(--content-width);margin:0 auto;padding:var(--space-lg)}@media(max-width:640px){.app-nav{padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.app-main{padding:var(--space-md)}}.update-prompt{position:fixed;left:50%;bottom:var(--space-lg);transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);max-width:calc(100vw - var(--space-lg) * 2);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.update-prompt>p{margin:0;font-weight:600}.popover-content,.menu-content{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-sm);max-width:min(92vw,360px);z-index:30}.menu-item{display:flex;align-items:center;min-height:var(--touch-target);padding:0 var(--space-md);border-radius:var(--radius-sm);cursor:pointer;outline:none}.menu-item[data-highlighted]{background:var(--color-surface)}.menu-item[data-disabled]{color:var(--color-text-muted);cursor:default}.auth-page{min-height:100vh;max-width:420px;margin:0 auto;padding:var(--space-xl) var(--space-md);display:flex;flex-direction:column;justify-content:center;gap:var(--space-md)}.auth-page>h1{text-align:center;letter-spacing:-.02em}.auth-page .form{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.auth-page .form button[type=submit]{margin-top:var(--space-xs);min-height:var(--touch-target);background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-text);font-size:var(--text-body)}.auth-page .form button[type=submit]:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.auth-page .form [role=alert]{padding:var(--space-sm) 10px;border-radius:var(--radius-sm);background:var(--color-danger-soft);border:1px solid var(--color-danger)}.auth-page>p{text-align:center;font-size:var(--text-caption)}.recipes-page{display:flex;flex-direction:column;gap:var(--space-md)}.recipes-page>input{width:100%;min-height:var(--touch-target);font-size:var(--text-body-large);padding:10px var(--space-md);border-radius:var(--radius-md)}.filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.filter-row select{margin-left:auto}.ingredient-filters{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:var(--space-sm) var(--space-md);padding:var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ingredient-filters>.muted{grid-column:1;align-self:center;min-height:38px;display:flex;align-items:center;font-size:var(--text-caption);font-weight:600;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}.ingredient-filters>.ingredient-picker{grid-column:2}.ingredient-filters>.chips-row{grid-column:2}.chips-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.chips-row:empty{display:none}.ingredient-picker{position:relative}.ingredient-picker>input{width:100%}.ingredient-picker-results{position:absolute;z-index:30;top:calc(100% + var(--space-xs));left:0;right:0;margin:0;padding:var(--space-xs);list-style:none;max-height:280px;overflow-y:auto;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.ingredient-picker-results>li>button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:var(--radius-sm);font-weight:500}.ingredient-picker-results>li>button:hover:not(:disabled){background:var(--color-tag-background);color:var(--color-tag-text);border-color:transparent}.ingredient-create{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm);border-top:1px solid var(--color-border)}.category-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.category-row>button{padding:var(--space-xs) var(--space-sm);min-height:30px;font-size:var(--text-caption);border-radius:var(--radius-pill)}.category-row>button[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-text)}.recipe-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-md)}.recipe-list>p{grid-column:1 / -1;padding:var(--space-xl) var(--space-md);text-align:center;color:var(--color-text-muted);background:var(--color-surface-raised);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.recipe-card{position:relative;display:flex;flex-direction:column;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition),border-color var(--transition),transform var(--transition)}.recipe-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-text-muted);transform:translateY(-2px)}.recipe-card-link{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none}.recipe-card-thumb{aspect-ratio:4 / 3;background:var(--color-surface);border-bottom:1px solid var(--color-border);overflow:hidden}.recipe-card-thumb>img{width:100%;height:100%;object-fit:cover}.recipe-card-body{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md)}.recipe-card-body>h3{font-family:var(--font-serif);font-weight:560;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.favorite-heart{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;min-height:0;padding:0;font-size:var(--text-body-large);line-height:1;color:var(--color-text-muted);border-radius:var(--radius-pill)}.favorite-heart[aria-pressed=true]{color:var(--color-danger)}.favorite-heart:hover:not(:disabled){color:var(--color-danger);border-color:var(--color-danger)}.recipe-card>.favorite-heart{position:absolute;top:var(--space-sm);right:var(--space-sm);background:var(--color-surface-raised);box-shadow:var(--shadow-sm)}.recipe-card-tags{padding:0 var(--space-md) var(--space-md);margin-top:calc(-1 * var(--space-xs))}[data-testid=recipes-scroll-sentinel]{height:1px}[data-testid=recipes-loading-more]{padding:var(--space-md);text-align:center;color:var(--color-text-muted)}@media(max-width:640px){.ingredient-filters{grid-template-columns:1fr}.ingredient-filters>.muted,.ingredient-filters>.ingredient-picker,.ingredient-filters>.chips-row{grid-column:1}.ingredient-filters>.muted{min-height:0}.filter-row select{margin-left:0;width:100%}.favorite-heart{width:var(--touch-target);height:var(--touch-target)}}.recipe-detail{max-width:var(--content-width-narrow);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-md)}.recipe-detail>h2{margin-top:var(--space-sm);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}.recipe-detail-hero{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border);background:var(--color-surface-raised)}.recipe-detail-hero>img{width:100%;max-height:420px;object-fit:cover}.recipe-detail-title-row{display:flex;align-items:center;gap:var(--space-sm)}.recipe-detail-title-row>h1{flex:1;min-width:0}.recipe-detail-title-row>a{padding:var(--space-sm) var(--space-md);min-height:38px;display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-text);font-weight:600;text-decoration:none;transition:background var(--transition-fast),border-color var(--transition-fast)}.recipe-detail-title-row>a:hover{background:var(--color-surface);border-color:var(--color-primary);color:var(--color-primary)}.serving-scaler{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--space-sm);padding:var(--space-xs);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-pill)}.serving-scaler>button{width:36px;height:36px;min-height:0;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);font-size:var(--text-body-large);line-height:1}.serving-scaler>span{min-width:96px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}.ingredient-list{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ingredient-group-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:var(--space-xs)}.ingredient-list ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}.ingredient-line{padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.ingredient-line:last-child{border-bottom:0}.quantity-text{position:relative;display:inline-block}.quantity-value{padding:1px var(--space-xs);min-height:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-weight:700;font-variant-numeric:tabular-nums;text-decoration:underline dotted var(--color-text-muted);text-underline-offset:3px}.quantity-value:hover:not(:disabled){background:var(--color-tag-background);color:var(--color-tag-text);border-color:transparent}.quantity-swap-sheet{position:absolute;z-index:25;top:calc(100% + var(--space-xs));left:0;display:flex;flex-direction:column;gap:2px;min-width:160px;padding:var(--space-sm);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--text-caption);font-weight:600;color:var(--color-text);white-space:nowrap}.step-list{display:flex;flex-direction:column;gap:var(--space-lg)}.step-lane{display:flex;flex-direction:column;gap:var(--space-sm)}.lane-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary)}.lane-label:empty{display:none}.step-lane ol{margin:0;padding:0;list-style:none;counter-reset:step;display:flex;flex-direction:column;gap:var(--space-sm)}.step{counter-increment:step;position:relative;display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-md) var(--space-md) calc(var(--space-xl) + var(--space-md));background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.step:before{content:counter(step);position:absolute;left:var(--space-md);top:var(--space-md);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);background:var(--color-tag-background);color:var(--color-tag-text);font-size:var(--text-caption);font-weight:700;font-variant-numeric:tabular-nums}.step-after{display:block;font-size:var(--text-caption);color:var(--color-text-muted);font-style:italic}.step-badges{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.step-badges:empty{display:none}.version-history{display:flex;flex-direction:column;gap:var(--space-sm)}.version-history-list{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.version-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-border)}.version-row:last-of-type{border-bottom:none}.version-label{flex:1 1 auto;min-width:0;font-weight:600}@media(max-width:640px){.recipe-detail-title-row{flex-wrap:wrap}.ingredient-list{padding:var(--space-md)}.quantity-swap-sheet{left:auto;right:0}}.recipe-editor-page{max-width:var(--content-width);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-md)}.recipe-editor-page>h2{margin-top:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}.line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.editor-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md);padding:var(--space-lg);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.editor-meta-lead>.field:nth-child(1),.editor-meta-lead>.field:nth-child(3){grid-column:1 / -1}.editor-meta-lead>.field:nth-child(2){grid-column:span 2}.editor-meta-lead>.field:nth-child(1) input{font-size:var(--text-title);font-weight:650;min-height:var(--touch-target)}.editor-details-toggle{display:block;width:100%;text-align:left;padding:var(--space-md);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-body);font-weight:650;min-height:var(--touch-target);cursor:pointer}.editor-details-toggle:hover{background:var(--color-surface-raised)}[data-testid=editor-details]{display:grid;gap:var(--space-md)}.tag-editor{display:flex;flex-direction:column;gap:var(--space-sm)}.tags-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.tags-row:empty{display:none}.tag-add-row{display:flex;gap:var(--space-sm)}.tag-add-row>input{flex:1 1 220px;max-width:320px}.hero-photo-slot{display:flex;flex-direction:column;gap:var(--space-sm);align-items:flex-start}.hero-photo-dropzone{width:100%;max-width:420px;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md);text-align:center;color:var(--color-text-muted);background:var(--color-surface-raised);border:2px dashed var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition),background var(--transition)}.hero-photo-dropzone.drag-over{border-color:var(--color-primary);background:var(--color-tag-background);color:var(--color-tag-text)}.hero-photo-dropzone>img{max-height:260px;border-radius:var(--radius-sm);object-fit:cover}.hero-photo-actions{display:flex;gap:var(--space-sm)}.ingredient-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ingredient-row+.ingredient-row{margin-top:calc(var(--space-xs) * -1 + var(--space-sm))}.ingredient-row-name{flex:1 1 160px;font-weight:600;min-width:0}.ingredient-row>input:nth-of-type(1){flex:0 0 88px;width:88px;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.ingredient-row>select{flex:0 0 auto;max-width:150px}.ingredient-row>input:nth-of-type(2),.ingredient-row>input:nth-of-type(3){flex:1 1 200px;font-size:var(--text-caption)}.ingredient-row>[role=alert]{flex:1 1 100%}.drag-handle,[data-testid^=ingredient-move-],[data-testid^=step-move-],[data-testid^=step-lane-prev-],[data-testid^=step-lane-next-]{width:34px;min-height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--color-text-muted);font-size:var(--text-caption)}.drag-handle{cursor:grab;touch-action:none;font-size:var(--text-body)}.drag-handle:active{cursor:grabbing}.step-reorder{display:inline-flex;align-items:center;gap:var(--space-xs)}.lane-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:var(--space-md)}.lane{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.lane>h3{margin:0}.lane-name-input{width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-caption);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary);min-height:34px}.lane-name-input::placeholder{color:var(--color-text-muted);font-weight:700}.lane-name-input:hover:not(:disabled){border-color:var(--color-border);background:var(--color-surface-raised)}.lane-name-input:focus-visible{background:var(--color-background);border-color:var(--color-primary)}.step-row{position:relative;display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.step-row>.step-index{position:absolute;left:var(--space-md);top:var(--space-md);width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);background:var(--color-tag-background);color:var(--color-tag-text);font-size:var(--text-caption);font-weight:700}.step-row>textarea{margin-left:calc(24px + var(--space-sm));width:calc(100% - 24px - var(--space-sm));font-size:var(--text-body)}.step-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.step-line>input{flex:0 0 96px;width:96px;min-width:0;text-align:right;font-variant-numeric:tabular-nums}.step-dependencies{padding-top:var(--space-sm);border-top:1px dashed var(--color-border)}.step-dependencies>span:first-child{font-size:var(--text-caption);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-right:var(--space-xs)}.step-dependencies>select{font-size:var(--text-caption);min-height:34px;max-width:240px}.step-line>[data-testid^=step-lane-label-]{font-size:var(--text-caption);font-weight:600;color:var(--color-text-muted);min-width:84px;text-align:center}[data-testid^=step-done-]{margin-left:auto}[data-testid^=step-remove-],[data-testid^=ingredient-remove-]{color:var(--color-danger);font-size:var(--text-caption)}[data-testid^=step-remove-]:hover:not(:disabled),[data-testid^=ingredient-remove-]:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}.step-row-collapsed{flex-direction:row;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-surface);box-shadow:none}.step-row-collapsed:hover{border-color:var(--color-text-muted)}.step-summary{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);text-align:left;background:transparent;border:0;font-weight:500}.step-summary:hover:not(:disabled){background:transparent;border-color:transparent}.step-summary>.step-index{flex:0 0 auto;font-weight:700;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.step-summary-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-summary>.step-badges{flex:0 0 auto}.recipe-editor-draft-prompt{max-width:520px;margin:var(--space-xl) auto;display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}@media(max-width:640px){.editor-meta{grid-template-columns:repeat(2,1fr);padding:var(--space-md)}.editor-meta-lead>.field:nth-child(2){grid-column:1 / -1}.ingredient-row>input:nth-of-type(2),.ingredient-row>input:nth-of-type(3){flex:1 1 100%}.step-row>textarea{margin-left:0;width:100%}.step-row>.step-index{position:static}}.cook-log-page{display:flex;flex-direction:column;gap:var(--space-md)}.cook-log-days{display:flex;flex-direction:column;gap:var(--space-lg)}.cook-log-day-heading{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.cook-log-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-md)}.cook-log-card{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm);text-align:left;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.cook-log-card:hover:not(:disabled){border-color:var(--color-text-muted);background:var(--color-surface-raised)}.cook-log-thumb{width:64px;height:64px;flex-shrink:0;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface)}.cook-log-thumb-placeholder{background:var(--color-surface);border:1px dashed var(--color-border)}.cook-log-card-body{display:flex;flex-direction:column;gap:2px;min-width:0}.cook-log-card-body>h3{font-family:var(--font-serif);font-weight:560;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cook-log-card-row{display:flex;align-items:center;gap:var(--space-sm);margin-top:2px}.cook-log-note-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--color-surface);border:1px solid var(--color-border);font-size:var(--text-caption);font-weight:700;color:var(--color-text-muted)}.rating-stars{display:inline-flex;align-items:center;gap:2px}.rating-star{padding:0;min-height:0;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;font-size:var(--text-body-large);color:var(--color-border)}.rating-star-filled{color:var(--color-warning)}.rating-star:disabled{opacity:1;cursor:default}.cook-detail{max-width:var(--content-width-narrow);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-sm)}.cook-detail-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.cook-detail-verdict-row{display:flex;gap:var(--space-sm)}.cook-detail-verdict-row>button[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-text)}.cook-detail-photos{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.cook-detail-photos img{width:96px;height:96px;border-radius:var(--radius-sm);object-fit:cover}.cook-detail-notes{display:flex;flex-direction:column;gap:var(--space-sm)}.cook-detail-note{padding:var(--space-sm) var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-serif);font-style:italic}.pantry-page{max-width:var(--content-width-narrow);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-lg)}.pantry-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm)}.pantry-error{color:var(--color-danger);background:var(--color-danger-soft);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm)}.pantry-empty{color:var(--color-text-muted);max-width:46ch}.pantry-group{display:flex;flex-direction:column;gap:var(--space-sm)}.pantry-group>h2{font-size:var(--text-caption);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0}.pantry-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}.pantry-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-border)}.pantry-name{flex:1;font-size:var(--text-body-large)}.pantry-status{flex:0 0 auto;min-width:4.5rem;min-height:var(--touch-target);border-radius:var(--radius-md);border:2px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);font-weight:700;font-size:var(--text-body);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast)}.pantry-status-ok{border-color:var(--color-border);color:var(--color-text-muted)}.pantry-status-low{background:var(--color-warning-soft);border-color:var(--color-warning);color:var(--color-warning)}.pantry-status-out{background:var(--color-danger-soft);border-color:var(--color-danger);color:var(--color-danger)}.pantry-staple,.pantry-remove{flex:0 0 auto;min-width:var(--touch-target);min-height:var(--touch-target);border:none;background:none;color:var(--color-text-muted);font-size:var(--text-body-large);cursor:pointer}.pantry-staple[aria-pressed=true]{color:var(--color-primary)}.pantry-remove:hover{color:var(--color-danger)}.pantry-remove-confirm{flex:0 0 auto;min-height:var(--touch-target);padding:0 var(--space-md);border:1px solid var(--color-danger);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger);font-weight:700;cursor:pointer}.stock-picker{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);max-height:70vh;overflow-y:auto}.stock-picker-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm)}.stock-picker-head>h2{margin:0;font-size:var(--text-title)}.stock-picker>input{min-height:var(--touch-target);padding:0 var(--space-sm)}.stock-picker-group{display:flex;flex-direction:column;gap:var(--space-xs)}.stock-picker-group>h3{margin:0;font-size:var(--text-caption);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.stock-picker-list{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:2px}.stock-picker-list label{display:flex;align-items:center;gap:var(--space-sm);min-height:var(--touch-target);cursor:pointer}.plan-page{display:flex;flex-direction:column;gap:var(--space-lg)}.plan-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.plan-head h1{margin:0}.plan-week-nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.plan-week-nav>[data-testid=plan-week-prev],.plan-week-nav>[data-testid=plan-week-next]{min-width:var(--touch-target)}.plan-error{color:var(--color-danger);background:var(--color-danger-soft);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm)}.plan-empty{color:var(--color-text-muted);max-width:52ch}.plan-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-sm);align-items:start}@media(max-width:900px){.plan-grid{grid-template-columns:minmax(0,1fr)}}.plan-day{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:0}.plan-day[data-today=true]{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.plan-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-xs)}.plan-day-head h2{margin:0;font-size:var(--text-body-large)}.plan-day-head>.caption{margin:0;color:var(--color-text-muted)}.plan-day-leads{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}.plan-slot{display:flex;flex-direction:column;gap:var(--space-xs)}.plan-slot-heading{margin:0;font-size:var(--text-caption);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.plan-slot-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs);min-height:var(--space-md);border-radius:var(--radius-sm)}.plan-slot-list.is-over{outline:2px dashed var(--color-primary);outline-offset:2px}.plan-slot-latent .plan-slot-list{min-height:var(--space-xs)}.plan-entry{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:0}.plan-entry.is-dragging{opacity:.5}.plan-entry-head{display:flex;align-items:flex-start;gap:var(--space-xs)}.plan-entry-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;align-items:flex-start}.plan-entry-title{font-family:var(--font-serif);font-size:var(--text-body);font-weight:560;color:var(--color-text);margin:0;overflow-wrap:anywhere}.plan-entry-sentence{font-family:inherit;font-weight:600}.plan-entry-hole{margin:0;color:var(--color-text-muted);font-style:italic}.plan-entry-note{color:var(--color-text-muted);overflow-wrap:anywhere}[data-testid^=plan-doahead-],.plan-day-leads .tag-do-ahead{white-space:normal;max-width:100%;overflow-wrap:anywhere}.plan-entry-grip,.plan-entry-menu{flex:0 0 auto;min-width:var(--touch-target);min-height:var(--touch-target);border:none;background:none;color:var(--color-text-muted);font-size:var(--text-body-large);cursor:pointer}.plan-entry-grip{cursor:grab;touch-action:none}.plan-entry-panel{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px solid var(--color-border)}.plan-day-buttons,.plan-slot-chips{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.plan-remove-confirm{align-self:flex-start;min-height:var(--touch-target);padding:0 var(--space-md);border:1px solid var(--color-danger);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger);font-weight:700;cursor:pointer}.plan-add-open{align-self:flex-start;min-height:var(--touch-target);padding:0 var(--space-sm);border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:none;color:var(--color-text-muted);font-weight:600;cursor:pointer}.plan-add-open:hover{color:var(--color-primary);border-color:var(--color-primary)}.plan-add-panel{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.plan-add-field{display:flex;flex-direction:column;gap:2px;min-width:0}.plan-add-field>span{font-size:var(--text-caption);color:var(--color-text-muted)}.plan-add-field>input{min-height:var(--touch-target);padding:0 var(--space-sm);min-width:0;width:100%}.plan-add-actions{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.plan-add-selected{margin:0;font-weight:600}.plan-picker{display:flex;flex-direction:column;gap:2px;min-width:0}.plan-picker-label{font-size:var(--text-caption);color:var(--color-text-muted)}.plan-picker>input{min-height:var(--touch-target);padding:0 var(--space-sm);min-width:0;width:100%}.plan-picker-results{margin:0;padding:0;list-style:none;max-height:12rem;overflow-y:auto}.plan-picker-result{display:block;width:100%;text-align:left;min-height:var(--touch-target);padding:0 var(--space-xs);border:none;background:none;color:var(--color-text);cursor:pointer;border-radius:var(--radius-sm)}.plan-picker-result:hover{background:var(--color-surface-raised)}.plan-for-icon{min-width:var(--touch-target);min-height:var(--touch-target);border:none;background:none;color:var(--color-text-muted);font-size:var(--text-body-large);cursor:pointer}.plan-for-icon:hover{color:var(--color-primary)}.plan-for{display:flex;flex-direction:column;gap:var(--space-sm);min-width:16rem;max-width:22rem}.plan-for-heading{margin:0;font-weight:700}.plan-for-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:var(--space-xs)}.plan-for-day{display:flex;flex-direction:column;align-items:center;gap:0;min-height:var(--touch-target)}.plan-for-confirmation{margin:0;color:var(--color-primary);font-weight:600}.plan-for-error{margin:0;color:var(--color-danger)}.recipe-card>.plan-for-icon{position:absolute;top:var(--space-sm);right:calc(38px + var(--space-sm) + var(--space-xs));display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:0;min-height:0;border-radius:var(--radius-pill);background:var(--color-surface-raised);box-shadow:var(--shadow-sm)}.plan-options{display:flex;flex-direction:column;gap:var(--space-sm);max-width:20rem}.plan-options-heading{margin:0;font-weight:700}.settings-page{max-width:var(--content-width-narrow);margin:0 auto;display:flex;flex-direction:column;gap:var(--space-lg)}.settings-section{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.settings-identity-name,.settings-household-name{font-size:var(--text-body-large);font-weight:650}.settings-members{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}.settings-invite{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.settings-invite-code{font-size:var(--text-title);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.06em}.settings-invite-code-fallback{font-size:var(--text-body-large);font-weight:700;letter-spacing:.06em;text-align:center;min-width:160px}.settings-sign-out{align-self:flex-start;color:var(--color-danger)}.settings-sign-out:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}.settings-confirm{display:flex;flex-direction:column;gap:var(--space-sm)}.settings-confirm-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.settings-danger{border-color:var(--color-danger)}.settings-danger>h2{color:var(--color-danger)}.settings-danger>button{align-self:flex-start}.settings-rename{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-sm)}.settings-rename .field{flex:1 1 200px;min-width:0}.settings-members li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);padding:var(--space-xs) 0}.settings-member-actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-left:auto}.settings-member-actions button,.settings-invite-list button{min-height:36px}.settings-invite-list{display:flex;flex-direction:column;gap:var(--space-sm)}.settings-invite-list ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.settings-invite-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.settings-invite-list-code{font-weight:700;letter-spacing:.06em;font-variant-numeric:tabular-nums}.settings-invite-status-used,.settings-invite-status-expired,.settings-invite-status-revoked{background:var(--color-surface);color:var(--color-text-muted)}.favorites-manager{display:flex;flex-direction:column;gap:var(--space-sm)}.favorites-manager-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.favorites-manager-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0}.favorites-manager-name{flex:1;font-weight:600}.favorites-manager-create{display:flex;gap:var(--space-sm)}.lists-caret{position:relative}.add-to-list-caret{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md)}.add-to-list-options{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.add-to-list-options label{display:flex;align-items:center;gap:var(--space-sm);text-transform:none;font-weight:500;color:var(--color-text)}.settings-theme-options{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.settings-theme-options label{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:var(--space-sm);min-height:var(--touch-target);text-transform:none;font-weight:500;color:var(--color-text)}.settings-theme-options label .muted{grid-column:2;font-size:var(--text-caption)}.settings-theme-label{font-size:var(--text-body)}.legal-page{max-width:var(--content-width-narrow);margin:0 auto;padding:var(--space-xl) var(--space-lg) var(--space-xl);color:var(--color-text);line-height:1.6}.legal-page h1{font-size:var(--text-large-title);line-height:1.2;margin-bottom:var(--space-sm)}.legal-page h2{font-size:var(--text-title);line-height:1.3;margin-top:var(--space-xl);margin-bottom:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.legal-page p,.legal-page li{font-size:var(--text-body)}.legal-page p{margin-bottom:var(--space-md)}.legal-page ul,.legal-page ol{margin:0 0 var(--space-md);padding-left:var(--space-lg)}.legal-page li{margin-bottom:var(--space-sm)}.legal-meta{color:var(--color-text-muted);font-size:var(--text-caption)}.legal-contact-block{padding:var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-body-large);overflow-wrap:anywhere}.legal-cta a{display:inline-block;min-height:var(--touch-target);padding:12px var(--space-lg);background:var(--color-primary);color:var(--color-primary-text);border-radius:var(--radius-md);font-weight:600;text-decoration:none;transition:background var(--transition-fast)}.legal-cta a:hover{background:var(--color-primary-hover)}.legal-footer-links{margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--color-border);color:var(--color-text-muted)}.site-footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-lg);margin-top:auto;border-top:1px solid var(--color-border);background:var(--color-surface)}.site-footer a{min-height:var(--touch-target);display:inline-flex;align-items:center;padding:0 var(--space-sm);color:var(--color-text-muted);font-size:var(--text-caption);text-decoration:none;white-space:nowrap}.site-footer a:hover,.site-footer a:focus-visible{color:var(--color-text);text-decoration:underline}@media print{.app-nav,.skip-link,.favorite-heart,.lists-caret,.add-to-list-caret,.recipe-detail-hero,.serving-scaler>button,.quantity-swap-sheet,[data-testid=recipe-detail-edit],[data-testid=recipe-detail-cook-on-phone],[data-testid=recipe-detail-cooked-count],[data-testid=recipe-detail-print]{display:none!important}body{background:#fff;color:#000}.recipe-detail{max-width:none}.step,.ingredient-list,.recipe-card,.cook-log-card{box-shadow:none;border:1px solid #ccc}.step:before{background:none;border:1px solid #000}a{color:inherit;text-decoration:none}.step-lane{break-inside:avoid}}
