/* Immersive recipe sheet: independently reconstructed from Pass 01 observations. */
.detail-page{background:var(--surface-elevated);position:relative;margin:32px auto 0;max-width:910px;border-radius:var(--radius-surface-outer) var(--radius-surface-outer) 0 0;min-height:calc(100dvh - 32px);padding:0 var(--detail-content-inline) calc(35px + env(safe-area-inset-bottom,0px));box-shadow:0 -12px 35px rgba(51,35,22,.12)}
.detail-actions{height:52px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.detail-actions button{display:grid;place-items:center;height:42px;width:42px;border:1px solid var(--outline);background:var(--surface-elevated);color:var(--copper);border-radius:12px}
.detail-header-label{font:600 var(--type-small) var(--font-ui);color:var(--text-secondary)}
/* Full-width recipe photography; centered editorial identity prevents a side-heavy hero. */
.detail-intro{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:0;padding-bottom:var(--detail-identity-bottom-gap);border-bottom:1px solid var(--outline-faint)}
.detail-image{position:relative;width:100%;min-width:0;aspect-ratio:var(--detail-hero-ratio);max-height:var(--detail-hero-max-height);background:var(--surface-warm-strong);border:1px solid var(--outline);border-radius:var(--radius-surface-inner);overflow:hidden;display:grid;place-items:center}
.detail-image img{width:100%;height:100%;object-fit:cover}
.detail-art-favorite{position:absolute;left:10px;top:10px;border:1px solid var(--outline);border-radius:11px;background:var(--surface-elevated);color:var(--copper);height:34px;width:34px;display:grid;place-items:center;box-shadow:0 2px 8px #54392714}.detail-back-link{position:fixed;left:0;right:0;bottom:0;z-index:25;width:100%;max-width:910px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:8px;min-height:calc(52px + env(safe-area-inset-bottom,0px));padding:9px 16px calc(9px + env(safe-area-inset-bottom,0px));background:var(--surface-elevated);border:0;border-top:1px solid var(--outline-faint);border-radius:0;color:var(--text-secondary);font:500 var(--type-support)/1.5 var(--font-ui);text-align:center;box-shadow:0 -5px 12px rgba(61,37,29,.025)}.detail-heading{min-width:0;width:100%;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;text-align:center;gap:2px;padding:var(--detail-identity-top-gap) 4px 3px}
.detail-heading h1{font:700 var(--type-recipe-title)/1.34 var(--head);margin:2px 0 0;letter-spacing:-.03em;overflow-wrap:anywhere}
.detail-tag{font:600 var(--type-meta)/1.45 var(--font-ui);color:var(--copper)}
/* Detail metadata remains one calm row. Dividers separate values without changing card metadata. */
.detail-meta{display:flex;flex-wrap:nowrap;align-items:center;justify-content:center;gap:clamp(4px,1.5vw,12px);min-width:0;width:100%;margin:0;padding-top:var(--detail-identity-meta-gap);border-top:0;font:400 var(--detail-meta-size)/1.65 var(--font-ui);color:var(--text-secondary);white-space:nowrap}
.detail-meta-part{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.detail-meta-part+.detail-meta-part::before{content:"";display:block;flex:none;width:1px;height:12px;margin-right:clamp(2px,.8vw,5px);background:var(--outline-strong)}
.detail-meta-part .glyph{color:var(--copper)}
/* All three facts share the full-width metadata track, including 320px phones. */
@media(max-width:359px){.detail-meta{font-size:var(--type-micro);gap:3px}.detail-meta-part{gap:3px}.detail-meta-part+.detail-meta-part::before{margin-right:2px}}


.detail-right button{display:inline-flex;align-items:center;gap:4px;color:var(--copper);background:var(--white);border:1px solid var(--outline);border-radius:10px;min-height:29px;padding:3px 8px;font-size:var(--type-small)}
/* Detail sections share one heading placement and typography contract. */
.detail-ingredients,.detail-method,.detail-cooking-section{margin-top:20px}
.detail-cooking-section{margin-top:18px}
.detail-cooking-entry{border:1px solid var(--outline);border-radius:var(--radius-surface-inner);padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.detail-cooking-description{flex:1 1 auto;min-width:0;font:400 var(--detail-support-size)/1.6 var(--font-ui);color:var(--text-secondary);overflow-wrap:break-word}
.detail-cooking-entry button{flex:none;border:0;color:white;background:var(--copper);border-radius:10px;min-height:44px;padding:10px 13px;display:flex;align-items:center;gap:6px;font:600 var(--type-control)/1.5 var(--font-ui)}
.detail-method .detail-section-heading small{font:400 var(--detail-support-size)/1.5 var(--font-ui);color:var(--muted)}
.detail-ingredients-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;min-height:44px}
.detail-ingredients-header h2{margin:0;flex:1 1 auto;min-width:0}
.detail-serving{display:inline-flex;align-items:center;justify-content:center;flex:none;gap:0;min-height:40px;background:var(--surface-warm);border:1px solid var(--outline);border-radius:999px;padding:1px 3px}
.detail-serving button{flex:none;width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--copper)}
.detail-serving-count{font:600 var(--type-ui-body)/1.4 var(--font-ui);min-width:42px;text-align:center;white-space:nowrap;font-variant-numeric:normal}
.detail-serving button:focus-visible{outline:2px solid var(--copper);outline-offset:-2px}
.detail-ingredient-count{font:400 var(--detail-support-size)/1.5 var(--font-ui);color:var(--muted);white-space:nowrap}
.detail-ingredients-card{background:var(--surface-elevated);border:1px solid var(--outline);border-radius:var(--radius-surface-inner);overflow:hidden}
.detail-ingredients-card .ingredients{border:0;border-radius:0;padding:2px 14px}
.detail-ingredients>.detail-allergens{display:block;margin:10px 0 0;padding:11px 14px;border:1px solid var(--outline);border-radius:12px;background:var(--surface-warm);font:400 var(--detail-note-size)/1.65 var(--font-ui);color:var(--text-secondary)}
.detail-ingredients-footer{border-top:1px solid var(--outline-faint);padding:12px 14px 14px}
.detail-ingredients-footer .detail-shop-add{margin:0}
.ingredients{background:var(--white);border:1px solid var(--outline);border-radius:12px;padding:2px 14px}
.ingredient-line{min-height:48px;padding:9px 0;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--outline-faint);font:400 var(--type-list)/1.65 var(--font-ui)}
.ingredient-line:last-child{border-bottom:0}
.ingredient-line input{accent-color:var(--copper);width:18px;height:18px;flex:none}
.ingredient-line.done>span:nth-child(2){text-decoration:line-through;opacity:.64}
.ingredient-amount{margin-left:auto;color:var(--text-secondary);white-space:nowrap;font-size:var(--detail-support-size)}
.outline-full,.primary-full{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--outline);background:var(--surface-warm);color:var(--copper);border-radius:13px;width:100%;min-height:44px;margin-top:14px;padding:10px;font:600 var(--type-ui-body)/1.5 var(--font-ui)}
.primary-full{background:var(--copper);color:var(--white);border-color:var(--copper)}
.steps{border:1px solid var(--outline);background:var(--white);border-radius:12px;padding:0 14px}
.step{display:flex;gap:13px;padding:12px 0;align-items:flex-start;border-bottom:1px solid var(--outline-faint)}
.step:last-child{border-bottom:0}
.step-index{background:var(--accent-subtle);border-radius:8px;flex:none;width:27px;height:27px;display:grid;place-items:center;font:700 var(--type-support) var(--font-ui);color:var(--copper)}
.step p{font:400 var(--detail-body-size)/1.75 var(--font-ui)}
.recipe-note{font:400 var(--detail-note-size)/1.75 var(--font-ui);color:var(--muted);background:var(--surface-warm);padding:12px;border-radius:10px;margin:10px 0}
@media(min-width:700px){.detail-page{--detail-content-inline:28px;margin-top:26px;padding:0 var(--detail-content-inline) 45px;border-radius:var(--radius-surface-outer)}.detail-presets button{width:100%}}

