:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fafafa;--surface:#fff;--surface-2:#f3f3f3;--fg:#222;--muted:#666;--border:#ddd;--border-strong:#c4c4c4;--accent:#1d6f6a;--accent-fg:#fff;--accent-hover:#155753;--danger:#b04141;--shadow:0 1px 2px rgba(0,0,0,.04);--radius:6px;--gap:.75rem;--tap:44px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#161616;--surface:#1f1f1f;--surface-2:#262626;--fg:#ececec;--muted:#9a9a9a;--border:#333;--border-strong:#444;--accent:#4ec3b8;--accent-fg:#0e1f1e;--accent-hover:#66d3c9;--danger:#e07a7a;--shadow:0 1px 2px rgba(0,0,0,.4)}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);margin:0;padding:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:1.4}#content{max-width:720px;margin:0 auto;padding:1rem 0}h1{margin:.5rem 0;font-size:1.75rem}h2{margin:1rem 0 .5rem;font-size:1.25rem}h3{color:var(--muted);margin:.75rem 0 .25rem;font-size:1rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.page-header{justify-content:space-between;align-items:center;gap:var(--gap);flex-wrap:wrap;margin-bottom:1rem;display:flex}.empty,.error{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.error{border-color:var(--danger);color:var(--danger)}ul.recipe-list{margin:0;padding:0;list-style:none}ul.recipe-list li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.5rem}ul.recipe-list li a{min-height:var(--tap);color:var(--fg);padding:1rem;font-weight:500;display:block}ul.recipe-list li .meal-row-main{align-items:stretch;display:flex}ul.recipe-list li .meal-row-main>a{flex:1}ul.recipe-list li .meal-row-main .row-actions{align-items:center;gap:.4rem;padding-right:.75rem;display:flex}ul.recipe-list li .meal-row-main .row-actions>a,ul.recipe-list li .meal-row-main .row-actions>button{min-height:36px;padding:.4rem .8rem;font-weight:400;display:inline-flex}ul.recipe-list li>.row-error{margin:0 1rem .75rem}.hero{text-align:center;padding:3rem 1rem}.hero p{color:var(--muted);margin-bottom:1.5rem}button,.button,.button-link{min-height:var(--tap);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--fg);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.6rem 1rem;text-decoration:none;display:inline-flex}button.primary,.button{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:500}button.primary:hover,.button:hover,button.primary:active,.button:active{background:var(--accent-hover);border-color:var(--accent-hover);text-decoration:none}button.secondary{background:var(--surface)}button.danger{color:var(--danger);border-color:var(--danger);background:var(--surface)}button.small{min-height:32px;padding:.25rem .5rem}button:disabled{opacity:.6;cursor:not-allowed}select{min-height:var(--tap);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--fg);font:inherit;cursor:pointer;align-items:center;padding:.6rem 1rem;display:inline-flex}button.icon-button{width:32px;min-height:32px;color:var(--muted);background:0 0;border-color:transparent;padding:0}@media (hover:hover){button.icon-button:hover{color:var(--accent);border-color:var(--border-strong);background:var(--surface)}}button.icon-button:active{color:var(--accent);border-color:var(--border-strong);background:var(--surface)}button.icon-button svg{display:block}.page-header-actions{align-items:center;gap:.25rem;display:inline-flex}button.icon-button.wake-toggle.on{color:#b8860b}button.icon-button.wake-toggle.on svg path{fill:#fcefb4}@media (prefers-color-scheme:dark){button.icon-button.wake-toggle.on{color:#e5b94a}button.icon-button.wake-toggle.on svg path{fill:#5a4a14}}button.icon-button.trash{color:#9c6058}@media (hover:hover){button.icon-button.trash:hover{color:var(--danger)}}button.icon-button.trash:active{color:var(--danger)}.button-link{color:var(--fg)}.button-link:hover,.button-link:active{background:var(--surface-2);text-decoration:none}.form-actions{gap:var(--gap);align-items:center;margin-top:.5rem;margin-left:auto;display:flex}form.recipe-form{gap:var(--gap);flex-direction:column;display:flex}form.recipe-form label{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}form.recipe-form input,form.recipe-form textarea,form.recipe-form select{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:var(--surface);color:var(--fg);padding:.5rem}form.recipe-form input:focus,form.recipe-form textarea:focus,form.recipe-form select:focus{outline:2px solid var(--accent);outline-offset:-1px}form.recipe-form textarea{resize:none;field-sizing:content;box-sizing:border-box;width:100%;overflow:hidden}form.recipe-form input:disabled{background:var(--surface-2);color:var(--muted)}fieldset.step{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);gap:var(--gap);box-shadow:var(--shadow);flex-direction:column;padding:.75rem;display:flex}fieldset.step legend{color:var(--muted);padding:0 .5rem}fieldset.step legend.step-legend{box-sizing:border-box;justify-content:space-between;align-items:center;gap:.5rem;width:100%;display:flex}fieldset.step .step-actions{gap:.25rem;display:flex}.ingredient-row{grid-template-columns:3.5rem 6rem 1fr auto;align-items:start;gap:.4rem;padding:.2rem 0;display:grid}.ingredient-row .qty{text-align:right}.ingredient-row .name-cell{flex-direction:column;display:flex}.ingredient-status{font-size:.75rem;line-height:1}.ingredient-status.existing{color:var(--muted)}.ingredient-status.new{color:var(--accent);font-weight:500}.autocomplete{position:relative}.autocomplete>input{width:100%}.autocomplete-popup{z-index:10;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);max-height:240px;margin:2px 0 0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.15)}.autocomplete-popup li{cursor:pointer;color:var(--fg);padding:.4rem .6rem;line-height:1.3}.autocomplete-popup li.active{background:var(--surface-2)}.kbd-hint{color:var(--muted);margin-left:.4rem;font-size:.85em;font-weight:400}.recipe .source{color:var(--muted);margin-bottom:1rem;font-size:.9rem}.recipe table.recipe-steps{border-collapse:collapse;table-layout:fixed;width:100%}.recipe table.recipe-steps tr:nth-child(odd){background:var(--surface)}.recipe table.recipe-steps tr:nth-child(2n){background:var(--surface-2)}.recipe table.recipe-steps td{vertical-align:top;padding:.75rem}.recipe table.recipe-steps td.instruction{width:60%}.recipe table.recipe-steps td.ingredients{width:40%;color:var(--muted);border-left:1px solid var(--border);font-size:.95rem}.recipe table.recipe-steps td.ingredients .ingredient-block+.ingredient-block{margin-top:.5rem}.recipe table.recipe-steps td.instruction .instruction-block>:first-child{margin-top:0}.recipe table.recipe-steps td.instruction .instruction-block>:last-child{margin-bottom:0}.recipe table.recipe-steps td.instruction .instruction-block+.instruction-block{margin-top:.5rem}.recipe table.recipe-steps td.instruction p{margin:.5rem 0}.recipe table.recipe-steps td.instruction ul,.recipe table.recipe-steps td.instruction ol{margin:.5rem 0;padding-left:1.25rem}.recipe table.recipe-steps td.instruction code{background:var(--bg);border-radius:3px;padding:.1rem .3rem;font-size:.9em}.recipe table.recipe-steps td.instruction pre{background:var(--bg);border-radius:var(--radius);padding:.5rem;overflow-x:auto}@media (width<=600px){.recipe table.recipe-steps,.recipe table.recipe-steps tbody,.recipe table.recipe-steps tr,.recipe table.recipe-steps td{width:100%}.recipe table.recipe-steps td.ingredients{border-left:none;border-top:1px dashed var(--border);padding-top:.5rem}}.meal-row{grid-template-columns:1fr 5rem auto;align-items:center;gap:.4rem;margin-bottom:.5rem;display:grid}.meal-tabs{flex-wrap:wrap;gap:.4rem;margin:.5rem 0 1rem;padding-bottom:.25rem;display:flex}.meal-tabs .tab{min-height:var(--tap);background:var(--surface);color:var(--fg);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;white-space:nowrap;font:inherit;padding:.5rem .9rem}.meal-tabs .tab.active{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.meal-tabs .tab-mult{opacity:.85;margin-left:.3em;font-weight:500}.incomplete-summary{color:var(--danger);font-size:.9rem;font-weight:500}ul.ingredient-rows{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.ingredient-row-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.ingredient-row-card.incomplete{border-left:4px solid var(--danger)}.ingredient-row-grid{grid-template-columns:2fr 1fr 1.5fr auto;align-items:end;gap:.5rem;display:grid}@media (width<=700px){.ingredient-row-grid{grid-template-columns:1fr 1fr}}.ingredient-row-grid label{color:var(--muted);flex-direction:column;gap:.25rem;font-size:.85rem;display:flex}.ingredient-row-grid input[type=text]{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:var(--surface);color:var(--fg);padding:.5rem}.ingredient-row-grid input[type=text]:disabled{background:var(--surface-2);color:var(--muted)}.ingredient-row-grid .checkbox-label{color:var(--fg);min-height:var(--tap);flex-direction:row;align-items:center;gap:.4rem;font-size:.95rem}.field-label .warn-tag{color:var(--danger);font-weight:500}.ingredient-row-actions{align-items:center;gap:.5rem;display:flex}.error.inline{box-shadow:none;padding:.25rem .5rem;font-size:.85rem}.saved-tag{color:var(--accent);font-size:.85rem;font-weight:500}.shopping-list{padding-bottom:6rem}.shopping-header{justify-content:space-between;align-items:baseline;gap:var(--gap);margin-bottom:.75rem;display:flex}.shopping-header h1{word-break:break-word;flex:1;margin:0}.shopping-count{font-variant-numeric:tabular-nums;color:var(--muted);background:var(--surface-2);border-radius:999px;padding:.25rem .6rem;font-size:.95rem}.shopping-section{margin-bottom:1.25rem}.shopping-section-header{z-index:1;background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:.5rem;margin:0;padding:.5rem .25rem;display:flex;position:sticky;top:0}.shopping-section-header h2{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;font-size:1.05rem}.shopping-section-count{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.85rem}ul.shopping-items{margin:0;padding:0;list-style:none}.shopping-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);align-items:stretch;margin-top:.4rem;display:flex;overflow:hidden}.shopping-row.checked{background:var(--surface-2)}.shopping-row.checked .shopping-row-text{color:var(--muted);text-decoration:line-through}.shopping-row-tap{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;flex:1;align-items:center;gap:.85rem;min-height:56px;padding:.5rem .75rem;display:flex}.shopping-checkbox{width:1.5rem;height:1.5rem;accent-color:var(--accent);cursor:pointer;flex:none}.shopping-row-text{flex-wrap:wrap;flex:1;align-items:baseline;gap:.4rem .6rem;min-width:0;display:flex}.shopping-row-qty{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.shopping-row.checked .shopping-row-qty{color:var(--muted)}.shopping-row-name{word-break:break-word;font-size:1.05rem}.shopping-row-delete{border:none;border-left:1px solid var(--border);width:44px;min-height:56px;color:var(--muted);background:0 0;border-radius:0;flex:none;font-size:1.1rem}.shopping-row-delete:hover,.shopping-row-delete:active{background:var(--surface-2);color:var(--danger)}.shopping-add-bar{padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);margin:1rem -1rem 0;position:sticky;bottom:0}.shopping-add-toggle{width:100%}form.shopping-add{flex-direction:column;gap:.5rem;display:flex}form.shopping-add input,form.shopping-add select{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:var(--surface);color:var(--fg);padding:.5rem .6rem}form.shopping-add input:focus,form.shopping-add select:focus{outline:2px solid var(--accent);outline-offset:-1px}.shopping-add-qty-row{grid-template-columns:5rem 1fr 1fr;gap:.4rem;display:grid}.shopping-add-qty{text-align:right;font-variant-numeric:tabular-nums}.shopping-add-unit:disabled{background:var(--surface-2);color:var(--muted)}.shopping-add-actions{justify-content:flex-end;gap:.5rem;display:flex}.shopping-add-actions .button,.shopping-add-actions button{flex:1}@media (width>=600px){.shopping-add-bar{border-radius:var(--radius);border:1px solid var(--border);margin-left:0;margin-right:0}.shopping-add-actions .button,.shopping-add-actions button{flex:none}}.step-duration{margin-top:.5rem}.duration-input{font-variant-numeric:tabular-nums;width:12rem}.duration-input.invalid{border-color:var(--danger)}.duration-error{color:var(--danger);margin-left:.5rem;font-size:.85rem}.step-timer-start{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-height:32px;color:var(--fg);cursor:pointer;font-variant-numeric:tabular-nums;align-items:center;gap:.4rem;margin-top:.5rem;padding:.35rem .6rem;display:inline-flex}.step-timer-start:hover{color:var(--accent);border-color:var(--border-strong)}.step-timer-duration{font-weight:600}.timer-bar{background:var(--surface);border-top:1px solid var(--border-strong);z-index:100;padding:.3rem .5rem;position:fixed;bottom:0;left:0;right:0;overflow:visible;box-shadow:0 -2px 6px rgba(0,0,0,.08)}main#content{padding-bottom:4rem}.timer-list{flex-flow:wrap;align-items:flex-start;gap:.3rem .5rem;margin:0;padding:0;list-style:none;display:flex}.timer-row{border-radius:var(--radius);background:var(--surface-2);cursor:pointer;padding:.2rem .5rem;position:relative}.timer-row-main{align-items:center;gap:.4rem;display:flex}.timer-popover{cursor:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);z-index:101;white-space:nowrap;min-width:11rem;color:var(--fg);flex-direction:column;gap:.45rem;padding:.55rem .65rem;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;box-shadow:0 2px 10px rgba(0,0,0,.18)}.timer-popover-step{color:var(--muted);font-size:.85rem}.timer-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.timer-step{color:var(--muted);white-space:nowrap;font-size:.85rem}.timer-remaining{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1rem;font-weight:600}.timer-row.expired{color:var(--danger)}.timer-row.ringing{animation:1s ease-in-out infinite timer-pulse}@keyframes timer-pulse{0%,to{background:var(--surface-2)}50%{background:rgba(176,65,65,.18)}}.timer-actions{flex-wrap:wrap;gap:.3rem;display:flex}.timer-action{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;min-height:32px;padding:.25rem .6rem;font-size:.85rem}.timer-action:hover{border-color:var(--border-strong);color:var(--accent)}.timer-action.silence{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.timer-action.dismiss{color:var(--danger)}