:root{--bg: #f4f6fa;--panel: #ffffff;--border: #e2e6ee;--text: #1f2733;--muted: #7a8499;--primary: #3f9b54;--primary-d: #2f7d42;--danger: #e74c3c;--ok: #2ecc71;--warn: #e69500;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1{font-size:1.5rem;margin:0}h2{font-size:1.1rem;margin:0}h3{font-size:1rem;margin:0 0 .5rem}a{color:var(--primary-d);text-decoration:none}.center-screen{min-height:100vh;display:grid;place-items:center;padding:1rem}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:2.5rem;max-width:380px;text-align:center;box-shadow:0 4px 24px #0000000d}.login-card h1{margin-bottom:.5rem}.muted{color:var(--muted)}.app-version{position:fixed;right:.5rem;bottom:.25rem;z-index:5;font-size:.7rem;color:var(--muted);opacity:.6;pointer-events:none;-webkit-user-select:none;user-select:none}.topbar{display:flex;align-items:center;gap:1.5rem;padding:0 1.25rem;height:56px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.brand{font-weight:700;white-space:nowrap}.nav-drawer{display:flex;flex:1;align-items:center;justify-content:space-between;gap:1.5rem}.nav{display:flex;gap:1rem}.nav a{color:var(--muted);padding:.35rem 0;border-bottom:2px solid transparent}.nav a.active{color:var(--text);border-bottom-color:var(--primary)}.nav-toggle{display:none;background:none;border:none;cursor:pointer;font-size:1.35rem;line-height:1;color:var(--text);padding:.25rem .5rem;border-radius:8px}.nav-toggle:focus-visible{outline:2px solid rgba(63,155,84,.5)}.user{display:flex;align-items:center;gap:.75rem}.user-email{font-size:.85rem;color:var(--muted)}.content{max-width:1100px;margin:0 auto;padding:1.25rem}.page{display:flex;flex-direction:column;gap:1.25rem}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);padding:.5rem .9rem;border-radius:8px;cursor:pointer;font-size:.9rem}.btn:hover{border-color:var(--primary)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-d)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-link{background:none;border:none;color:var(--primary-d);cursor:pointer;padding:0 .25rem;font-size:.85rem}.btn-link.danger{color:var(--danger)}.btn-sm{padding:.3rem .6rem;font-size:.8rem}.section{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;gap:1rem;flex-wrap:wrap}input,select{padding:.45rem .55rem;border:1px solid var(--border);border-radius:7px;font-size:.9rem;background:#fff;color:var(--text)}input:focus,select:focus{outline:2px solid rgba(63,155,84,.3);border-color:var(--primary)}.search{min-width:200px}.error-banner{background:#fdecea;color:#b02a1a;border:1px solid #f5c6c0;padding:.5rem .75rem;border-radius:8px;margin-top:.5rem;font-size:.85rem}.empty-state{padding:.75rem .25rem;font-size:.9rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--muted);font-weight:600}.row-actions{display:flex;gap:.5rem}.editor-table input,.editor-table select{width:100%;min-width:90px}.row-inactive{opacity:.55}.field-error{color:var(--danger)}.badge-ok{color:var(--ok);font-weight:600}.badge-pending{color:var(--warn);font-weight:600}.new-list-form,.food-add-form{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.food-add-form .search{flex:1;min-width:200px}.catalog-filters{display:flex;gap:.5rem;flex-wrap:wrap}.catalog-count{font-size:.8rem;margin-bottom:.5rem}.list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem}.list-card{border:1px solid var(--border);border-radius:10px;padding:.75rem .9rem;display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;background:var(--panel);transition:border-color .12s,box-shadow .12s}.list-card:hover{border-color:var(--primary);box-shadow:0 2px 12px #0000000d}.list-card-main{flex:1;min-width:0;color:var(--text)}.list-card-title{font-weight:600;margin-bottom:.35rem;overflow:hidden;text-overflow:ellipsis}.list-card-meta{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;font-size:.78rem}.badge-status{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:.1rem .45rem;border-radius:999px}.badge-draft{background:#eef0f4;color:#6b7280}.badge-ready{background:#e7f0ff;color:#2f6bd6}.badge-shopped{background:#fff3e0;color:#b9770e}.badge-complete{background:#e7f6ec;color:var(--primary-d)}.detail-title{display:flex;flex-direction:column;gap:.25rem}.detail-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.status-select{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--muted)}.item-summary{font-size:.82rem}.item-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.item-row{display:grid;grid-template-columns:1fr auto auto auto;grid-template-areas:"name qty status remove";align-items:center;gap:.75rem;padding:.5rem .25rem;border-bottom:1px solid var(--border)}.item-name{grid-area:name;font-weight:500;overflow:hidden;text-overflow:ellipsis}.item-qty{grid-area:qty;display:inline-flex;gap:.35rem}.item-qty input{width:72px;text-align:right}.item-status{grid-area:status;display:inline-flex;gap:.25rem;flex-wrap:wrap}.item-remove{grid-area:remove;font-size:1rem}.item-purchased .item-name{text-decoration:line-through;color:var(--muted)}.item-ignore .item-name{opacity:.5;text-decoration:line-through}.item-missing .item-name{color:var(--danger)}.pill{border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:999px;padding:.2rem .6rem;font-size:.75rem;cursor:pointer;line-height:1.2}.pill:hover{border-color:var(--primary)}.pill.active.pill-buy{background:var(--primary);color:#fff;border-color:var(--primary)}.pill.active.pill-purchased{background:#2f6bd6;color:#fff;border-color:#2f6bd6}.pill.active.pill-missing{background:var(--danger);color:#fff;border-color:var(--danger)}.pill.active.pill-ignore{background:#6b7280;color:#fff;border-color:#6b7280}.sections{display:flex;flex-direction:column;gap:1rem}.store-section{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:.85rem 1rem}.store-section-head{display:flex;align-items:baseline;gap:.75rem;margin-bottom:.6rem;flex-wrap:wrap}.store-section-head h3{font-size:1.05rem}.store-section-meta{font-size:.78rem;flex:1}.combo{position:relative;max-width:520px}.combo-input{width:100%}.combo-list{position:absolute;z-index:30;top:calc(100% + 2px);left:0;right:0;list-style:none;margin:0;padding:.25rem .25rem 0;max-height:320px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 28px #0000001f}.combo-option{display:flex;justify-content:space-between;gap:.75rem;align-items:baseline;padding:.45rem .55rem;border-radius:6px;cursor:pointer}.combo-option.active{background:#eef6f0}.combo-name{font-size:.9rem}.combo-meta{font-size:.72rem;color:var(--muted);white-space:nowrap}.combo-create{position:sticky;bottom:0;z-index:1;margin-top:.15rem;padding-bottom:.55rem;background:var(--panel);border-top:1px solid var(--border);border-bottom-left-radius:7px;border-bottom-right-radius:7px;box-shadow:0 -6px 10px -8px #0000002e}.combo-create .combo-name{color:var(--primary-d);font-weight:600}.recipe-name-input{font-size:1.3rem;font-weight:700;width:100%;max-width:440px;border:1px solid transparent;border-radius:6px;padding:.15rem .35rem;background:transparent;color:var(--text)}.recipe-name-input:hover,.recipe-name-input:focus{border-color:var(--border);background:#fff}.ingredient-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column}.ingredient-row{display:grid;align-items:center;gap:.5rem;grid-template-columns:minmax(110px,1.3fr) 72px 92px minmax(120px,1.5fr) auto;grid-template-areas:"name qty unit note remove";padding:.4rem .25rem;border-bottom:1px solid var(--border)}.ingredient-name{grid-area:name;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ingredient-qty{grid-area:qty;width:100%;text-align:right}.ingredient-unit{grid-area:unit;width:100%}.ingredient-note{grid-area:note;width:100%}.ingredient-remove{grid-area:remove;font-size:1rem}.step-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.step-row{display:grid;grid-template-columns:auto 1fr auto;gap:.5rem;align-items:start}.step-num{width:1.6rem;height:1.6rem;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--primary);color:#fff;font-size:.8rem;font-weight:600;margin-top:.2rem}.step-text{width:100%;resize:vertical;font-family:inherit}.step-actions{display:flex;flex-direction:column;gap:.1rem;align-items:center}.recipe-notes{width:100%;resize:vertical;font-family:inherit}.tolist-panel{display:flex;flex-direction:column;gap:.85rem;align-items:flex-start}.tolist-hint{font-size:.82rem;margin:0}.tolist-select{width:100%}.tolist-select-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.tolist-select-actions{display:flex;gap:.6rem}.tolist-checks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.25rem .75rem}.tolist-checks label{display:flex;gap:.45rem;align-items:center;font-size:.9rem;cursor:pointer}.tolist-target{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.radio{display:inline-flex;gap:.35rem;align-items:center;font-size:.9rem}@media (max-width: 720px){.topbar{gap:.5rem;padding:0 1rem}.nav-toggle{display:inline-flex;align-items:center}.nav-drawer{display:none;position:absolute;top:56px;left:0;right:0;flex-direction:column;align-items:stretch;gap:.25rem;background:var(--panel);border-bottom:1px solid var(--border);padding:.5rem 1rem 1rem;box-shadow:0 10px 24px #0000001a}.nav-drawer.open{display:flex}.nav{flex-direction:column;gap:0}.nav a{padding:.8rem .25rem;border-bottom:1px solid var(--border);border-left:3px solid transparent}.nav a.active{color:var(--primary-d);border-bottom-color:var(--border);border-left-color:var(--primary);padding-left:.5rem}.user{justify-content:space-between;padding-top:.6rem}.user-email{max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{padding:.85rem}.page{gap:1rem}.section{padding:.85rem .9rem}h1{font-size:1.3rem}.item-row{grid-template-columns:1fr auto auto;grid-template-areas:"name qty remove" "status status status";row-gap:.45rem;column-gap:.6rem}.ingredient-row{grid-template-columns:72px 92px 1fr auto;grid-template-areas:"name name name remove" "qty unit note note";row-gap:.4rem;column-gap:.5rem}}@media (max-width: 760px){.cards-table thead{display:none}.cards-table,.cards-table tbody,.cards-table tr,.cards-table td{display:block;width:100%}.cards-table tr{border:1px solid var(--border);border-radius:10px;padding:.35rem .75rem;margin-bottom:.65rem}.cards-table td{display:flex;justify-content:space-between;gap:1rem;align-items:center;border:none;border-bottom:1px dashed var(--border);padding:.4rem 0;white-space:normal;text-align:right}.cards-table tr td:last-child{border-bottom:none}.cards-table td:before{content:attr(data-label);color:var(--muted);font-weight:600;text-align:left;white-space:nowrap}.cards-table td.row-actions{justify-content:flex-end;gap:1.25rem;padding-top:.5rem}.cards-table td.row-actions:before{content:""}.editor-table input,.editor-table select{max-width:60%}}@media (pointer: coarse){.btn-link,.pill{display:inline-flex;align-items:center;min-height:36px}.row-actions{gap:1rem}.combo-option{padding:.6rem .55rem}}