.cook-page{max-width:660px;margin:auto}.cook-page h1{font-size:23px;margin:12px 0}.cook-progress{color:var(--copper);font-size:var(--type-ui-body)}.cook-step{border:1px solid var(--outline);border-radius:22px;background:var(--white);padding:24px 20px;margin:22px 0;min-height:245px}.cook-step p{font:400 16px/2 var(--font-ui);margin-top:18px}.timer-config{padding:19px;background:var(--surface-warm);border:1px solid var(--outline);border-radius:18px}.timer-config h2{font-size:18px}.timer-presets{display:flex;gap:8px;margin-top:14px}.timer-presets button{flex:1;border:1px solid var(--outline);background:var(--white);color:var(--copper);border-radius:13px;padding:12px 6px}.custom-duration{display:flex;align-items:center;gap:8px;margin-top:14px}.custom-duration input{width:90px;min-width:0;border:1px solid var(--control-outline);border-radius:10px;padding:8px;background:var(--white)}.custom-duration button{border:0;background:var(--copper);color:white;border-radius:10px;padding:9px}.cook-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:25px 0}.cook-controls button{display:flex;align-items:center;justify-content:center;gap:5px;background:var(--surface-warm);border:1px solid var(--outline);border-radius:13px;min-height:47px;color:var(--copper)}.cook-controls button:last-child{background:var(--copper);color:white;border-color:var(--copper)}
.modal-layer{position:fixed;inset:0;display:grid;place-items:center;z-index:var(--layer-overlay);padding:14px max(12px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px));overscroll-behavior:contain}.modal-scrim{position:absolute;inset:0;border:0;background:rgba(50,35,26,.47);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.sheet{position:relative;z-index:1;background:var(--surface-elevated);border:1px solid var(--outline);border-radius:21px;max-height:calc(var(--sheet-viewport-height) * .85);overflow:auto;width:min(100%,370px);box-shadow:0 25px 60px #3d251d22}.sheet-top{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--outline-faint);padding:18px}.sheet-top h2{font-size:var(--type-sheet-title)}.sheet-top small{color:var(--copper);font-size:var(--type-micro)}.sheet-top button{border:1px solid var(--outline);border-radius:12px;background:var(--surface-warm);color:var(--text-secondary);width:42px;height:42px;display:grid;place-items:center}.sheet-content{padding:19px 20px 22px}.sheet-content p{font:400 var(--type-ui-body)/1.8 var(--font-ui);margin:10px 0}.sheet-content label{display:flex;flex-direction:column;gap:7px;margin:10px 0;font-size:var(--type-form-label)}.sheet-content input:not([type=checkbox]),.sheet-content select,.sheet-content textarea{border:1px solid var(--control-outline);border-radius:12px;background:var(--white);min-height:41px;padding:10px;color:var(--ink);width:100%}.sheet-content textarea{min-height:92px;resize:vertical}.sheet-content .search-input{flex-direction:row;align-items:center;border:1px solid var(--outline);border-radius:12px;padding:0 10px;color:var(--copper)}.search-input input{border:0!important;outline:0;min-width:0}.search-result{background:var(--white);border-bottom:1px solid var(--outline-faint);padding:11px 0;display:flex;align-items:center;gap:7px;width:100%;border-top:0;border-left:0;border-right:0;text-align:left}.search-result small{color:var(--muted);margin-left:auto;white-space:nowrap}.restore-label{display:flex!important;flex-direction:row!important;justify-content:center;align-items:center;border:1px solid var(--outline);border-radius:12px;padding:12px;background:var(--white);color:var(--copper);font-weight:600}.help-text{font-size:var(--type-small)!important;color:var(--muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.editor-form{max-height:calc(var(--sheet-viewport-height) * .70);overflow:auto}.timer-inner{text-align:center}.timer-digits{display:block;font:700 39px/1.3 var(--font-ui);color:var(--copper);letter-spacing:.025em}.timer-inner>p{color:var(--muted);font:400 var(--type-support)/1.5 var(--font-ui);margin:12px 0 20px}.timer-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.timer-actions button{height:46px;border-radius:12px;font-weight:600;border:1px solid var(--outline)}.timer-actions .primary{background:var(--copper);border-color:var(--copper);color:var(--white)}.timer-actions .secondary{background:var(--surface-warm);color:var(--text-secondary)}.timer-inner>.outline-full{margin-top:10px}.timer-inner>small{display:block;color:var(--muted);margin-top:20px;font:400 var(--type-micro)/1.6 var(--font-ui)}.complete-icon{margin:auto;background:var(--surface-tint);color:var(--copper);border-radius:100%;width:65px;height:65px;display:grid;place-items:center}.complete-icon~h2{text-align:center;margin-top:15px}.menu-layer{display:block;padding:0}.menu-layer .modal-scrim{background:transparent;backdrop-filter:none}.menu-pop{animation:rb-menu-enter var(--motion-medium) var(--motion-ease) both;transform-origin:top right;position:absolute;right:max(16px,calc((100vw - 1018px)/2));top:calc(70px + var(--safe-top));z-index:1;width:min(calc(100vw - 32px),280px);border-radius:18px;background:var(--white);border:1px solid var(--outline);box-shadow:0 16px 40px #3a241b24;padding:10px}.menu-pop button{display:flex;align-items:center;gap:13px;border:0;background:transparent;border-radius:10px;text-align:left;width:100%;padding:13px 12px;font:500 var(--type-ui-body)/1.4 var(--font-ui)}.menu-pop button:hover{background:var(--surface-tint)}.menu-pop svg{color:var(--copper)}.menu-separator{height:1px;background:var(--outline-faint);margin:3px 10px}
@media(min-width:700px){.recipe-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hero-panel{max-width:100%}.hero-tile{width:310px;height:148px;grid-template-columns:120px 1fr}.recipe-cover{height:126px}.recipe-card{min-height:215px}}@media(max-width:360px){.hero-head h1{font-size:18px}.recipe-grid{gap:11px 9px}.recipe-meta{font-size:var(--type-meta)}.brand-title{font-size:20px}.hero-tile{width:226px}.hero-panel{padding-inline:14px}}

.detail-right{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;margin-top:7px}

/* Pass 01 independent reconstruction: structured, individually editable ingredient rows. */
.editor-sheet{width:min(100%,520px);max-height:calc(var(--sheet-viewport-height) - 48px);border-radius:20px;}
.editor-sheet .sheet-top{padding:15px 16px;}
.editor-sheet .sheet-top h2{font-size:var(--type-sheet-title);}
.editor-sheet .sheet-content{padding:12px 16px 20px;}
.editor-sheet .editor-form{max-height:calc(var(--sheet-viewport-height) - 125px);overflow-y:auto;overscroll-behavior:contain;}
.editor-sheet .editor-form label{gap:7px;font:600 var(--type-form-label)/1.5 var(--font-ui);margin:9px 0 11px;}
.editor-sheet .editor-form :is(input,select,textarea){min-height:44px;font-family:var(--font-ui);font-weight:400;line-height:1.45;}
.editor-sheet .editor-form :is(input,textarea)::placeholder{font-size:var(--type-editor-placeholder);font-weight:400;color:var(--muted);opacity:1;}
.editor-sheet .editor-form input[name="minutes"],.editor-sheet .editor-form input[name="servings"]{font:400 16px/1.45 var(--font-ui);font-variant-numeric:normal;font-feature-settings:normal;letter-spacing:0;-webkit-appearance:none;appearance:none}
.editor-sheet .editor-form textarea{min-height:110px;}
.editor-group{margin:10px 0 12px;}
.editor-group h3{font:700 var(--type-form-label)/1.5 var(--head);margin:0 0 12px;}
.ingredient-editor{display:flex;flex-direction:column;gap:7px;}
.ingredient-editor-row{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,.9fr) minmax(0,1.2fr) 40px;gap:6px;align-items:center;}
.editor-sheet .ingredient-editor-row input{width:100%;min-width:0;padding:8px 5px;height:44px;border-radius:9px;}
.editor-sheet .ingredient-editor-row input::placeholder{font-size:var(--type-support);opacity:1;}
.ingredient-editor-row button{height:42px;width:40px;border:1px solid var(--outline);border-radius:12px;background:var(--surface-warm);color:var(--copper);}
.editor-add{margin-top:10px;border:1px solid var(--outline);border-radius:11px;padding:8px 13px;background:var(--surface-warm);color:var(--copper);font:600 var(--type-control)/1.5 var(--font-ui);}
.editor-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;}
.editor-buttons button{margin:0;}
@media(min-width:700px){.editor-sheet{max-height:min(calc(var(--sheet-viewport-height) * .88),850px);}.editor-sheet .editor-form{max-height:calc(min(calc(var(--sheet-viewport-height) * .88),850px) - 72px);}}

