:root{--bg: #faf8f5;--surface: #ffffff;--text: #2b2622;--muted: #8a8178;--line: #e6e0d8;--accent: #b3541e;--accent-soft: #f6e3d4;--ok: #3a7d44;--ok-soft: #e2f0e4;--warn: #b3541e;--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font-size:16px;line-height:1.45;overflow-x:hidden}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}img{max-width:100%}.layout{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.topbar-title{font-weight:700;font-size:1.1rem}.lang-toggle{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.3rem .8rem;min-height:40px}.content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1rem}.page-loading{min-height:40vh}.catalog-toolbar{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem;align-items:center}.search-input{flex:1 1 240px;padding:.55rem .9rem;border:1px solid var(--line);border-radius:var(--radius);font:inherit;min-height:44px}.mode-toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.mode-toggle button{border:none;background:var(--surface);padding:.45rem .9rem;min-height:44px}.mode-toggle button[aria-pressed=true]{background:var(--accent);color:#fff}.filter-toggle{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:.45rem .9rem;min-height:44px}.filters{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:.9rem;margin-bottom:1rem;display:grid;gap:.8rem;grid-template-columns:1fr}@media(min-width:720px){.filters{grid-template-columns:repeat(2,1fr)}}.filter-field{display:grid;gap:.3rem}.filter-field>label{font-size:.85rem;color:var(--muted)}.filter-field select,.filter-field input{padding:.45rem .7rem;border:1px solid var(--line);border-radius:var(--radius);font:inherit;min-height:42px;background:var(--surface)}.chip-row{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--accent-soft);border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;font-size:.9rem}.chip button{border:none;background:none;padding:0 .1rem;font-size:1rem;line-height:1}.chip--tag{background:var(--surface)}.card-grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.recipe-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s}.recipe-card:hover{box-shadow:0 4px 14px #00000014}.recipe-card-thumb{aspect-ratio:3 / 2;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:2rem;overflow:hidden}.recipe-card-thumb img{width:100%;height:100%;object-fit:cover}.recipe-card-body{padding:.7rem .85rem;display:grid;gap:.45rem}.recipe-card-title{font-weight:600}.recipe-card-meta{color:var(--muted);font-size:.85rem;display:flex;gap:.7rem}.badge-missing{background:var(--accent-soft);color:var(--warn);border-radius:var(--radius);padding:.3rem .55rem;font-size:.85rem}.badge-full{background:var(--ok-soft);color:var(--ok);border-radius:var(--radius);padding:.3rem .55rem;font-size:.85rem}.empty-state,.error-state{text-align:center;color:var(--muted);padding:3rem 1rem}.error-state button{margin-top:.8rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:.5rem 1.1rem}.sentinel{height:1px}.combobox{position:relative}.combobox input{width:100%;padding:.45rem .7rem;border:1px solid var(--line);border-radius:var(--radius);font:inherit;min-height:42px}.combobox-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 20px #0000001a;list-style:none;margin:0;padding:.25rem;max-height:260px;overflow-y:auto;z-index:30}.combobox-list li{padding:.45rem .6rem;border-radius:6px;cursor:pointer}.combobox-list li[aria-selected=true],.combobox-list li:hover{background:var(--accent-soft)}.pantry{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:.9rem;margin-bottom:1rem;display:grid;gap:.7rem}.pantry-label{font-weight:600}.subtle-notice{color:var(--muted);font-size:.85rem}.view-switcher{display:flex;gap:.4rem;margin-bottom:.9rem;position:sticky;top:56px;background:var(--bg);padding:.4rem 0;z-index:15}.view-switcher a{flex:1;text-align:center;border:1px solid var(--line);border-radius:999px;padding:.5rem .9rem;min-height:44px;display:flex;align-items:center;justify-content:center;background:var(--surface)}.view-switcher a.active{background:var(--accent);border-color:var(--accent);color:#fff}.portion-control{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem}.portion-presets{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.portion-presets button{border:none;background:var(--surface);padding:.4rem .7rem;min-height:42px}.portion-presets button[aria-pressed=true]{background:var(--accent);color:#fff}.portion-servings{display:inline-flex;align-items:center;gap:.5rem}.portion-servings button{border:1px solid var(--line);background:var(--surface);border-radius:999px;width:42px;height:42px;font-size:1.2rem}.recipe-cover{width:100%;max-height:340px;object-fit:cover;border-radius:var(--radius)}.image-placeholder{background:var(--accent-soft);border-radius:var(--radius);min-height:120px}.recipe-full h1{margin:.7rem 0 .3rem}.recipe-description{color:var(--muted)}.ingredient-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;margin:1rem 0}.ingredient-list ul{list-style:none;margin:0;padding:0}.ingredient-group-label{font-weight:600;margin:.5rem 0 .2rem}.ingredient-row{display:flex;align-items:baseline;gap:.55rem;padding:.3rem 0;cursor:pointer}.ingredient-row input{width:20px;height:20px}.ingredient-name{flex:1}.quantity-original{color:var(--muted)}.step-list{list-style:none;margin:1rem 0;padding:0;display:grid;gap:.8rem}.step-item{display:flex;gap:.8rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.8rem}.step-index{flex:0 0 2rem;height:2rem;border-radius:50%;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-weight:600}.step-body{flex:1;min-width:0}.step-text{margin:0 0 .3rem}.step-meta{display:flex;gap:.7rem;color:var(--muted);font-size:.9rem}.step-entries{margin:.4rem 0 0;padding-left:1.1rem;color:var(--muted);font-size:.92rem}.step-photo{margin-top:.5rem;border-radius:var(--radius);max-height:220px;object-fit:cover}.cook-mode{display:flex;flex-direction:column;gap:.9rem;min-height:60vh}.cook-progress{color:var(--muted);text-align:center}.cook-done-mark{color:var(--ok)}.cook-step{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem;flex:1}.cook-step-text{font-size:1.45rem;line-height:1.4;margin:0 0 .6rem}.cook-entries{margin:.8rem 0 0;padding-left:1.2rem;font-size:1.05rem}.cook-nav{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;position:sticky;bottom:0;background:var(--bg);padding:.6rem 0}.cook-nav-back,.cook-nav-next{border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1.4rem;min-height:52px;min-width:110px;font-size:1.05rem;background:var(--surface)}.cook-nav-next{background:var(--accent);border-color:var(--accent);color:#fff}.timer-start{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:.55rem 1rem;min-height:48px;font-size:1.05rem}.timer,.timer-strip-item{display:inline-flex;align-items:center;gap:.5rem}.timer button,.timer-strip-item button{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:44px;min-height:40px}.timer-clock{font-variant-numeric:tabular-nums;font-weight:600;font-size:1.15rem}.timer--done .timer-clock{color:var(--warn)}.timer-strip{display:flex;flex-direction:column;gap:.4rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem .8rem;position:sticky;top:108px;z-index:14}.timer-strip-item.timer--done{background:var(--accent-soft);border-radius:var(--radius);padding:.25rem .5rem}.timer-strip-label{border:none!important;background:none!important;text-align:left;flex:1;color:var(--muted)}.summary-container{display:grid;gap:1rem}.summary-grid{display:grid;gap:2px;background:var(--line);border:2px solid var(--line);border-radius:var(--radius);overflow-x:auto}.summary-grid>*{background:var(--surface);padding:.5rem .6rem;text-align:left;min-width:0;overflow-wrap:break-word}.summary-prep-row{border:none;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;background:var(--accent-soft)}.summary-ingredient-name{font-weight:500}.summary-ingredient-qty{color:var(--muted);white-space:nowrap}.summary-cell{border:none;display:flex;flex-wrap:wrap;align-content:center;font-size:.95rem;line-height:1.35}.summary--highlight{outline:2px solid var(--accent);outline-offset:-2px}.summary-cell[aria-pressed=true],.summary-prep-row[aria-pressed=true],.vertical-node[aria-pressed=true]{background:var(--accent);color:#fff}.summary--done:not([aria-pressed=true]){background:var(--ok-soft)}.summary-done-mark{color:var(--ok);font-weight:700}.summary-cell[aria-pressed=true] .summary-done-mark,.vertical-node[aria-pressed=true] .summary-done-mark{color:#fff}.step-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem;position:sticky;bottom:.5rem;box-shadow:0 6px 18px #0000001f}.step-panel-text{margin:0 0 .4rem;font-size:1.05rem}.cook-from-step{display:inline-block;margin-top:.6rem;background:var(--accent);color:#fff;border-radius:var(--radius);padding:.55rem 1rem;min-height:44px}.summary-vertical{display:flex;flex-direction:column;gap:.6rem}.vertical-node{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:.7rem .8rem;text-align:left;display:grid;gap:.45rem;width:100%}.vertical-branches{display:flex;gap:.6rem;align-items:flex-start}.vertical-branch-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:.6rem}.vertical-branch-section{display:flex;flex-direction:column;gap:.6rem;border-left:3px solid var(--accent-soft);padding-left:.6rem}.vertical-converge{color:var(--muted);font-size:.9rem;padding:.1rem 0 .3rem}.vertical-prep .vertical-node{background:var(--accent-soft)}
