:root{--bg:#f8f9fa;--surface:#fff;--surface2:#f1f3f5;--border:#e9ecef;--text:#111318;--text2:#6c757d;--accent:#2d6a4f;--accent-light:#d8f3dc;--accent-dim:#40916c;--red:#c0392b;--red-light:#fdecea;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow:0 4px 12px #00000014;--shadow-lg:0 16px 40px #0000001f;--radius-sm:8px;--radius:14px;--radius-lg:20px;--nav-height:64px}[data-theme=dark]{--bg:#0f1117;--surface:#1a1d27;--surface2:#222635;--border:#2d3142;--text:#f0f2f5;--text2:#8b92a5;--accent:#40916c;--accent-light:#1b3a2d;--accent-dim:#52b788;--red:#e55353;--red-light:#2d1515;--shadow-sm:0 1px 3px #0000004d;--shadow:0 4px 12px #0006;--shadow-lg:0 16px 40px #00000080}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);min-height:100dvh;font-family:-apple-system,Inter,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;transition:background .2s,color .2s}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.app-shell{min-height:100dvh;padding-bottom:var(--nav-height);flex-direction:column;display:flex}.app-header{z-index:100;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;height:56px;padding:0 16px;display:flex;position:sticky;top:0}.app-header-title{letter-spacing:-.3px;font-size:17px;font-weight:600}.app-header-actions{align-items:center;gap:8px;display:flex}.icon-btn{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text2);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;transition:background .15s,color .15s;display:flex}.icon-btn:hover{background:var(--surface2);color:var(--text)}.main-content{flex:1;width:100%;max-width:600px;margin:0 auto;padding:16px}.bottom-nav{height:var(--nav-height);background:var(--surface);border-top:1px solid var(--border);z-index:100;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{color:var(--text2);letter-spacing:.3px;text-transform:uppercase;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:8px 4px;font-size:10px;font-weight:500;transition:color .15s;display:flex}.nav-item svg{stroke-width:1.75px;width:22px;height:22px}.nav-item.active{color:var(--accent)}.nav-item.active svg{stroke-width:2.25px}.btn{border-radius:var(--radius-sm);white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 18px;font-size:14px;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dim)}.btn-ghost{color:var(--text2);border:1px solid var(--border);background:0 0}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn-danger{background:var(--red-light);color:var(--red)}.btn-danger:hover{background:var(--red);color:#fff}.btn-sm{padding:7px 12px;font-size:13px}.btn-full{width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.section-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text2);padding:16px 16px 8px;font-size:11px;font-weight:600}.cal-nav{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.cal-nav-label{text-align:center;flex:1;font-size:15px;font-weight:600}.day-row{border-bottom:1px solid var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:14px;padding:14px 16px;transition:background .12s;display:flex}.day-row:last-child{border-bottom:none}.day-row:active{background:var(--surface2)}.day-row-date{flex-direction:column;align-items:center;min-width:36px;display:flex}.day-row-weekday{letter-spacing:.8px;text-transform:uppercase;color:var(--text2);font-size:10px;font-weight:600}.day-row-num{color:var(--text);font-size:22px;font-weight:300;line-height:1.1}.day-row.today .day-row-num{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;font-weight:600;display:flex}.day-row-meal{flex:1;min-width:0}.day-row-meal-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.day-row-meal-name.empty{color:var(--text2);font-weight:400}.day-row-meal-name.leftover{color:var(--accent-dim)}.day-row-meal-notes{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.day-row-chevron{color:var(--border);flex-shrink:0}.grocery-cat-label{letter-spacing:.8px;text-transform:uppercase;color:var(--accent);padding:14px 16px 6px;font-size:11px;font-weight:600}.grocery-item{border-top:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;transition:background .12s;display:flex}.grocery-item:active{background:var(--surface2)}.grocery-checkbox{border:2px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;transition:all .15s;display:flex}.grocery-checkbox.checked{background:var(--accent);border-color:var(--accent)}.grocery-checkbox.checked svg{display:block}.grocery-checkbox svg{stroke:#fff;stroke-width:3px;width:12px;height:12px;display:none}.grocery-item-label{cursor:pointer;flex:1;min-width:0;font-size:15px}.grocery-item.checked .grocery-item-label{color:var(--text2);text-decoration:line-through}.gf-badge{color:#b45309;white-space:nowrap;background:#fff8e6;border:1px solid #fde68a;border-radius:4px;flex-shrink:0;padding:2px 5px;font-size:10px;font-weight:600}[data-theme=dark] .gf-badge{color:#fbbf24;background:#2d2000;border-color:#78350f}.del-btn{width:28px;height:28px;color:var(--text2);opacity:0;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .15s,background .15s;display:flex}.grocery-item:hover .del-btn{opacity:1}.del-btn:hover{background:var(--red-light);color:var(--red)}.add-item-form{border-top:1px solid var(--border);background:var(--surface2);flex-direction:column;gap:10px;padding:12px 16px;display:flex}.add-item-row{gap:8px;display:flex}.field-label{letter-spacing:.6px;text-transform:uppercase;color:var(--text2);margin-bottom:6px;font-size:11px;font-weight:600;display:block}.input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);-webkit-appearance:none;outline:none;padding:10px 12px;font-size:15px;transition:border-color .15s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text2)}select.input{cursor:pointer}textarea.input{resize:vertical;min-height:80px;line-height:1.5}.checkbox-row{color:var(--text2);cursor:pointer;align-items:center;gap:10px;font-size:14px;display:flex}.checkbox-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.sheet-overlay{z-index:200;background:#0006;align-items:flex-end;animation:.15s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet{background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);animation:.25s cubic-bezier(.34,1.56,.64,1) slide-up;overflow-y:auto}.sheet-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:12px auto 4px}.sheet-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 20px 16px;display:flex}.sheet-title{letter-spacing:-.2px;font-size:17px;font-weight:600}.sheet-body{flex-direction:column;gap:16px;padding:20px;display:flex}.sheet-footer{border-top:1px solid var(--border);gap:10px;padding:12px 20px 20px;display:flex}.sync-pill{bottom:calc(var(--nav-height) + 12px);background:var(--surface);border:1px solid var(--border);color:var(--text2);box-shadow:var(--shadow);z-index:150;pointer-events:none;border-radius:20px;align-items:center;gap:6px;padding:6px 12px 6px 8px;font-size:12px;transition:opacity .3s;display:flex;position:fixed;right:16px}.sync-pill.hidden{opacity:0}.sync-pill.saving,.sync-pill.saved{color:var(--accent);border-color:var(--accent)}.sync-pill.error{color:var(--red);border-color:var(--red);pointer-events:auto;cursor:pointer}.sync-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.sync-dot.spinning{background:0 0;border:2px solid;border-top-color:#0000;border-radius:50%;width:10px;height:10px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.import-status{border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;display:none}.import-status.ok{background:var(--accent-light);color:var(--accent);display:block}.import-status.err{background:var(--red-light);color:var(--red);display:block}.profile-row{align-items:center;gap:14px;padding:16px;display:flex}.profile-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:44px;height:44px}.profile-name{font-size:15px;font-weight:600}.profile-email{color:var(--text2);margin-top:2px;font-size:13px}.settings-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;font-size:15px;display:flex}.settings-row-label{color:var(--text2);margin-top:2px;font-size:13px}.empty-state{text-align:center;color:var(--text2);padding:48px 24px;font-size:14px;line-height:1.6}.empty-state-icon{margin-bottom:12px;font-size:36px}.toggle{flex-shrink:0;width:44px;height:26px;position:relative}.toggle input{opacity:0;width:0;height:0;position:absolute}.toggle-track{background:var(--border);cursor:pointer;border-radius:13px;transition:background .2s;position:absolute;inset:0}.toggle input:checked+.toggle-track{background:var(--accent)}.toggle-track:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle input:checked+.toggle-track:after{transform:translate(18px)}.stack{flex-direction:column;gap:12px;display:flex}.divider{background:var(--border);height:1px}.page-title{letter-spacing:-.5px;margin-bottom:16px;font-size:22px;font-weight:700}