/* Editor's mobile sheet matches Pass 01 edge-to-edge geometry. */
@media(max-width:699px){
.modal-layer:has(.editor-sheet){align-items:end;justify-items:stretch;padding:0;}
.editor-sheet{width:100%;max-height:calc(var(--sheet-viewport-height) - 50px);margin:0;border-radius:var(--radius-sheet-mobile) var(--radius-sheet-mobile) 0 0;}
.editor-sheet .editor-form{max-height:calc(var(--sheet-viewport-height) - 120px - env(safe-area-inset-bottom,0px));padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));}
}

/* Pass 05: Pass 01 search uses two-column recipe cards, not text-only results. */
.collection-breadcrumb{color:var(--text-secondary);font:400 var(--type-small)/1.6 var(--font-ui);margin:0 0 17px!important}
.collection-header{margin:6px 0 26px}
.collection-header h1{font-size:var(--type-page-title);margin-bottom:20px}
.collection-header .collection-subtitle{font:400 var(--type-support)/1.75 var(--font-ui);margin:0 0 17px}
.collection-search{margin:15px 0 12px;display:grid;grid-template-columns:minmax(0,1fr) 47px;gap:8px;min-width:0}
.collection-search .collection-search-prompt{display:flex;align-items:center;gap:10px;text-align:left;background:var(--white);border:1px solid var(--outline);border-radius:13px;padding:0 13px;min-height:47px;min-width:0;overflow:hidden;color:var(--copper);box-shadow:0 2px 5px #381f0a0d}
.collection-search-prompt .glyph{flex:none}
.collection-search-prompt input{flex:1;display:block;width:100%;min-width:0;height:45px;min-height:45px;padding:0;background:transparent;border:0;outline:0;color:var(--ink);text-overflow:ellipsis;}


.collection-search .collection-filter-prompt{background:var(--white);display:grid;place-items:center;padding:0;width:47px;min-width:0;min-height:47px;overflow:hidden;color:var(--copper)}
.collection-category-label{display:flex;align-items:center;justify-content:space-between;min-height:22px;margin-top:12px}
.collection-category-label strong{font:700 var(--type-section-title)/1.4 var(--head)}
.collection-category-label .compact-controls{gap:4px}
.collection-category-label .compact-controls button{border:1px solid var(--outline);width:31px;height:31px;color:var(--ink);background:var(--white);border-radius:6px}
.collection-header .category-row{margin-top:12px;gap:6px}
.collection-header .category-pill{padding:7px 12px;font:500 var(--type-control)/1.5 var(--font-ui);border-color:var(--outline)}
.collection-header .category-pill.active{background:var(--copper);border-color:var(--copper);color:var(--white)}
.collection-header+.catalog-section{margin-top:4px}
.collection-header+.catalog-section .catalog-line{margin-bottom:13px}
.collection-header+.catalog-section .catalog-line h2{font-size:var(--type-section-title)}
.collection-header+.catalog-section .recipe-card{border-radius:var(--radius-surface-compact);min-height:205px}
.collection-header+.catalog-section .recipe-cover{height:134px}
.collection-header+.catalog-section .heart-action{width:31px;height:31px;right:8px;top:8px;border-radius:11px}
.collection-header+.catalog-section .heart-action svg{width:17px;height:17px}
.discovery-sheet{width:min(100%,470px);border-radius:var(--radius-surface-outer);max-height:min(88dvh,710px)}
.discovery-sheet .sheet-top{border:0;padding:19px 20px 8px;align-items:flex-start}
.discovery-sheet .sheet-top h2{font-size:var(--type-sheet-title)}
.discovery-sheet .sheet-top button{border-radius:50%;width:42px;height:42px;flex:none}
.discovery-sheet .sheet-content{padding:8px 20px 21px}
.discovery-sheet .search-input{min-height:51px;gap:10px;border-radius:15px;background:var(--white)}
.discovery-sheet .search-input input{background:transparent}
.discovery-sheet .search-hint{font:400 var(--type-support)/1.6 var(--font-ui);color:var(--muted);margin:10px 1px 14px}
.discovery-sheet .search-cards{max-height:min(49dvh,390px);overflow-y:auto;overscroll-behavior:contain}
.discovery-sheet .recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.discovery-sheet .recipe-card{border-radius:var(--radius-surface-compact);min-height:199px}
.discovery-sheet .recipe-cover{height:112px}
.discovery-sheet .heart-action{width:32px;height:32px;right:7px;top:7px;border-radius:10px}
@media(max-width:699px){.modal-layer:has(.discovery-sheet){align-items:end;align-content:end;justify-items:stretch;padding:0 12px max(12px,env(safe-area-inset-bottom,0px))}.discovery-sheet{margin:auto;width:100%}}
/* Pass 01 Cooking Mode belongs inside the immersive recipe sheet. */
.cooking-detail .detail-actions{justify-content:space-between}
.cooking-screen{max-width:670px;margin:auto;padding:8px 0 24px}
.cooking-screen .cook-crumb{color:var(--copper);font:600 var(--type-small)/1.5 var(--font-ui);margin:5px 0}
.cooking-screen h2{font-size:var(--type-recipe-title);line-height:1.4;margin:0 0 8px}
.cooking-screen .cook-lede{font:400 var(--type-support)/1.8 var(--font-ui);color:var(--muted);margin:0 0 18px}
.cooking-screen .cook-progress{display:flex;align-items:center;gap:10px;margin:0 0 18px;color:var(--copper);font:600 var(--type-support) var(--font-ui)}
.cooking-screen .track{flex:1;height:6px;border-radius:6px;background:var(--surface-warm-strong);overflow:hidden}
.cooking-screen .fill{height:100%;display:block;background:var(--copper);border-radius:6px;transition:width .25s}
.cook-step-card{background:var(--surface-warm);border:1px solid var(--outline);border-radius:var(--radius-surface-inner);height:232px;min-height:232px;max-height:232px;min-width:0;padding:18px;display:flex;justify-content:flex-start;flex-direction:column;gap:12px;overflow:hidden}
.cook-step-caption{display:flex;flex:none;align-items:center;gap:11px;font:700 var(--type-small) var(--head);color:var(--copper)}
.cook-step-caption span{display:grid;place-items:center;width:33px;height:33px;flex:none;border-radius:10px;background:var(--accent-subtle);font:700 var(--type-ui-body) var(--font-ui)}
.cook-step-text{font:400 var(--type-reading)/1.75 var(--font-ui);flex:1;min-height:0;min-width:0;margin:0;overflow-wrap:anywhere;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;display:flex;flex-direction:column}
.cook-step-copy{display:block;flex-shrink:0;margin-block:auto}
.cook-step-scroll-cue:not([hidden]){display:block;flex:none;margin-top:-8px;color:var(--copper);font:500 var(--type-small)/1.5 var(--font-ui);text-align:right}
.cook-step-scroll-cue.is-at-end{visibility:hidden}
.cook-step-text:focus-visible{outline:2px solid var(--copper);outline-offset:-2px;border-radius:5px}
.cook-step-nav{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 18px}
.cook-step-nav button{min-height:48px;display:flex;align-items:center;justify-content:center;gap:6px;border-radius:12px;background:var(--surface-warm);border:1px solid var(--outline);color:var(--copper);font:600 var(--type-ui-body) var(--font-ui)}
.cook-step-nav button:last-child{background:var(--copper);border-color:var(--copper);color:white}
.cook-step-nav button[disabled]{visibility:visible;opacity:.43;background:var(--surface-quiet);border-color:var(--outline-faint);color:var(--text-quiet);cursor:not-allowed}
.cook-checklist{margin:17px 0;border:1px solid var(--outline);border-radius:12px;background:var(--white);padding:0 14px}
.cook-checklist summary{cursor:pointer;list-style:none;padding:14px 0;font:700 var(--type-ui-body) var(--head)}
.cook-checklist summary:after{content:'+';float:right;font-size:18px;color:var(--copper)}
.cook-checklist[open] summary:after{content:'−'}
.cook-checklist ul{list-style:none;padding:0 0 12px;margin:0}
.cook-checklist li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;font:400 var(--type-list)/1.7 var(--font-ui)}
.cook-checklist li span:last-child{font:600 var(--type-small) var(--font-ui);color:var(--copper);white-space:nowrap}
.cook-safety,.cook-allergen{font:400 var(--detail-note-size)/1.7 var(--font-ui);color:var(--muted);margin-top:10px}

