:root{--bg: #FFCE5C;--surface: #EFF6FA;--surface-strong: #FFFFFF;--text: #252422;--text-muted: #5f5d58;--border: rgba(37, 36, 34, .12);--danger: #c8283a;--success: #1e7b37;--shadow: 0 1px 3px rgba(37, 36, 34, .1);--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--bg);color:var(--text)}h1{font-size:1.75rem;line-height:1.2;margin:0 0 .5rem}h2{font-size:1.25rem;line-height:1.25;margin:0 0 .75rem}a{color:var(--text);font-weight:600;text-decoration:underline;text-underline-offset:2px}button{font-family:inherit;font-size:1rem;color:inherit;cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:3px solid rgba(37,36,34,.45);outline-offset:2px}#root{min-height:100vh;background:var(--bg)}.container{max-width:720px;margin:0 auto;padding:1rem}@media(min-width:769px){.container{padding:1.5rem 2rem}}.header{border-bottom:1px solid rgba(37,36,34,.08)}.header-content{display:flex;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.logo-link{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none}.logo-text{font-size:1.1rem;font-weight:700}.header-menu{position:relative}.menu-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:none;border-radius:8px}.dropdown-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:180px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #2524222e;z-index:100}.dropdown-item{display:block;width:100%;min-height:44px;padding:0 1rem;text-align:left;background:transparent;border:none;border-radius:6px}.dropdown-item:active,.menu-button:active{background-color:#25242214}.page-header{margin-bottom:1rem}.page-intro{color:var(--text-muted);margin:0 0 1.25rem}.back-link{display:inline-flex;align-items:center;min-height:44px;font-weight:500;text-decoration:none}.section{margin:2rem 0}.muted{color:var(--text-muted)}.loading,.empty-state{text-align:center;padding:2rem 1rem;color:var(--text-muted)}.empty-state p{margin:0 0 1rem}.slow-server-notice{text-align:center;color:var(--text-muted);font-size:.95rem;margin:1rem 0}.offline-banner{background:var(--surface-strong);border-left:4px solid var(--danger);border-radius:6px;padding:.5rem .75rem;font-size:.95rem;margin:0 0 1rem}.update-banner{background:var(--surface-strong);border-left:4px solid var(--success);border-radius:6px;padding:.75rem;margin:0 0 1rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.update-banner-actions{display:flex;gap:.5rem;margin-left:auto}.page-footer-actions{margin-top:2.5rem;display:flex;justify-content:center}.card{background:var(--surface);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.5rem 1.25rem;border:2px solid transparent;border-radius:var(--radius);font-size:1rem;font-weight:600;text-decoration:none;transition:background-color .15s ease}.btn:disabled{opacity:.55}.btn-primary{background-color:var(--text);color:var(--bg)}.btn-secondary{background-color:var(--surface);color:var(--text);border-color:var(--text)}.btn-danger{background-color:var(--danger);color:#fff}.btn-danger-outline{background-color:transparent;color:var(--danger);border-color:var(--danger)}.btn-small{min-height:38px;padding:.25rem .85rem;font-size:.9rem}.btn-block{width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;padding:0;background:transparent;border:none;border-radius:8px;color:var(--text-muted)}@media(hover:hover){.btn-primary:hover:not(:disabled){background-color:#3a3836}.btn-secondary:hover:not(:disabled){background-color:var(--surface-strong)}.btn-danger:hover:not(:disabled){background-color:#a91f2f}.btn-danger-outline:hover:not(:disabled){background-color:#c8283a14}.icon-btn:hover,.menu-button:hover,.dropdown-item:hover{background-color:#2524220f;color:var(--text)}}.form-group{margin-bottom:1rem}.form-input{width:100%;min-height:44px;padding:.6rem .9rem;font-size:16px;font-family:inherit;color:var(--text);background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);transition:border-color .15s ease}.form-input:focus{outline:none;border-color:var(--text)}.form-input::placeholder{color:#85837e}.form-input[aria-invalid=true]{border-color:var(--danger)}.form-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.form-error{color:var(--danger);font-size:.95rem;margin:.5rem 0 1rem}.form-success{color:var(--success);font-size:.95rem;margin:.5rem 0 1rem}.add-form{background:var(--surface);border-radius:12px;padding:1rem;margin-top:1rem;box-shadow:var(--shadow)}.settings-form{max-width:400px}.inline-edit-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;width:100%}.inline-edit-form .form-input{flex:1 1 200px}.title-row{display:flex;align-items:center;gap:.25rem;min-width:0}.title-row h1,.title-row h3{margin:0;overflow-wrap:anywhere}.auth-card{max-width:400px;margin:2rem auto}.auth-card h1{margin-top:0}.auth-card .slow-server-notice{margin-bottom:0}.auth-footer{text-align:center;margin:1.25rem 0 0}.list-group-title{margin:1.5rem 0 .5rem;font-size:1rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.card-list{display:flex;flex-direction:column;gap:.6rem;margin:.5rem 0 1.5rem;padding:0;list-style:none}.list-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:56px;padding:.75rem 1rem;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;font-weight:500}.list-card-name{font-size:1.05rem;overflow-wrap:anywhere}.list-card-summary{flex-shrink:0;color:var(--text-muted);font-size:.9rem;font-weight:400}@media(hover:hover){.list-card:hover{box-shadow:0 3px 10px #25242226}}.household-hint{margin-top:2rem;color:var(--text-muted);font-size:.95rem}.list-header{margin:.25rem 0 .75rem}.list-progress{margin:.25rem 0 0}.list-sharing{max-width:400px;margin:0 0 1rem}.add-item-bar{margin-bottom:1rem}.add-item-form{display:flex;gap:.5rem}.add-item-form .form-input{flex:1;background:var(--surface-strong)}.suggestions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.suggestion-chip{min-height:36px;padding:.2rem .75rem;font-size:.9rem;background:var(--surface);border:1px solid var(--border);border-radius:999px}.suggestion-chip:active{background:var(--surface-strong)}.items-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.item-row{display:flex;align-items:center;gap:.25rem;padding-right:.25rem;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.item-check{flex:1;display:flex;align-items:center;gap:.75rem;min-height:52px;padding:.5rem .5rem .5rem .9rem;cursor:pointer;min-width:0}.item-check input[type=checkbox]{flex-shrink:0;width:22px;height:22px;margin:0;accent-color:var(--text);cursor:pointer}.item-name{font-size:1.05rem;font-weight:500;overflow-wrap:anywhere}.item-quantity{flex-shrink:0;color:var(--text-muted);font-size:.95rem}.item-row.is-checked{background:#eff6fa99;box-shadow:none}.item-row.is-checked .item-name{text-decoration:line-through;color:var(--text-muted)}.item-row.is-editing{padding:.75rem}.item-editor{width:100%}.item-editor .form-actions{margin-top:.75rem}.item-editor-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.75rem}.stepper{display:flex;align-items:center;gap:.35rem}.stepper button{width:44px;height:44px;font-size:1.3rem;line-height:1;background:var(--surface-strong);border:2px solid var(--border);border-radius:var(--radius)}.stepper button:disabled{opacity:.4}.stepper .form-input{width:4rem;text-align:center}.checked-section{margin-top:1.5rem}.checked-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.checked-toggle{display:inline-flex;align-items:center;gap:.35rem;min-height:44px;padding:0 .25rem;background:transparent;border:none;font-weight:600;color:var(--text-muted)}.household-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.household-label{margin:.75rem 0 .25rem;font-size:.85rem;font-weight:600;color:var(--text-muted)}.household-members{margin:0;padding:0;list-style:none;overflow-wrap:anywhere}.household-members li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.2rem 0}.invite-row{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.invite-row:has(+.invite-expiry){margin-bottom:.25rem}.invite-expiry{margin:0 0 1rem;font-size:.875rem}.invite-code{font-size:1.25rem;letter-spacing:.15em;background:var(--surface-strong);padding:.25rem .75rem;border-radius:6px}.toast{position:fixed;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom,0px));transform:translate(-50%);width:min(calc(100% - 2rem),480px);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .6rem .6rem 1rem;min-height:52px;background:var(--text);color:#fff;border-radius:var(--radius);box-shadow:0 6px 20px #00000040;z-index:200;animation:toast-in .15s ease-out}.toast-error{background:var(--danger)}.toast-action{flex-shrink:0;min-height:40px;padding:0 .9rem;background:transparent;border:none;border-radius:6px;color:var(--bg);font-weight:700;text-transform:uppercase;letter-spacing:.03em}.toast-error .toast-action{color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.dialog-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:1rem;background:#25242273;z-index:300}.dialog{width:min(100%,420px);padding:1.25rem;background:var(--surface);border-radius:14px;box-shadow:0 10px 40px #0000004d}.dialog-title{margin:0 0 .5rem}.dialog p{margin:0}.dialog-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}.container.has-tab-bar{padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}.tab-bar{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border);z-index:50}.tab-bar-link{flex:1;max-width:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;font-size:.8rem;font-weight:500;color:var(--text-muted);text-decoration:none}.tab-bar-link.active{color:var(--text);font-weight:700}.tab-bar-link.active svg{stroke-width:2.5}body:has(.tab-bar) .toast{bottom:calc(68px + env(safe-area-inset-bottom,0px))}@media(hover:none){.tab-bar{transition:visibility 0s linear .4s}body:has(input:focus,textarea:focus) .tab-bar{visibility:hidden;transition-delay:0s}}.form-label{display:block;margin-bottom:.3rem;font-weight:600;font-size:.95rem}.form-hint{margin:0 0 .4rem;font-size:.875rem;color:var(--text-muted)}.form-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}textarea.form-input{resize:vertical;line-height:1.45}.file-input{font-size:1rem;max-width:100%}.recipes-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.recipes-header h1{margin:0}.header-actions{display:flex;gap:.5rem}.list-card.recipe-card{flex-direction:column;align-items:flex-start;justify-content:center;gap:.15rem}.recipe-card-meta{color:var(--text-muted);font-size:.875rem;font-weight:400}.recipe-meta{margin:0 0 .5rem;color:var(--text-muted)}.recipe-description{margin:0 0 1rem}.recipe-section{margin-bottom:1rem}.recipe-section h2{margin:0}.recipe-section-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.recipe-section>h2{margin-bottom:.5rem}.servings-count{min-width:6.5rem;text-align:center;font-weight:600}.recipe-subheading{margin:1rem 0 .25rem;font-size:.85rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.ingredient-list{margin:0;padding:0;list-style:none}.ingredient-list li{display:flex;gap:.75rem;padding:.4rem 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.ingredient-list li:last-child{border-bottom:none}.ingredient-quantity{flex:0 0 5.5rem;font-weight:600}.step-list{margin:0;padding-left:1.5rem}.step-list li{padding:.35rem 0}.recipe-notes{margin:0;white-space:pre-wrap}.recipe-owner-actions{margin-top:1.5rem}.import-text{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:14px}.import-result{margin-bottom:1.5rem}.import-result p{margin:0 0 .5rem}.import-result ul{margin:0 0 .5rem;padding-left:1.25rem}.add-to-list-button{margin-top:1rem}.ingredient-checklist{margin:0 0 1rem;padding:0;list-style:none}.ingredient-checklist label{display:flex;align-items:center;gap:.75rem;min-height:44px;padding:.25rem 0;border-bottom:1px solid var(--border);cursor:pointer;overflow-wrap:anywhere}.ingredient-checklist input[type=checkbox]{flex-shrink:0;width:22px;height:22px;margin:0;accent-color:var(--text)}.item-text{display:flex;flex-direction:column;flex:1;min-width:0}.item-source{font-size:.8rem;color:var(--text-muted)}.unit-select{width:auto;min-width:5.5rem}.item-editor-actions .btn-danger-outline{margin-left:auto}.form-row.form-row-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-list{margin-top:1.25rem}.plan-days{display:flex;flex-direction:column;gap:.75rem}.card.plan-day{padding:.75rem 1rem}.plan-day.is-past{opacity:.65}.plan-day-title{margin:0 0 .25rem;font-size:1rem}.plan-slot{border-top:1px solid var(--border)}.plan-slot-button{display:flex;align-items:center;gap:.75rem;width:100%;min-height:52px;padding:.4rem 0;background:transparent;border:none;text-align:left}.plan-slot-label{flex:0 0 4rem;font-size:.85rem;font-weight:600;color:var(--text-muted)}.plan-slot-meal{display:flex;flex-direction:column;min-width:0}.plan-slot-name{font-weight:600;overflow-wrap:anywhere}.plan-slot-empty{color:var(--text-muted)}.plan-slot.is-target .plan-slot-button{border-radius:8px;outline:2px dashed rgba(37,36,34,.25);outline-offset:-2px;padding-left:.5rem;margin:.25rem 0}.plan-slot.is-moving .plan-slot-button{background:var(--bg)}.plan-slot-actions{padding:0 0 .75rem}.plan-slot-actions .form-actions{margin-top:.6rem;gap:.5rem}.move-banner{position:sticky;top:.5rem;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem;padding:.6rem .75rem;background:var(--text);color:var(--surface-strong);border-radius:var(--radius);box-shadow:0 4px 16px #25242240}.plan-footer{margin-top:1.5rem;display:flex;flex-direction:column;gap:.75rem}.plan-footer p{margin:0}.plan-delete{align-self:center;margin-top:1rem}.dialog.picker{display:flex;flex-direction:column;gap:.75rem;max-height:min(80vh,640px)}.picker-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.picker-header .dialog-title{margin:0}.picker-list{margin:0;padding:0;list-style:none;overflow-y:auto}.picker-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;min-height:52px;padding:.5rem .25rem;background:transparent;border:none;border-bottom:1px solid var(--border);text-align:left;font-weight:500}@media(hover:hover){.picker-item:hover,.plan-slot-button:hover{background:#2524220a}}.pantry-section{margin-bottom:1rem}.pantry-section h2{margin:0 0 .25rem}.pantry-section .add-item-form .form-input{background:var(--surface-strong)}.pantry-list{margin:.75rem 0 0;padding:0;list-style:none}.pantry-list li{display:flex;align-items:center;gap:.5rem;min-height:48px;border-bottom:1px solid var(--border)}.pantry-list li:last-child{border-bottom:none}.pantry-name{flex:1;min-width:0;font-weight:500;overflow-wrap:anywhere}
