:root{--bg:#f3f5f1;--card:#fff;--ink:#1e2b23;--muted:#5c6b61;--line:#dce3dc;--green:#2f6b4f;--green-deep:#224e3a;--honey:#e3a02b;--honey-soft:#fbf1dc;--danger:#b3492f;--radius:14px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:16px/1.55 Public Sans,system-ui,sans-serif}a{color:var(--green)}header{max-width:860px;margin:0 auto;padding:28px 20px 8px}header h1{letter-spacing:-.01em;margin:0 0 4px;font:650 34px/1.1 Fraunces,serif}header h1 .dot{color:var(--honey)}header p{color:var(--muted);margin:0;font-size:14px}main{max-width:860px;margin:0 auto;padding:16px 20px 80px}.search{gap:10px;margin:18px 0 22px;display:flex}.search input{border:1.5px solid var(--line);border-radius:var(--radius);font:inherit;background:var(--card);outline:none;flex:1;padding:13px 16px}.search input:focus{border-color:var(--green)}.chips{flex-wrap:wrap;gap:8px;margin:0 0 22px;display:flex}.chip{background:var(--card);border:1.5px solid var(--line);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:7px 14px;font:600 13px Public Sans,sans-serif;display:inline-flex}.chip:hover{border-color:var(--green)}.chip.active{background:var(--green);border-color:var(--green);color:#fff}.chip .c{opacity:.7;font-variant-numeric:tabular-nums;font-weight:700}.chip.active .c{opacity:.85}.cat-group{margin:0 0 26px}.cat-group.folded,.up-next.folded,.in-progress.folded{margin-bottom:8px}.cat-head{text-transform:uppercase;letter-spacing:.08em;color:var(--green-deep);align-items:baseline;gap:8px;margin:0 0 12px;font:650 15px Public Sans,sans-serif;display:flex}.cat-head .cat-count{color:var(--muted);letter-spacing:0;font-size:13px}.cat-toggle,.cat-static{text-align:left;width:100%;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;align-items:baseline;gap:8px;display:flex}.cat-toggle{cursor:pointer;background:0 0;border:none;padding:3px 0}.cat-toggle:hover{color:var(--green)}.cat-toggle:focus-visible{outline:3px solid var(--honey);outline-offset:3px;border-radius:6px}.cat-caret{width:12px;color:var(--muted);flex:none;font-size:11px}.cat-toggle:hover .cat-caret{color:var(--green)}.collapse-all,.cat-edit{background:var(--card);border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:7px;padding:8px 14px;font:600 13px Public Sans,sans-serif;display:inline-flex}.collapse-all:hover,.cat-edit:hover{border-color:var(--green)}:is(.collapse-all:focus-visible,.cat-edit:focus-visible){outline:3px solid var(--honey);outline-offset:2px}.browse-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 0 18px;display:flex}.view-switch{background:var(--card);border:1.5px solid var(--line);border-radius:999px;gap:4px;padding:4px;display:inline-flex}.view-switch button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 14px;font:600 13px Public Sans,sans-serif}.view-switch button.active{background:var(--green);color:#fff}.view-switch button:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.sort-select select:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.sort-dir:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.sort-select{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.sort-toggle{background:var(--card);border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:6px;padding:8px 15px;font:600 13px Public Sans,sans-serif;display:inline-flex}.sort-toggle:hover{border-color:var(--green)}.sort-toggle.active{background:var(--green);border-color:var(--green);color:#fff}.sort-toggle:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.sort-select select{border:1.5px solid var(--line);font:inherit;background:var(--card);cursor:pointer;border-radius:10px;outline:none;padding:8px 12px;font-size:14px}.sort-select select:focus{border-color:var(--green)}.sort-dir{border:1.5px solid var(--line);background:var(--card);width:38px;height:38px;color:var(--green-deep);cursor:pointer;border-radius:10px;flex:none;justify-content:center;align-items:center;font:700 17px/1 Public Sans,sans-serif;display:inline-flex}.sort-dir:hover{border-color:var(--green)}.cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:14px;display:grid}.cards.single{grid-template-columns:1fr;max-width:860px}.cards.list{grid-template-columns:1fr;gap:8px}.cards.list .card{padding:12px 116px 12px 16px;position:relative}:is(.cards.list .card:hover,.cards.list .card:focus-visible){transform:none}.cards.list .card h3{margin:0;font-size:17px}.cards.list .card p{-webkit-line-clamp:1;margin-top:2px;font-size:13px}.cards.list .card .tags,.cards.list .card .cook-count-badge{margin-top:6px}.cards.list .card .q-add{white-space:nowrap;margin-top:0;position:absolute;top:50%;right:16px;transform:translateY(-50%)}@media (min-width:1140px){:is(body:has(.home-page) header,body:has(.home-page) main){max-width:1240px}.home-page .cards.list{grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:10px}}@media (min-width:1560px){:is(body:has(.home-page) header,body:has(.home-page) main){max-width:1440px}}@media (max-width:480px){.browse-toolbar{gap:8px}.view-switch,.sort-select{flex:auto}.view-switch button{flex:1;padding:6px 8px}.sort-select select{flex:1;min-width:0}.collapse-all,.cat-edit{padding:8px 12px}.collapse-all .ca-text,.cat-edit .ca-text{display:none}.sort-toggle{padding:8px 12px}}@media (max-width:600px){.chips{overscroll-behavior-x:contain;scrollbar-width:thin;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:4px;overflow:auto hidden}.chip{scroll-snap-align:start;flex:none}}@media (pointer:coarse){.chip{padding:9px 15px}.q-add{padding:9px 15px;font-size:13px}.q-btn{padding:10px 14px}.cat-toggle{padding:8px 0}.sort-toggle,.collapse-all,.cat-edit{padding:10px 15px}.cards.list .card{padding-right:132px}}.card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:18px;transition:border-color .15s,transform .15s}:is(.card:hover,.card:focus-visible){border-color:var(--green);transform:translateY(-2px)}.card h3{margin:0 0 6px;font:650 20px/1.25 Fraunces,serif}.card p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:14px;display:-webkit-box;overflow:hidden}.tags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.tag{color:var(--green-deep);background:#e7efe9;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.empty{color:var(--muted);text-align:center;padding:60px 0}.empty b{color:var(--ink);margin-bottom:6px;font:650 22px Fraunces,serif;display:block}.detail-bar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.back{color:var(--green);cursor:pointer;background:0 0;border:none;padding:0;font:600 14px Public Sans,sans-serif}.manage-btn{border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font:600 13px Public Sans,sans-serif}.manage-btn:hover{border-color:var(--green)}.sync-note{color:var(--danger);text-align:center;flex:1;font:600 12px Public Sans,sans-serif}.danger-btn{border:1.5px solid var(--danger);color:var(--danger);cursor:pointer;background:0 0;border-radius:10px;padding:11px 18px;font:700 14px Public Sans,sans-serif}.danger-btn:hover,.danger-btn.confirm{background:var(--danger);color:#fff}.detail h2{margin:0 0 6px;font:650 32px/1.15 Fraunces,serif}.detail .desc{color:var(--muted);margin:0 0 6px}.detail .src{font-size:13px}.video-embed{aspect-ratio:16/9;border-radius:var(--radius);background:#000;width:100%;margin:12px 0;position:relative;overflow:hidden}.video-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.servings{background:var(--card);border:1.5px solid var(--line);border-radius:999px;align-items:center;gap:12px;margin:16px 0;padding:8px 14px;display:inline-flex}.servings button{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:50%;width:32px;height:32px;font-size:18px;font-weight:700;line-height:1}.servings button:disabled{opacity:.35;cursor:default}.servings span{text-align:center;min-width:90px;font-weight:700}.cook-session-bar{flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 16px;display:flex}.cook-start-btn{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:999px;padding:11px 20px;font:700 14px Public Sans,sans-serif}.cook-start-btn:hover{background:var(--green-deep)}.cook-finish-btn{background:var(--honey);color:var(--ink);cursor:pointer;border:none;border-radius:999px;padding:11px 20px;font:700 14px Public Sans,sans-serif}.cook-finish-btn:hover{filter:brightness(.95)}.cook-discard-btn{border:1.5px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:9px 16px;font:600 13px Public Sans,sans-serif}.cook-discard-btn:hover{border-color:var(--danger);color:var(--danger)}.cook-discard-btn.confirm{background:var(--danger);border-color:var(--danger);color:#fff}.cook-session-info{color:var(--green-deep);font:600 14px Public Sans,sans-serif}.cook-count{color:var(--muted);font:600 13px Public Sans,sans-serif}.cook-live{background:var(--honey);border-radius:50%;flex:none;width:10px;height:10px;animation:1.6s ease-in-out infinite cook-pulse;display:inline-block}@keyframes cook-pulse{0%,to{opacity:1}50%{opacity:.35}}.in-progress{margin:18px 0 26px}.card.cooking{border-color:var(--honey);background:var(--honey-soft)}.card .cook-meta{color:var(--green-deep);align-items:center;gap:7px;margin-top:8px;font:600 13px Public Sans,sans-serif;display:flex}.cook-count-badge{color:var(--green-deep);background:#e7efe9;border-radius:999px;margin-top:10px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.recipe-view-toggle{background:var(--card);border:1.5px solid var(--line);vertical-align:middle;border-radius:999px;flex-wrap:wrap;gap:4px;margin:0 0 4px 14px;padding:4px;display:inline-flex}.recipe-view-toggle button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 14px;font:600 14px Public Sans,sans-serif}.recipe-view-toggle button.active{background:var(--green);color:#fff}.recipe-view-toggle button:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.cook-nav button:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.timeline-check:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.variant-toggle{background:var(--card);border:1.5px solid var(--line);border-radius:999px;flex-wrap:wrap;gap:4px;margin:14px 0 0;padding:4px;display:inline-flex}.variant-toggle .vseg,.variant-toggle .mseg{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 16px;font:600 14px Public Sans,sans-serif}.variant-toggle .vseg.active,.variant-toggle .mseg.active{background:var(--green);color:#fff}.variant-select{align-items:center;gap:10px;margin:14px 0 0;display:flex}.variant-select label{text-transform:uppercase;letter-spacing:.06em;color:var(--green-deep);font:650 13px Public Sans,sans-serif}.variant-select select{border:1.5px solid var(--line);font:inherit;background:var(--card);cursor:pointer;border-radius:10px;outline:none;padding:9px 12px}.variant-select select:focus{border-color:var(--green)}.variant-desc{margin:10px 0 0}section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--green-deep);margin:26px 0 10px;font:650 15px Public Sans,sans-serif}.ing-list{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);margin:0;padding:8px 18px}.ing-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:9px 0;list-style:none;display:flex}.ing-list li:last-child{border-bottom:none}.ing-list .amt{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}.ing-check{cursor:pointer;align-items:center;gap:10px;display:inline-flex}.ing-check input{width:18px;height:18px;accent-color:var(--green);cursor:pointer}.step{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr auto;gap:14px;margin-bottom:14px;padding:18px;display:grid}.step.done{border-color:var(--green)}.step.step-checked{opacity:.6}.step.step-checked .body p{text-decoration:line-through}.step .body h4{align-items:baseline;gap:0;margin:0 0 6px;font:650 19px Fraunces,serif;display:flex}.step .body h4 .n{color:var(--honey);margin-right:8px}.step-check{align-items:center;margin-right:10px;display:inline-flex}.step-check input{width:20px;height:20px;accent-color:var(--green);cursor:pointer}.step .body p{margin:0}.step .body .ref{color:var(--green-deep);font-weight:700}.step-accordion{padding:0;display:block;overflow:hidden}.step-accordion summary{cursor:pointer;align-items:center;gap:0;min-height:62px;padding:16px 18px;list-style:none;display:flex}.step-accordion summary::-webkit-details-marker{display:none}.step-accordion summary:after{content:"+";color:var(--green);margin-left:auto;font-size:22px;line-height:1}.step-accordion[open] summary{border-bottom:1.5px solid var(--line)}.step-accordion[open] summary:after{content:"−"}.step-accordion .step-check{margin-right:10px}.step-summary-title{min-width:0;font:650 18px/1.25 Fraunces,serif}.step-timed{color:var(--green-deep);white-space:nowrap;background:#e7efe9;border-radius:999px;align-items:center;padding:3px 8px;font:700 11px Public Sans,sans-serif;display:inline-flex}.step-accordion summary .step-timed{margin-left:10px}.step-accordion-body{grid-template-columns:1fr auto;gap:14px;padding:16px 18px 18px;display:grid}.step-ings{background:#f6f8f4;border-radius:10px;margin:12px 0 0;padding:10px 14px;font-size:14px}.step-ings li{justify-content:space-between;gap:12px;padding:3px 0;list-style:none;display:flex}.step-ings .amt{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}.step-matrix{gap:6px;margin:0 0 12px;display:grid}.mx-col-head{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:0 2px;font:650 12px Public Sans,sans-serif}.mx-cell{border:1.5px solid var(--line);background:#f6f8f4;border-radius:10px;flex-wrap:wrap;align-items:center;gap:4px;padding:10px 12px;font-size:14px;display:flex}.mx-amt{color:var(--green-deep);font-variant-numeric:tabular-nums;font-weight:700}.note{background:var(--honey-soft);border-left:3px solid var(--honey);border-radius:0 10px 10px 0;margin:12px 0 0;padding:10px 14px;font-size:14px}.recipe-notes{background:var(--honey-soft);border-radius:var(--radius);border:1.5px solid #eed9ae;padding:16px 18px}.md>*{margin:10px 0}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md h4,.md h5,.md h6{margin:14px 0 6px;font-family:Fraunces,serif;line-height:1.25}.md h4{font-size:18px}.md h5{font-size:16px}.md h6{font-size:15px}.md ul,.md ol{padding-left:22px}.md li{margin:3px 0}.md li::marker{color:var(--muted)}.md code{background:#f1ebdd;border-radius:6px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.md a{color:var(--green-deep);font-weight:700}.md blockquote{border-left:3px solid var(--honey);color:var(--muted);margin-left:0;padding-left:12px}.cook-mode{margin-top:26px}.cook-head{grid-template-columns:1fr minmax(120px,220px);align-items:end;gap:18px;margin:0 0 12px;display:grid}.cook-head h3{margin:0 0 2px}.cook-head p{color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:14px}.cook-progress{background:var(--line);border-radius:999px;height:8px;overflow:hidden}.cook-progress span{background:var(--honey);border-radius:inherit;height:100%;transition:width .2s;display:block}.cook-mode .step{margin-bottom:12px}.cook-nav{grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:12px;display:grid}.cook-nav button{border:1.5px solid var(--line);background:var(--card);width:44px;height:44px;color:var(--green-deep);cursor:pointer;border-radius:50%;font-size:22px;line-height:1}.cook-nav button:not(:disabled):hover{border-color:var(--green);background:#e7efe9}.cook-nav button:disabled{opacity:.35;cursor:default}.cook-nav p{text-align:center;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:14px;overflow:hidden}.cook-empty{color:var(--muted);margin:0}.overview-workspace{grid-template-columns:minmax(230px,.75fr) minmax(0,1.5fr);align-items:start;gap:20px;margin-top:22px;display:grid}.overview-workspace section h3{margin-top:0}.overview-ingredients{position:sticky;top:16px}.overview-steps .step-accordion{margin-bottom:10px}.prep-mode,.timeline-mode,.tableau-mode{margin-top:26px}.prep-head,.timeline-head,.tableau-head{justify-content:space-between;align-items:end;gap:18px;margin:0 0 12px;display:flex}.prep-head h3,.timeline-head h3,.tableau-head h3{margin:0 0 2px}.prep-head p,.timeline-head p,.tableau-head p{color:var(--muted);margin:0;font-size:14px}.prep-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;display:grid}.prep-group{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:15px 16px}.prep-group h4{align-items:baseline;gap:8px;margin:0 0 10px;font:650 17px/1.3 Fraunces,serif;display:flex}.prep-group h4 span{background:var(--honey-soft);width:22px;height:22px;color:var(--green-deep);border-radius:50%;flex:none;justify-content:center;align-items:center;font:700 12px Public Sans,sans-serif;display:inline-flex}.prep-group ul{margin:0;padding:0}.prep-group li{border-top:1px solid var(--line);justify-content:space-between;gap:10px;padding:7px 0;font-size:14px;list-style:none;display:flex}.prep-group .amt{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}.prep-unassigned{border-style:dashed}.timeline-head .cook-progress,.tableau-head .cook-progress{width:min(220px,35%)}.tableau-scroll{padding-bottom:6px;overflow-x:auto}.tableau{gap:6px;min-width:640px;display:grid}.tableau .tb-col-head{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);align-self:end;padding:0 2px;font:650 12px Public Sans,sans-serif}.tb-col-head .n{background:var(--honey-soft);width:22px;height:22px;color:var(--green-deep);border-radius:50%;justify-content:center;align-items:center;font:700 12px Public Sans,sans-serif;display:inline-flex}.tb-ing,.tb-cell{border:1.5px solid var(--line);font:inherit;text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;padding:10px 12px;font-size:14px;display:flex}.tb-ing{background:#f6f8f4}.tb-ing .amt{color:var(--green-deep);font-variant-numeric:tabular-nums;font-weight:700}.tb-ing.checked{opacity:.55}.tb-ing.checked span:last-child{text-decoration:line-through}.tb-cell{background:var(--card)}.tb-cell:hover{border-color:var(--green)}.tb-cell.checked{opacity:.6;border-color:var(--green)}.tb-cell.checked .tb-title{text-decoration:line-through}.tb-title{font:650 15px/1.3 Fraunces,serif}:is(.tb-ing:focus-visible,.tb-cell:focus-visible){outline:3px solid var(--honey);outline-offset:2px}.timer-board{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 20px;display:grid}.timer-board-item{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);flex-direction:column;align-items:center;min-height:178px;padding:12px;display:flex}.timer-board-item p{text-align:center;width:100%;min-height:40px;color:var(--green-deep);margin:0 0 8px;font:650 14px/1.3 Public Sans,sans-serif}.timeline-list{counter-reset:steps;margin:0;padding:0}.timeline-list li{grid-template-columns:38px minmax(0,1fr);gap:14px;padding:0 0 20px;list-style:none;display:grid;position:relative}.timeline-list li:before{content:"";background:var(--line);width:2px;position:absolute;top:38px;bottom:0;left:18px}.timeline-list li:last-child{padding-bottom:0}.timeline-list li:last-child:before{display:none}.timeline-check{z-index:1;border:1.5px solid var(--line);background:var(--card);width:38px;height:38px;color:var(--green-deep);cursor:pointer;border-radius:50%;font:700 13px Public Sans,sans-serif;position:relative}.timeline-list li.complete .timeline-check{background:var(--green);border-color:var(--green);color:#fff}.timeline-list li.complete:before{background:var(--green)}.timeline-list h4{margin:5px 0 3px;font:650 18px/1.3 Fraunces,serif}.timeline-list p{color:var(--muted);margin:0}.timeline-list .step-timed{margin-top:8px}.timer{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:6px;display:flex}.ring{cursor:pointer;width:92px;height:92px;position:relative}.ring svg{transform:rotate(-90deg)}.ring .track{stroke:var(--line);fill:none;stroke-width:6px}.ring .prog{stroke:var(--green);fill:none;stroke-width:6px;stroke-linecap:round;transition:stroke-dashoffset .3s linear}.ring.running .prog{stroke:var(--honey)}.ring.finished .prog{stroke:var(--green)}.ring .time{font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font:700 17px Public Sans,sans-serif;display:flex;position:absolute;inset:0}.timer .ctl{color:var(--muted);font-size:12px;font-weight:600}.timer button.reset{color:var(--green);cursor:pointer;background:0 0;border:none;padding:0;font:600 12px Public Sans,sans-serif}.timer button.to-clock{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-top:2px;padding:0;font:600 11px Public Sans,sans-serif;text-decoration:underline}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.ring.finished{animation:1s ease-in-out 3 pulse}@media (prefers-reduced-motion:reduce){.card,.ring .prog{transition:none}.ring.finished{animation:none}}@media (max-width:720px){.overview-workspace{grid-template-columns:1fr}.overview-ingredients{position:static}.step-accordion-body{grid-template-columns:1fr}}@media (max-width:560px){.step{grid-template-columns:1fr}.timer{flex-direction:row;justify-content:flex-start}.recipe-view-toggle{margin:0 0 4px}.cook-head{grid-template-columns:1fr;gap:10px}.recipe-view-toggle button{padding:7px 11px;font-size:13px}.prep-head,.timeline-head{flex-direction:column;align-items:flex-start;gap:8px}.timeline-head .cook-progress{width:100%}.step-accordion summary,.step-accordion-body{padding:14px}.step-summary-title{font-size:17px}.step-accordion summary .step-timed{display:none}}.add-btn{z-index:40;background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:999px;align-items:center;gap:8px;padding:14px 20px;font:700 15px Public Sans,sans-serif;display:inline-flex;position:fixed;bottom:20px;right:20px;box-shadow:0 6px 18px #224e3a47}.add-btn:hover{background:var(--green-deep)}.modal-back{z-index:50;background:#1e2b2373;justify-content:center;align-items:flex-start;padding:32px 16px;display:none;position:fixed;inset:0;overflow-y:auto}.modal-back.open{display:flex}.modal{background:var(--card);border-radius:var(--radius);width:100%;max-width:640px;padding:22px 24px 26px;box-shadow:0 12px 40px #1e2b234d}.modal-head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.modal-head h2{margin:0;font:650 26px Fraunces,serif}.modal .x{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:26px;line-height:1}.tabs{border-bottom:1.5px solid var(--line);gap:8px;margin:14px 0 18px;display:flex}.tabs button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;margin-bottom:-1.5px;padding:9px 4px;font:600 14px Public Sans,sans-serif}.tabs button.active{color:var(--green-deep);border-bottom-color:var(--green)}.field{margin:0 0 12px}.field label{color:var(--green-deep);margin:0 0 4px;font:600 13px Public Sans,sans-serif;display:block}.field input,.field textarea,.field select{border:1.5px solid var(--line);width:100%;font:inherit;background:var(--card);border-radius:10px;outline:none;padding:10px 12px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--green)}.field textarea{resize:vertical;min-height:72px}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.rows{flex-direction:column;gap:8px;display:flex}.ing-row{grid-template-columns:1fr 90px 90px 32px;align-items:center;gap:8px;display:grid}.step-row{grid-template-columns:1fr 90px 32px;align-items:start;gap:8px;display:grid}.ing-row input,.step-row input,.step-row textarea{border:1.5px solid var(--line);font:inherit;border-radius:9px;outline:none;padding:9px 11px}.ing-row input:focus,.step-row input:focus,.step-row textarea:focus{border-color:var(--green)}.step-row textarea{resize:vertical;min-height:44px}.rm{border:1.5px solid var(--line);color:var(--danger);cursor:pointer;background:0 0;border-radius:9px;height:38px;font-size:16px;line-height:1}.add-row{border:1.5px dashed var(--line);color:var(--green);cursor:pointer;background:0 0;border-radius:9px;margin-top:6px;padding:8px;font:600 13px Public Sans,sans-serif}.modal textarea.json{min-height:280px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.modal-foot{align-items:center;gap:12px;margin-top:20px;display:flex}.modal-foot .save{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:12px 22px;font:700 15px Public Sans,sans-serif}.modal-foot .save:disabled{opacity:.5;cursor:default}.modal-msg{flex:1;font-size:13px}.modal-msg.err{color:var(--danger)}.modal-msg.ok{color:var(--green)}.modal-msg ul{margin:4px 0 0;padding-left:18px}.hint{color:var(--muted);margin:2px 0 0;font-size:12px}.cat-rows{flex-direction:column;gap:8px;margin-top:14px;display:flex}.cat-row{grid-template-columns:34px minmax(0,1fr) minmax(0,1.3fr) 34px;align-items:center;gap:8px;display:grid}.cat-row input{border:1.5px solid var(--line);min-width:0;font:inherit;background:var(--card);border-radius:9px;outline:none;padding:9px 11px}.cat-row input:focus{border-color:var(--green)}.cat-row .cat-drag{touch-action:none;-webkit-user-select:none;user-select:none;border:1.5px solid var(--line);height:38px;color:var(--muted);cursor:grab;background:0 0;border-radius:9px;padding:0;font-size:15px;line-height:1}.cat-row .cat-drag:hover{border-color:var(--green);color:var(--green)}.cat-row .cat-drag:focus-visible{outline:3px solid var(--honey);outline-offset:2px}.cat-row.dragging{opacity:.75}.cat-row.dragging .cat-drag{cursor:grabbing;border-color:var(--green);background:#e7efe9}.cat-add{width:100%}.cat-reset{border:1.5px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:10px;padding:11px 16px;font:600 13px Public Sans,sans-serif}.cat-reset:hover{border-color:var(--green);color:var(--green-deep)}@media (max-width:520px){.cat-row{border-bottom:1.5px solid var(--line);grid-template-columns:34px minmax(0,1fr) 34px;row-gap:6px;padding-bottom:8px}.cat-row .cat-drag{grid-area:1/1}.cat-row input:first-of-type{grid-area:1/2}.cat-row .rm{grid-area:1/3}.cat-row input:nth-of-type(2){grid-area:2/1/auto/-1}}@media (pointer:coarse){.cat-row .cat-drag,.cat-row .rm{height:44px}}.top-nav{gap:16px;margin-top:10px;display:flex}.top-nav a{color:var(--green-deep);font:600 14px Public Sans,sans-serif;text-decoration:none}.top-nav a:hover{color:var(--green);text-decoration:underline}.discover .tabs .c{opacity:.7;font-variant-numeric:tabular-nums;font-weight:700}.discover .search-mode{margin:4px 0 12px}.discover .search{margin:0 0 18px}.go-btn{background:var(--green);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;padding:12px 20px;font:700 15px Public Sans,sans-serif}.go-btn:hover:not(:disabled){background:var(--green-deep)}.go-btn:disabled{opacity:.5;cursor:default}.result-card img{aspect-ratio:4/3;object-fit:cover;border-radius:10px;width:100%;margin-bottom:10px}.saved-card{cursor:default}.saved-card:hover{border-color:var(--line);transform:none}.saved-title{color:inherit;text-decoration:none}.saved-title:hover h3{color:var(--green)}.match-counts{font-size:13px;font-weight:600}.match-counts .have{color:var(--green)}.match-counts .miss{color:var(--danger)}.ing-chips{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.ing-chip{color:var(--muted);background:var(--bg);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.ing-chip.have{color:var(--green-deep);background:#e7efe9}.result-foot{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.bookmark-btn{border:1.5px solid var(--green);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font:600 13px Public Sans,sans-serif;text-decoration:none}.bookmark-btn:hover{background:var(--green);color:#fff}.bookmark-btn:disabled{opacity:.5;cursor:default}.bookmark-btn.saved{border-color:var(--green);background:var(--green);color:#fff}.bookmark-err{color:var(--danger);font-size:12px}.link-btn{color:var(--green);cursor:pointer;background:0 0;border:none;padding:0;font:600 13px Public Sans,sans-serif;text-decoration:none}.link-btn:hover{text-decoration:underline}.up-next{margin:18px 0 26px}.card.queued{border-color:var(--green);padding-left:44px;position:relative}.q-pos{background:var(--green);color:#fff;font-variant-numeric:tabular-nums;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font:700 13px Public Sans,sans-serif;display:flex;position:absolute;top:16px;left:12px}.q-actions{gap:6px;margin-top:12px;display:flex}.q-btn{border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font:600 13px/1 Public Sans,sans-serif}.q-btn:hover:not(:disabled){border-color:var(--green)}.q-btn:disabled{opacity:.35;cursor:default}.q-btn.drop{color:var(--danger)}.q-btn.drop:hover{border-color:var(--danger)}.queue-note{margin-top:8px}.q-add{border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:999px;margin-top:10px;padding:5px 12px;font:600 12px Public Sans,sans-serif}.q-add:hover{border-color:var(--green)}.q-add.on{background:var(--green);border-color:var(--green);color:#fff}.queue-btn{border:1.5px solid var(--line);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font:600 13px Public Sans,sans-serif}.queue-btn:hover:not(:disabled){border-color:var(--green)}.queue-btn:disabled{opacity:.5;cursor:default}.queue-btn.on{background:var(--green);border-color:var(--green);color:#fff}.cook-next-btn{border:1.5px solid var(--honey);color:var(--green-deep);cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font:600 13px Public Sans,sans-serif}.cook-next-btn:hover{background:var(--honey-soft)}.cook-next-btn.on{background:var(--honey);border-color:var(--honey)}.preview-modal{max-width:720px}.preview-meta{color:var(--muted);flex-wrap:wrap;gap:14px;margin:6px 0 10px;font:600 13px Public Sans,sans-serif;display:flex}.preview-meta a{color:var(--green)}.preview-head{margin:18px 0 6px;font:650 18px Fraunces,serif}.preview-ings{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 14px;margin:0;padding:0;list-style:none;display:grid}.preview-ings li{border-bottom:1px solid var(--line);padding:3px 0;font-size:14px}.preview-ings li.have{color:var(--green-deep)}.preview-ings .amt{font-variant-numeric:tabular-nums;font-weight:700}.preview-steps{margin:0;padding-left:20px}.preview-steps li{margin-bottom:10px}.preview-steps li p{color:var(--muted);margin:2px 0 0;font-size:14px}.preview-steps .step-timed{margin-left:8px}.modal-foot a.save{text-decoration:none;display:inline-block}.pantry-form{grid-template-columns:minmax(140px,1fr) 64px 72px 130px 140px auto auto;align-items:center;gap:8px;margin:14px 0 8px;display:grid}.pantry-form input,.pantry-form select{border:1.5px solid var(--line);font:inherit;background:var(--card);border-radius:9px;outline:none;min-width:0;padding:9px 11px}.pantry-form input:focus,.pantry-form select:focus{border-color:var(--green)}.ac-wrap{min-width:0;position:relative}.ac-wrap input{width:100%}.ac-list{z-index:20;background:var(--card);border:1.5px solid var(--line);border-radius:10px;max-height:240px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000002e}.ac-item{cursor:pointer;border-radius:7px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:14px;display:flex}.ac-item.active{background:var(--green);color:#fff}.ac-item.active .ac-cat{color:#fff;opacity:.85}.ac-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ac-cat{color:var(--muted);text-transform:capitalize;flex:none;font:700 11px Public Sans,sans-serif}.ac-note{color:var(--muted);margin:4px 0 0;font-size:12px}.ac-loading{color:var(--muted);cursor:default;justify-content:flex-start;font-size:13px}.pantry-form .p-save{background:var(--green);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:9px;padding:10px 14px;font:700 13px Public Sans,sans-serif}.pantry-form .p-cancel{border:1.5px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:9px;padding:10px 12px;font:600 13px Public Sans,sans-serif}.pantry-list{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);margin:0;padding:4px 16px}.pantry-item{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:9px 0;list-style:none;display:flex}.pantry-item:last-child{border-bottom:none}.pantry-item .p-label{flex:1;min-width:0}.pantry-item .p-amt{color:var(--muted);font-size:13px;font-weight:600}.exp-badge{white-space:nowrap;border-radius:999px;padding:3px 9px;font:700 11px Public Sans,sans-serif}.exp-badge.soon{color:#7a5a12;background:var(--honey-soft)}.exp-badge.expired{color:#fff;background:var(--danger)}.exp-date{color:var(--muted);white-space:nowrap;font-size:12px}.pantry-item .p-edit{color:var(--green);cursor:pointer;background:0 0;border:none;padding:0;font:600 13px Public Sans,sans-serif}.pantry-item .rm{width:30px;height:30px}.what-can-i-make{margin-top:30px}.match-controls{flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 16px;display:flex}.match-controls .variant-toggle{margin:0}@media (max-width:720px){.pantry-form{grid-template-columns:1fr 64px 72px;grid-auto-rows:auto}}.login-card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);max-width:380px;margin:40px auto;padding:24px}.login-card h2{margin:0 0 14px;font:650 22px/1.2 Fraunces,serif}.login-card p{color:var(--muted);margin:0;font-size:14px}.login-card .save{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px 22px;font:700 15px Public Sans,sans-serif}.login-card .save:disabled{opacity:.5;cursor:default}.login-card .modal-msg{margin-top:10px;display:block}.top-nav button.linklike{color:var(--green-deep);cursor:pointer;background:0 0;border:none;padding:0;font:600 14px Public Sans,sans-serif}.top-nav button.linklike:hover{color:var(--green);text-decoration:underline}.modal-msg a,.sync-note a{color:inherit;font-weight:700}