/* Pass 07: preserve the underlying route while rendering Pass 01's immersive sheet. */
.detail-underlay{position:fixed;inset:0;overflow:hidden;filter:blur(3px);-webkit-filter:blur(3px);pointer-events:none;user-select:none}
.detail-underlay .app-header{display:block}
.detail-veil{position:fixed;inset:0;background:rgba(55,41,30,.34);z-index:17;pointer-events:none}
.detail-stage{position:fixed;inset:0;z-index:18;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:auto}
.detail-stage .detail-page{margin:calc(42px + var(--safe-top)) auto 0;min-height:calc(100dvh - 42px - var(--safe-top));box-shadow:0 -8px 36px rgba(52,37,28,.14)}
.detail-stage .detail-intro{grid-template-columns:minmax(0,1fr);gap:0;padding-top:var(--detail-hero-block-padding);padding-bottom:var(--detail-identity-bottom-gap)}
.detail-stage .detail-heading h1{font-size:var(--type-recipe-title);line-height:1.37;letter-spacing:-.02em;margin:2px 0 0}
body:has(.detail-stage) .global-timer{z-index:26}
@media(max-width:380px){.detail-stage .detail-heading h1{font-size:18px}}
@media(min-width:700px){.detail-stage .detail-heading h1{font-size:var(--type-recipe-title)}}
@media(prefers-reduced-motion:reduce){.detail-stage{scroll-behavior:auto}}

/* Pass 08 — rebuild the approved discovery/filter sheet grammar, not legacy CSS. */
.filter-sheet .sheet-content{padding-top:8px}
.filter-intro{font:400 var(--type-support)/1.7 var(--font-ui)!important;color:var(--muted)!important;margin:4px 0 17px!important}
.filter-fields{display:grid;gap:15px;margin-bottom:23px}
.filter-sheet .filter-fields label{display:flex;flex-direction:column;gap:8px;margin:0;font:700 var(--type-form-label)/1.5 var(--font-ui);color:var(--text-secondary)}
.filter-sheet .filter-fields select{min-height:52px;appearance:auto;-webkit-appearance:menulist;border-radius:15px;background:var(--white);padding:11px 13px;font:500 15px/1.5 var(--font-ui)}
.filter-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:10px}
.filter-actions button{min-height:48px;border-radius:13px;padding:11px 12px;font:700 14px/1.3 var(--font-ui)}
.filter-actions button:first-child{background:var(--white);border:1px solid var(--outline);color:var(--ink)}
.filter-actions button:last-child{background:var(--copper);border:1px solid var(--copper);color:var(--white)}
.empty-cta{display:inline-flex;align-items:center;justify-content:center;gap:7px;margin-top:17px;padding:10px 15px;background:var(--white);color:var(--copper);border:1px solid var(--outline);border-radius:12px;font:600 var(--type-support)/1.5 var(--font-ui)}
.empty-cta:focus-visible{outline:3px solid var(--copper);outline-offset:3px}
@media(min-width:700px){.modal-layer:has(.discovery-sheet){align-items:center;justify-items:center;padding:24px}}
@media(prefers-reduced-motion:reduce){.discovery-sheet *, .empty-cta{animation:none!important;transition:none!important}}



/* Active status uses the existing Pass 01 restrained heart treatment. */
.detail-art-favorite.is-on .glyph{fill:#c3572b22}

/* Pass 15: the familiar Pass 01 intro closes from the upper-right without a spare row. */
.detail-stage .detail-page:not(.cooking-detail)>.detail-actions{position:absolute;right:calc(var(--detail-content-inline) + 10px);top:calc(var(--detail-hero-block-padding) + 10px);width:auto;height:auto;z-index:4}
.detail-stage .detail-page:not(.cooking-detail)>.detail-actions button{height:36px;width:36px;border-radius:50%}
.detail-stage .detail-page:not(.cooking-detail) .detail-image{border-radius:var(--radius-surface-inner)}
@media(max-width:359px){.detail-stage .detail-heading h1{font-size:18px}}
/* Pass 14: reserve space for the approved full-width sheet return bar. */
.detail-stage .detail-page:not(.cooking-detail){padding-bottom:calc(86px + env(safe-area-inset-bottom,0px))}

/* Pass 16: preserve the original collection's single discovery row, without duplicate icons. */
/* Cooking Mode in Pass 01 has a single close control at upper-right and a persistent return bar. */
.detail-stage .cooking-detail{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}
.detail-stage .cooking-detail>.cook-top-actions{position:absolute;right:12px;top:8px;width:auto;height:auto;z-index:4}
.detail-stage .cooking-detail>.cook-top-actions button{width:36px;height:36px;border-radius:50%}
.detail-stage .cooking-detail .cooking-screen{padding-top:17px}
.cook-footer{position:fixed;z-index:25;bottom:0;left:0;right:0;display:flex;align-items:center;max-width:910px;min-height:calc(56px + env(safe-area-inset-bottom,0px));margin:auto;padding:4px var(--detail-footer-inline-padding) calc(4px + env(safe-area-inset-bottom,0px));background:var(--surface-elevated);border-top:1px solid var(--outline-faint);box-shadow:0 -5px 12px rgba(61,37,29,.025)}
.cook-footer button{border:0;background:transparent;color:var(--text-secondary);font:500 var(--type-support)/1.5 var(--font-ui);display:flex;align-items:center;gap:8px}
.cook-footer .cook-return{flex:1;justify-content:flex-start;padding:9px 5px}
.cook-footer .cook-footer-wake{flex:none;justify-content:center;width:var(--detail-footer-control-size);height:var(--detail-footer-control-size);border:1px solid var(--outline);border-radius:13px;background:var(--surface-elevated);color:var(--copper)}
.cook-footer .cook-footer-wake[aria-pressed="true"]{color:var(--copper);background:var(--accent-subtle);border-color:var(--copper)}
.cook-footer .cook-footer-wake:focus-visible{outline:2px solid var(--copper);outline-offset:2px}
@media(max-width:380px){.cooking-screen h2{font-size:18px}}

@media(max-width:699px){.detail-stage .cooking-detail{margin-top:calc(98px + var(--safe-top));min-height:calc(100dvh - 98px - var(--safe-top))}}

/* Shared motion grammar for existing surfaces, without replacing their geometry. */
@keyframes rb-menu-enter{from{opacity:.45;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
.detail-stage.is-entering .detail-page{animation:rb-detail-enter var(--motion-medium) var(--motion-ease) both}
@keyframes rb-detail-enter{from{opacity:.68}to{opacity:1}}
 .detail-stage.is-step-changing .cook-step-text{animation:rb-cook-text var(--motion-medium) var(--motion-ease) both}
@keyframes rb-cook-text{from{opacity:.62}to{opacity:1}}

/* Search tab shares the Recipes input/filter control row. */

.search-page-hint{font:400 var(--type-small)/1.65 var(--font-ui);color:var(--text-secondary);margin:11px 1px 0}
.search-page-results{margin-top:22px}
.search-page-results .catalog-line{margin-bottom:16px}

/* Unified Search component: the sole focus, placeholder and typography owner
   across Recipes, Favorites, the Search tab and the Home discovery sheet. */
.rb-search-field input:is([type="search"],[type="text"]){
  min-width:0;font:400 16px/1.5 var(--font-ui);color:var(--ink);
  background:transparent;outline:0;box-shadow:none;
}
.rb-search-field input::placeholder{color:var(--muted);opacity:1;
  font-family:var(--font-ui);font-weight:400;font-size:var(--type-placeholder);
}
:is(.collection-search .collection-search-prompt, .sheet-content .search-input):focus-within{border-color:var(--copper);outline:0;
  box-shadow:inset 0 0 0 1px var(--copper);
}
.rb-search-field input:focus-visible{outline:0;outline-offset:0;}

/* Editorial content: authentic dish introductions are independent of preparation and safety notes. */
/* Detail section headings live outside their bordered content panels. */
.detail-about{margin:18px 0 16px}
.detail-page:not(.cooking-detail) .detail-section-heading{font:700 var(--detail-heading-size)/1.4 var(--head);letter-spacing:-.028em;color:var(--ink);margin:0 0 12px}
.detail-ingredients-header .detail-section-heading{margin:0}
.detail-method .detail-section-heading{margin-bottom:14px}
.detail-about-card{padding:13px 15px;background:var(--surface-warm);border:1px solid var(--outline-faint);border-radius:var(--radius-surface-inner)}
.detail-about-card p{font:400 var(--detail-body-size)/1.82 var(--font-ui);color:var(--text-secondary);margin:0;overflow-wrap:anywhere}
/* Pass 67: notes carry their own visible headings, separate from recipe identity. */
.detail-guidance{margin:19px 0 20px;padding:14px;background:var(--surface-warm);border:1px solid var(--outline-faint);border-radius:13px}
.detail-guidance .guidance-item h2{font:700 var(--type-form-label)/1.55 var(--head);color:var(--ink);margin:0 0 5px}
.guidance-item+.guidance-item{border-top:1px solid var(--outline-faint);margin-top:12px;padding-top:12px}
.guidance-item h3{font:700 var(--type-form-label)/1.55 var(--head);color:var(--ink);margin:0 0 5px}
.guidance-item p{font:400 var(--detail-body-size)/1.78 var(--font-ui);color:var(--text-secondary);overflow-wrap:anywhere;margin:0}
.cook-safety strong{display:block;font:700 var(--type-form-label)/1.5 var(--head);color:var(--ink);margin-bottom:5px}
.cook-safety p{font:400 var(--detail-note-size)/1.7 var(--font-ui);margin:0}
/* Pass 66: one app-sized option surface; native select is a hidden data mirror. */
.filter-sheet .filter-fields{gap:15px}
.filter-field{position:relative;min-width:0}
.filter-field-label{display:block;font:600 var(--type-form-label)/1.6 var(--font-ui);color:var(--text-secondary);margin:0 0 8px}
.filter-sheet .filter-picker-native{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;left:0;top:0;overflow:hidden}
.filter-sheet .filter-picker-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;width:100%;padding:10px 15px;border:1px solid var(--control-outline);border-radius:14px;background:var(--white);color:var(--ink);text-align:left;font:500 14px/1.45 var(--font-ui)}
.filter-picker-trigger .glyph{flex:none;transform:rotate(90deg);color:var(--text-secondary)}
.filter-picker-trigger[aria-expanded=true]{border-color:var(--copper);box-shadow:0 0 0 2px var(--accent-subtle)}
.filter-picker-options{display:grid;gap:2px;margin-top:7px;padding:6px;background:var(--white);border:1px solid var(--outline);border-radius:13px;box-shadow:0 5px 15px #36261914;max-height:min(224px,31dvh);overflow-y:auto;overscroll-behavior:contain}
.filter-picker-options[hidden]{display:none!important}
.filter-picker-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:43px;width:100%;border:0;background:transparent;color:var(--ink);border-radius:9px;padding:9px 10px;text-align:left;font:400 var(--type-ui-body)/1.55 var(--font-ui)}
.filter-picker-option[aria-selected=true]{background:var(--surface-tint);color:var(--copper);font-weight:600}
.filter-picker-option .glyph{color:var(--copper)}
.filter-picker-trigger:focus-visible,.filter-picker-option:focus-visible{outline:2px solid var(--copper);outline-offset:2px}

/* Pass 69: editor category and difficulty reuse the existing app-owned dropdown. */
.editor-sheet .filter-field{margin:9px 0 11px}
.editor-sheet .filter-field-label{font:600 var(--type-form-label)/1.5 var(--font-ui);color:var(--ink);margin:0 0 7px}
.editor-sheet .filter-picker-native{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;left:0;top:0;overflow:hidden}
.editor-sheet .filter-picker-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;width:100%;padding:9px 13px;border:1px solid var(--control-outline);border-radius:12px;background:var(--white);color:var(--ink);text-align:left;font:400 14px/1.45 var(--font-ui)}
.editor-sheet .filter-picker-option{font:400 var(--type-ui-body)/1.55 var(--font-ui)}

/* Trial 07: one visual search control system across the sheet and Search tab.
   Existing fonts, card geometry and bottom navigation are intentionally retained. */
.search-filter-block{margin:12px 0 4px;min-width:0}
.search-filter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:42px}
.search-filter-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--outline);border-radius:12px;background:var(--surface-elevated);padding:9px 12px;color:var(--text-secondary);font:600 var(--type-support)/1.35 var(--font-ui);min-height:42px}
.search-filter-toggle svg:first-child{color:var(--copper)}
.search-filter-toggle svg:last-child{width:14px;transition:transform var(--motion-fast) var(--motion-ease)}
.search-filter-toggle[aria-expanded="true"] svg:last-child{transform:rotate(180deg)}
.search-filter-count{border-radius:100px;background:var(--surface-tint);color:var(--copper);padding:1px 7px;font:600 var(--type-small)/1.4 var(--font-ui)}
.search-filter-clear{background:transparent;border:0;color:var(--copper);font:600 var(--type-support)/1.3 var(--font-ui);min-height:42px;padding:0 5px}
.search-filter-fields{padding:12px 0 4px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.search-filter-fields[hidden]{display:none}
.search-filter-fields .filter-field{min-width:0;margin:0;position:relative}
.search-filter-fields .filter-field-label{font:500 var(--type-small)/1.45 var(--font-ui);display:block;margin-bottom:5px}
.search-filter-fields .filter-picker-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;min-height:43px;padding:6px 9px;gap:4px;border:1px solid var(--control-outline);border-radius:12px;background:var(--white);color:var(--ink);text-align:left;font:500 var(--type-small)/1.45 var(--font-ui)}
.search-filter-fields .filter-picker-trigger span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-filter-fields .filter-picker-options{max-height:210px;overflow:auto;min-width:140px;z-index:12}
.discovery-sheet .search-filter-fields{grid-template-columns:1fr 1fr}
.discovery-sheet .search-filter-fields .filter-field:first-child{grid-column:1/-1}
.search-page .search-filter-block{margin:0 0 4px}
.search-page .collection-search{margin:15px 0 6px}
.search-page .collection-filter-prompt.search-filter-toggle{position:relative}
.search-page .collection-filter-prompt .search-filter-count:not([hidden]){position:absolute;right:1px;top:1px;min-width:15px;line-height:14px;padding:0 3px;font-size:10px;border-radius:99px}
.search-filter-page-actions{display:flex;justify-content:flex-end;margin:0;min-height:0}
.search-page .collection-filter-prompt[aria-expanded="true"]{border-color:var(--copper);box-shadow:inset 0 0 0 1px var(--copper)}
.search-page .search-filter-fields{padding-top:12px;grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:370px){.search-page .search-filter-fields{grid-template-columns:1fr 1fr}.search-page .search-filter-fields .filter-field:first-child{grid-column:1/-1}}
/* Search filter selects remain semantic form state but never summon native iOS sheets. */
.search-filter-fields .filter-picker-native{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;left:0;top:0;overflow:hidden}
.search-filter-fields .filter-picker-trigger .glyph{flex:none}
