:root{--primary:#4f46e5;--primary-hover:#4338ca;--primary-light:#eef2ff;--bg:#f2f2f7;--card-bg:#fff;--text-main:#1c1c1e;--text-muted:#8e8e93;--border:#e5e5ea;--success:#059669;--success-light:#ecfdf5;--warning:#d97706;--warning-light:#fffbeb;--danger:#dc2626;--danger-light:#fef2f2;--radius:16px;--radius-sm:12px;--shadow:none;--shadow-md:0 8px 32px #0000001a, 0 2px 8px #0000000f}*{box-sizing:border-box;touch-action:manipulation;-webkit-tap-highlight-color:transparent;margin:0;padding:0}button,tr,.card,.meal-slot-content,.picker-option{-webkit-user-select:none;user-select:none}html,body{background-color:var(--bg);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;overflow-x:hidden}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--card-bg);border-radius:var(--radius);border:none;width:380px;max-width:90vw;padding:2.75rem 2.25rem;box-shadow:0 2px 16px #00000012}.login-header{text-align:center;margin-bottom:2rem}.login-header .login-icon{margin-bottom:.5rem;font-size:2.5rem;display:block}.login-header h1{color:var(--primary);letter-spacing:-.03em;font-size:1.6rem;font-weight:700}.login-header p{color:var(--text-muted);margin-top:.25rem;font-size:.875rem}.onboarding-card{background:var(--card-bg);border-radius:var(--radius);border:none;width:480px;max-width:95vw;padding:2.75rem 2.25rem;box-shadow:0 2px 16px #00000012}.template-grid{grid-template-columns:1fr;gap:.75rem;display:grid}.template-card{border:2px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;text-align:left;flex-direction:row;align-items:center;gap:1rem;width:100%;padding:1.1rem 1.25rem;transition:all .15s;display:flex}.template-card:hover:not(:disabled){border-color:var(--primary);background:var(--primary-light)}.template-card:disabled{opacity:.6;cursor:not-allowed}.template-icon{flex-shrink:0;font-size:2rem;line-height:1}.template-text{flex-direction:column;gap:.2rem;display:flex}.template-name{color:var(--text-main);font-size:.95rem;font-weight:700}.template-desc{color:var(--text-muted);font-size:.78rem;line-height:1.3}.template-count{color:var(--primary);background:var(--primary-light);border-radius:9999px;width:fit-content;margin-top:.1rem;padding:.15rem .5rem;font-size:.72rem;font-weight:600}.login-card label{color:var(--text-main);margin-bottom:.35rem;font-size:.875rem;font-weight:500;display:block}.login-card input{font-size:1rem}.app-container{max-width:1200px;margin:0 auto;padding:1.5rem 1.5rem 5rem}.mini-nav{z-index:200;background:var(--card-bg);border-radius:0 0 var(--radius) var(--radius);border:none;align-items:center;gap:.25rem;padding:.4rem .75rem;transition:transform .2s;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)translateY(-100%);box-shadow:0 4px 16px #00000014}.mini-nav--visible{transform:translate(-50%)translateY(0)}.mini-nav button{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:.4rem .55rem;transition:background .15s,color .15s;display:flex;position:relative}.mini-nav button:hover{background:var(--primary-light);color:var(--primary)}.mini-nav button.active{color:var(--primary);background:var(--primary-light)}.mini-nav-badge{border-radius:999px;padding:1px 4px;font-size:.6rem;font-weight:700;line-height:1.4;position:absolute;top:1px;right:1px}.bottom-nav{z-index:200;background:var(--card-bg);border-top:1px solid var(--border);padding:.5rem .25rem calc(.5rem + env(safe-area-inset-bottom));justify-content:space-around;align-items:center;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #0000000f}.bottom-nav button{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:.4rem .6rem;transition:background .15s,color .15s;display:flex;position:relative}.bottom-nav button.active{color:var(--primary);background:var(--primary-light)}.bottom-nav-badge{color:#b91c1c;background:#fee2e2;border-radius:999px;padding:1px 4px;font-size:.6rem;font-weight:700;line-height:1.4;position:absolute;top:-1px;right:-1px}header{background:var(--card-bg);border-radius:var(--radius);box-shadow:none;border:none;justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding:1rem 1.25rem;display:flex}header h1{color:var(--primary);letter-spacing:-.02em;font-size:1.2rem;font-weight:700}.user-pill{color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:9999px;align-items:center;gap:.4rem;padding:.3rem .75rem;font-size:.85rem;font-weight:500;display:flex}.logout-btn{border:1px solid var(--border);color:var(--danger);cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap;background:0 0;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;transition:all .15s;display:flex}.logout-btn:hover{background:var(--danger-light);border-color:var(--danger)}.settings-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;transition:all .15s;display:flex}.settings-btn:hover,.settings-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.help-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;flex-shrink:0;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;transition:all .15s;display:flex}.help-btn:hover,.help-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}nav{background:var(--card-bg);border-radius:var(--radius);box-shadow:none;border:none;grid-template-columns:repeat(4,1fr);gap:.3rem;margin-bottom:1.5rem;padding:.4rem;display:grid}nav button{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;justify-content:center;align-items:center;gap:.25rem;min-width:0;padding:.45rem .25rem;font-size:.78rem;font-weight:500;transition:all .15s;display:flex;overflow:hidden}nav button:hover{background:var(--bg);color:var(--text-main)}nav button.active{background:var(--primary);color:#fff}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:none;border:none;margin-bottom:1rem;padding:1.75rem}.card h3{margin-bottom:1rem;font-size:.95rem;font-weight:600}.card-row{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.card-row h3{margin-bottom:0}.grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;display:grid}button.primary{background:var(--primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:-.01em;border:none;align-items:center;gap:.35rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:600;transition:background .15s,opacity .1s;display:inline-flex}button.primary:hover{background:var(--primary-hover)}button.primary:active{opacity:.82}button.primary:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:var(--bg);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-main);border:none;align-items:center;gap:.35rem;padding:.625rem 1rem;font-size:.875rem;font-weight:500;transition:all .15s;display:inline-flex}button.secondary:hover{background:#e5e5ea}button.secondary:active{opacity:.75}button.secondary:disabled{opacity:.45;cursor:not-allowed}button.danger-outline{border:1.5px solid var(--danger);border-radius:var(--radius-sm);cursor:pointer;color:var(--danger);background:0 0;align-items:center;gap:.4rem;padding:.5rem .9rem;font-size:.875rem;font-weight:600;transition:all .15s;display:inline-flex}button.danger-outline:hover{background:var(--danger-light)}button.danger-outline:disabled{opacity:.6;cursor:not-allowed}button.btn-sm{border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer;color:var(--text-muted);background:0 0;padding:.25rem .65rem;font-size:.78rem;transition:all .15s}button.btn-sm:hover{background:var(--bg)}button.btn-sm.primary{padding:.25rem .65rem;font-size:.78rem}.icon-btn{cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:none;align-items:center;padding:5px;transition:all .15s;display:inline-flex}.icon-btn:hover{color:var(--danger);background:var(--danger-light)}.icon-btn.edit:hover{color:var(--primary);background:var(--primary-light)}.icon-btn.save:hover{color:var(--success);background:var(--success-light)}.qty-btn{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:6px;align-items:center;padding:3px 7px;transition:all .15s;display:inline-flex}.qty-btn:hover{background:var(--primary-light);border-color:var(--primary)}input,select,textarea{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);width:100%;color:var(--text-main);margin-bottom:.75rem;padding:.7rem 1rem;font-family:inherit;font-size:.875rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #4f46e51a}input::placeholder,textarea::placeholder{color:var(--text-muted);font-size:.78rem;transition:opacity .4s}input.ph-fading::placeholder{opacity:0}textarea{resize:vertical;min-height:80px}.form-row-4{grid-template-columns:1fr 90px 100px 1fr auto;align-items:start;gap:8px;display:grid}.form-row-4 input,.form-row-4 select{margin-bottom:0}.form-row-3{grid-template-columns:1fr 80px 90px auto;align-items:start;gap:8px;display:grid}.form-row-3 input{margin-bottom:0}.ingredients-box{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);margin-bottom:.75rem;padding:1rem}.ing-chips{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.instructions-box{background:var(--bg);border-radius:var(--radius-sm);overflow-wrap:break-word;word-break:break-word;max-width:100%;margin-top:.75rem;padding:.75rem;font-size:.875rem}.quick-plan{background:var(--primary-light);border-radius:var(--radius-sm);border:1px solid #4f46e533;flex-wrap:wrap;align-items:center;gap:6px;margin-top:.75rem;padding:.6rem .75rem;display:flex}.quick-plan select{flex:1;min-width:90px;margin-bottom:0;padding:.3rem .5rem;font-size:.8rem}table{border-collapse:collapse;width:100%}th{text-align:left;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);padding:.6rem .75rem;font-size:.68rem;font-weight:700}td{border-bottom:1px solid var(--border);word-break:break-word;padding:.75rem;font-size:.875rem}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg)}.badge{border-radius:9999px;align-items:center;padding:.2rem .55rem;font-size:.72rem;font-weight:600;display:inline-flex}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-success{background:var(--success-light);color:var(--success)}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-primary{background:var(--primary-light);color:var(--primary)}.planner-grid{grid-template-columns:repeat(5,minmax(175px,1.5fr)) repeat(2,minmax(130px,1fr));gap:8px;min-width:1200px;display:grid}.planner-day{background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--border);padding:.75rem}.week-nav{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.week-range{text-align:center;color:var(--text-main);flex:1;font-size:.95rem;font-weight:700}.planner-day-header{text-align:center;margin-bottom:.6rem}.planner-day-abbr{color:var(--primary);letter-spacing:.08em;justify-content:center;align-items:center;gap:4px;font-size:.72rem;font-weight:800;display:flex}.planner-day-date{color:var(--text-muted);margin-top:2px;font-size:.72rem}.planner-day.today .planner-day-date{color:var(--primary);font-weight:600}.meal-slot{background:var(--card-bg);border:1px dashed var(--border);border-radius:6px;margin-bottom:.4rem;padding:.5rem;transition:border-color .15s}.meal-slot:last-child{margin-bottom:0}.meal-slot.has-meal{background:var(--primary-light);border-style:solid;border-color:#4f46e54d}.meal-slot-label{text-transform:uppercase;letter-spacing:.07em;margin-bottom:.3rem;font-size:.62rem;font-weight:800}.meal-slot-label.breakfast,.meal-slot-label.breakfast-2{color:var(--warning)}.meal-slot-label.lunch,.meal-slot-label.lunch-2{color:var(--success)}.meal-slot-label.dinner,.meal-slot-label.dinner-2{color:#7c3aed}.meal-slot-content{border:1px dashed var(--border);background:var(--card-bg);border-radius:6px;align-items:center;gap:4px;min-height:32px;padding:.3rem .4rem;transition:background .15s,border-color .15s;display:flex}.meal-slot.has-meal .meal-slot-content{background:#fff;border-style:solid;border-color:#4f46e54d}.meal-slot-content:hover{border-color:var(--primary);background:var(--primary-light)}.meal-slot-value{color:var(--text-main);-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;font-size:.82rem;font-weight:500;line-height:1.35;display:-webkit-box;overflow:hidden}.meal-slot-empty{color:var(--text-muted);font-size:.72rem;font-style:italic}.meal-slot-content .icon-btn{flex-shrink:0;padding:3px}.meal-picker-sheet{max-height:75vh;padding-bottom:env(safe-area-inset-bottom,1.5rem);align-items:stretch}.meal-picker-sheet .sheet-title{text-align:center;width:100%}.meal-picker-sheet input{margin-bottom:0}.meal-picker-list{border-top:1px solid var(--border);flex-direction:column;flex:1;gap:4px;width:100%;margin-top:.25rem;padding-top:.5rem;display:flex;overflow-y:auto}.meal-picker-item{text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text-main);align-items:center;gap:.25rem;padding:.65rem .9rem;font-size:.875rem;font-weight:500;transition:background .1s,border-color .1s;display:flex}.meal-picker-item:hover,.meal-picker-item.selected{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.meal-picker-clear{color:var(--danger);background:var(--danger-light);border-color:#dc26264d}.picker-option{text-align:center;border:none;border-bottom:1px solid var(--border);cursor:pointer;width:100%;color:var(--text-main);box-sizing:border-box;background:0 0;border-radius:0;justify-content:center;align-items:center;padding:.95rem 1.5rem;font-size:.95rem;font-weight:400;transition:background .1s;display:flex;position:relative}.picker-option:last-child{border-bottom:none}.picker-option:active{background:var(--bg)}.picker-option.selected{color:var(--primary);font-weight:600}.picker-scroll{scrollbar-width:none}.picker-scroll::-webkit-scrollbar{display:none}.meal-picker-clear:hover{border-color:var(--danger);color:var(--danger);background:#fee2e2}.glance-meal-row{border-radius:var(--radius-sm);margin:0 -.4rem;padding:2px .4rem;transition:background .15s}.glance-meal-row.tappable:hover{background:#4f46e514}.glance-meal-row.tappable:active{background:#4f46e529}.today-menu{background:linear-gradient(135deg,#eef2ff 0%,#f5f3ff 100%);border-color:#4f46e540}.today-split{grid-template-columns:1fr auto 1fr;align-items:start;gap:0;display:grid}.today-split-divider{background:var(--border);align-self:stretch;width:1px;margin:0 .75rem}.today-split .today-meals{grid-template-columns:1fr;gap:.3rem}.today-menu-header{align-items:baseline;gap:.6rem;margin-bottom:.5rem;display:flex}.today-day{color:var(--primary);font-size:1.1rem;font-weight:800}.today-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:500}.today-meals{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.today-meal-icon{flex-shrink:0;font-size:1rem;line-height:1}.today-empty{color:var(--text-muted);font-size:.85rem;font-style:italic;font-weight:400}.planner-day.today{border:2px solid var(--primary);background:var(--primary-light)}.planner-day.today .planner-day-header{justify-content:center;align-items:center;gap:5px;display:flex}.today-dot{background:var(--primary);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.section-header{align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.section-header h2{letter-spacing:-.025em;font-size:1.2rem;font-weight:800}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;width:100%;padding:2.5rem 1.5rem;font-size:.9rem;display:flex}.empty-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;margin-bottom:1rem;font-size:1.5rem;display:flex}.empty-icon--primary{background:var(--primary-light)}.empty-icon--success{background:var(--success-light)}.empty-icon--warning{background:var(--warning-light)}.empty-icon--muted{background:var(--bg);border:1px solid var(--border)}.empty-title{color:var(--text-main);margin-bottom:.3rem;font-size:.95rem;font-weight:700}.empty-sub{color:var(--text-muted);max-width:260px;font-size:.82rem;line-height:1.55}.animate-spin{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-glow-btn{animation:2.4s ease-in-out infinite ai-glow}@keyframes ai-glow{0%,to{box-shadow:0 0 6px 1px #6366f173}50%{box-shadow:0 0 14px 4px #8b5cf6b3}}.modal-backdrop{z-index:200;touch-action:none;background:#00000073;position:fixed;inset:0}.modal{background:var(--card-bg);z-index:201;border-radius:20px;flex-direction:column;width:min(440px,100vw - 2rem);max-height:90vh;animation:.2s cubic-bezier(.34,1.1,.64,1) modal-in;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 60px #00000024,0 4px 16px #00000014}@keyframes modal-in{0%{opacity:0;transform:translate(-50%,-48%)scale(.96)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem 1rem;display:flex}.modal-header h3{margin:0;font-size:1rem;font-weight:700}.modal-body{overscroll-behavior:contain;flex-direction:column;flex:1;padding:1.5rem;display:flex;overflow-y:auto}.modal-body>*{min-width:0}.modal-body input[type=date],.modal-body input[type=time]{min-width:0;max-width:100%}.modal-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.35rem;font-size:.78rem;font-weight:600;display:block}.modal-body input,.modal-body select,.modal-body .picker-trigger{margin-bottom:1rem}.modal-body input:last-child,.modal-body select:last-child,.modal-body .picker-trigger:last-child{margin-bottom:0}.picker-trigger{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text-main);text-align:left;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;display:flex}.picker-trigger:hover{border-color:var(--primary)}.picker-trigger-sm{width:auto;padding:.25rem .55rem;font-size:.8rem}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:.6rem;padding:1rem 1.5rem 1.25rem;display:flex}.modal-cancel{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;padding:5px;transition:all .15s;display:inline-flex}.modal-cancel:hover{color:var(--text);background:#f3f4f6}.modal-lg{flex-direction:column;width:min(580px,100vw - 2rem);max-height:90vh;display:flex}.modal-body-scroll{flex:1;overflow-y:auto}.sheet-backdrop{z-index:300;background:#00000073;position:fixed;inset:0}.bottom-sheet{background:var(--card-bg);padding:1.25rem 1.5rem calc(2rem + env(safe-area-inset-bottom));z-index:301;overscroll-behavior:contain;border-radius:24px 24px 0 0;flex-direction:column;align-items:center;gap:1rem;animation:.28s cubic-bezier(.34,1.05,.64,1) slide-up;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 24px #00000014}.bottom-sheet--inset{left:.6rem;right:.6rem;bottom:calc(.6rem + env(safe-area-inset-bottom));border-radius:20px;align-items:stretch;padding-bottom:.6rem}.picker-scroll,.bottom-sheet,.modal-body-scroll{overscroll-behavior:contain}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-handle{background:#d1d1d6;border-radius:3px;flex-shrink:0;width:36px;height:5px;margin-bottom:.25rem}.sheet-title{color:var(--text-main);font-size:1.15rem;font-weight:700}.sheet-stepper{align-items:center;gap:1.25rem;display:flex}.sheet-btn{background:var(--primary-light);width:60px;height:60px;color:var(--primary);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.sheet-btn:active{background:var(--primary);color:#fff}.sheet-qty-input{text-align:center;border:2px solid var(--border);border-radius:var(--radius-sm);width:110px;color:var(--primary);margin:0;padding:.4rem .5rem;font-size:2.25rem;font-weight:700}.sheet-qty-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.sheet-unit-label{color:var(--text-muted);margin-top:-.5rem;font-size:.875rem}.mobile-row-actions,.mobile-hint{display:none}.tip-banner{border-radius:var(--radius);background:#eef2ff;border:none;align-items:flex-start;gap:.75rem;margin-bottom:1rem;padding:1rem 1.1rem;font-size:.875rem;line-height:1.5;display:flex}.tip-banner>span:first-child{flex-shrink:0;margin-top:1px;font-size:1.25rem;line-height:1}.tip-banner>div>strong{color:var(--text-main);margin-bottom:.2rem;font-size:.9rem;display:block}.tip-banner p{color:var(--text-muted);margin:0;font-size:.82rem}.tip-banner p strong{color:var(--text-main);font-weight:600}.tip-dismiss{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex-shrink:0;margin-top:2px;padding:0;font-size:.9rem;line-height:1}.tip-dismiss:hover{color:var(--text-main)}.back-to-top{z-index:200;background:var(--primary);color:#fff;cursor:pointer;opacity:.88;border:none;border-radius:50%;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:1.1rem;line-height:1;transition:opacity .15s;display:flex;position:fixed;bottom:5.5rem;right:1.25rem;box-shadow:0 2px 8px #0000002e}.back-to-top:hover{opacity:1}.help-toggle{cursor:pointer;width:100%;color:var(--text-main);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:.95rem;font-weight:600;display:flex}.help-toggle:hover{color:var(--primary)}.help-features{border-top:1px solid var(--border);flex-direction:column;margin-top:1rem;display:flex}.help-feature{border-bottom:1px solid var(--border);align-items:flex-start;gap:.9rem;padding:.9rem 0;display:flex}.help-feature:last-child{border-bottom:none;padding-bottom:0}.help-feature-icon{text-align:center;flex-shrink:0;width:26px;margin-top:1px;font-size:1.25rem;line-height:1}.help-feature>div>strong{color:var(--text-main);margin-bottom:.35rem;font-size:.875rem;font-weight:700;display:block}.help-feature p{color:var(--text-muted);margin:0;font-size:.82rem;line-height:1.55}.help-steps{color:var(--text-muted);margin:.4rem 0 0 1rem;padding:0;font-size:.82rem;line-height:1.8}.save-bar{z-index:200;background:var(--card-bg);border-top:2px solid var(--success);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.5rem;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #0000001a}.save-bar-label{color:var(--text-muted);font-size:.875rem}.save-btn-short,.nav-label-short{display:none}@media (width<=360px){.settings-btn-label{display:none}.settings-btn,.logout-btn{padding:.3rem .5rem}.help-btn-label{display:none}.help-btn{padding:.3rem .5rem}}@media (width<=400px){.nav-label-full{display:none}.nav-label-short{display:inline}}@media (width<=640px){.app-container{padding:.75rem .75rem calc(5rem + env(safe-area-inset-bottom))}.save-bar{bottom:calc(3.6rem + env(safe-area-inset-bottom));padding:.75rem}header{margin-bottom:.6rem;padding:.65rem .85rem}header>div:first-child{min-width:0}header>div:last-child{flex-shrink:0}header h1{white-space:nowrap;font-size:.85rem}.user-pill,.settings-btn,nav,.mini-nav{display:none}.bottom-nav{display:flex}input,textarea,select{font-size:1rem}.card{padding:1rem}.card h3{font-size:.9rem}.form-row-4{grid-template-columns:1fr 1fr}.form-row-4>:first-child,.form-row-4>:nth-child(4){grid-column:1/-1}.form-row-3{grid-template-columns:1fr 1fr}.form-row-3>:first-child{grid-column:1/-1}.today-meals{grid-template-columns:1fr;gap:.6rem}.today-meal-item{padding:.7rem .85rem}.quick-plan{flex-wrap:wrap;gap:6px}.quick-plan select{flex:120px;min-width:0}.week-range{white-space:nowrap;font-size:.78rem}.week-nav .icon-btn{padding:.3rem}.week-nav .primary{white-space:nowrap;padding:3px 8px;font-size:.75rem}.table-scroll{margin:0 -1rem;padding:0 1rem;overflow-x:auto}.table-scroll table{min-width:520px}td{font-size:.82rem}.table-scroll.actions-table{overflow-x:hidden}.table-scroll.actions-table table{min-width:unset}.table-scroll.pantry-table table{table-layout:fixed}.pantry-table th:nth-child(2),.pantry-table td:nth-child(2){width:160px}.pantry-table td:first-child{overflow:hidden}.pantry-table td:first-child .name-wrap{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.table-scroll.actions-table::-webkit-scrollbar{display:none}.table-scroll.actions-table{scrollbar-width:none}.hide-mobile{display:none!important}.mobile-hint{color:var(--text-muted);margin-bottom:.4rem;font-size:.75rem;display:block}.grid{grid-template-columns:1fr}.section-header h2{font-size:.95rem}.sticky-top nav{margin-bottom:1rem}nav button{white-space:nowrap;min-height:48px;padding:.75rem .5rem;font-size:.78rem;overflow:hidden}.card-row{flex-wrap:wrap;gap:.5rem}.card-row button.primary,.card-row button.secondary{padding:.4rem .6rem;font-size:.78rem}.save-btn-full{display:none}.save-btn-short{display:inline}.recipe-tab-pill{padding:.4rem .7rem!important;font-size:.8rem!important}.invite-code-row{flex-wrap:wrap}}@media (width>=641px) and (width<=1024px){.app-container{padding:1.25rem 1.5rem 3rem}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.intro-page{background:var(--bg);flex-direction:column;justify-content:space-between;align-items:center;min-height:100vh;padding:1.5rem 1.5rem 2.5rem;display:flex;position:relative}.intro-skip{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.4rem .6rem;font-size:.875rem;font-weight:600;position:absolute;top:1.25rem;right:1.25rem}.intro-phone-wrap{flex:1;justify-content:center;align-items:center;padding:2rem 0 1rem;display:flex}.intro-phone{background:#f2f2f7;border:3px solid #1a1a1a;border-radius:40px;flex-direction:column;width:216px;height:400px;padding:20px 0 0;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 64px #0000002e,0 4px 12px #0000001a}.intro-phone-notch{z-index:2;background:#1a1a1a;border-radius:4px;width:56px;height:7px;position:absolute;top:10px;left:50%;transform:translate(-50%)}.phone-screen{background:#f2f2f7;flex-direction:column;flex:1;display:flex;overflow:hidden}.phone-bar{background:#4f46e5;flex-shrink:0;align-items:center;padding:5px 10px 6px;display:flex}.phone-bar-title{color:#fff;letter-spacing:.01em;font-size:.65rem;font-weight:700}.mock-tabs{border:1px solid #e5e5ea;border-radius:10px;flex-shrink:0;gap:0;margin:5px 8px;display:flex;overflow:hidden}.mock-tab{text-align:center;color:#8e8e93;background:#fff;flex:1;padding:3px 0;font-size:.55rem;font-weight:600}.mock-tab-active{color:#fff;background:#4f46e5}.mock-search{color:#c7c7cc;background:#fff;border:1px solid #e5e5ea;border-radius:8px;flex-shrink:0;margin:3px 8px 4px;padding:3px 7px;font-size:.53rem}.mock-table-head{color:#8e8e93;text-transform:uppercase;letter-spacing:.04em;background:#fff;border-bottom:1px solid #e5e5ea;flex-shrink:0;padding:3px 8px;font-size:.5rem;font-weight:700;display:flex}.phone-list{background:#fff;flex-direction:column;display:flex;overflow:hidden}.mock-ing-row{border-bottom:1px solid #f2f2f7;align-items:center;gap:4px;min-height:24px;padding:4px 8px;display:flex}.mock-ing-name{color:#1c1c1e;flex:2;align-items:center;gap:3px;min-width:0;font-size:.6rem;display:flex}.mock-qty-cell{flex:2;align-items:center;gap:3px;display:flex}.mock-qty-btn{color:#4f46e5;background:#f2f2f7;border:1px solid #e5e5ea;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:.55rem;font-weight:700;line-height:1;display:flex}.mock-qty-pill{color:#4f46e5;white-space:nowrap;text-align:center;background:#eef2ff;border-radius:999px;flex:1;padding:1px 5px;font-size:.52rem;font-weight:500}.mock-badge{white-space:nowrap;border-radius:12px;flex-shrink:0;padding:1px 4px;font-size:.5rem;font-weight:700}.mock-badge-success{color:#059669;background:#ecfdf5}.mock-badge-warn{color:#d97706;background:#fffbeb}.mock-badge-danger{color:#b91c1c;background:#fee2e2}.mock-filter-row{flex-wrap:wrap;flex-shrink:0;gap:3px;padding:4px 8px;display:flex}.mock-filter-pill{color:#8e8e93;background:0 0;border:1.5px solid #e5e5ea;border-radius:999px;padding:2px 6px;font-size:.5rem;font-weight:600}.mock-filter-active{color:#4f46e5;background:#eef2ff;border-color:#4f46e5}.mock-filter-green{color:#fff;background:#059669;border-color:#059669}.mock-filter-red{color:#b91c1c;background:#fee2e2;border-color:#fee2e2}.mock-filter-yellow{color:#d97706;background:#fffbeb;border-color:#fffbeb}.mock-recipe-card{background:#fff;border:1px solid #e5e5ea;border-radius:10px;padding:5px 7px}.mock-recipe-top{align-items:flex-start;gap:4px;margin-bottom:3px;display:flex}.mock-recipe-name{color:#1c1c1e;margin-bottom:2px;font-size:.6rem;font-weight:700}.mock-recipe-tags{gap:3px;display:flex}.mock-tag-cuisine{color:#4f46e5;background:#eef2ff;border-radius:999px;padding:1px 4px;font-size:.48rem;font-weight:600}.mock-tag-type{color:#7c3aed;background:#f5f3ff;border-radius:999px;padding:1px 4px;font-size:.48rem;font-weight:600}.mock-chips{flex-wrap:wrap;gap:2px;display:flex}.mock-chip{border-radius:8px;padding:1px 4px;font-size:.47rem;font-weight:500}.mock-chip-have{color:#059669;background:#ecfdf5}.mock-chip-miss{color:#dc2626;background:#fee2e2}.mock-today-card{background:#fff;border:1px solid #e5e5ea;border-radius:12px;padding:6px 8px}.mock-today-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.mock-today-label{color:#1c1c1e;letter-spacing:-.01em;font-size:.58rem;font-weight:800}.mock-today-link{color:#4f46e5;font-size:.5rem;font-weight:600}.mock-day-row{align-items:center;gap:4px;margin-bottom:2px;display:flex}.mock-day-abbr{text-transform:uppercase;letter-spacing:.04em;min-width:22px;font-size:.52rem;font-weight:800}.mock-today-badge{color:#fff;background:#4f46e5;border-radius:3px;padding:1px 4px;font-size:.42rem;font-weight:700}.mock-meals-list{flex-direction:column;gap:2px;margin-bottom:4px;padding-left:26px;display:flex}.mock-meal-row{align-items:center;gap:4px;display:flex}.mock-meal-pill{border-radius:3px;flex-shrink:0;padding:1px 4px;font-size:.47rem;font-weight:700}.mock-meal-name{color:#4f46e5;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:.57rem;font-weight:600;overflow:hidden}.mock-meal-arrow{color:#4f46e5;opacity:.5;font-size:.65rem}.mock-divider{background:#e5e5ea;height:1px;margin:4px 0}.mock-event-row{align-items:center;gap:6px;padding:2px 0;display:flex}.mock-event-day{color:#4f46e5;text-transform:uppercase;letter-spacing:.04em;min-width:18px;font-size:.5rem;font-weight:700}.mock-event-title{color:#1c1c1e;font-size:.55rem;font-weight:500}.mock-restock-header{flex-shrink:0;padding:5px 8px 2px}.mock-restock-title{color:#1c1c1e;font-size:.65rem;font-weight:800;display:block}.mock-restock-sub{color:#8e8e93;font-size:.5rem;display:block}.mock-bottom-nav{background:#fff;border-top:1px solid #e5e5ea;flex-shrink:0;padding:5px 0 6px;display:flex}.mock-nav-item{text-align:center;opacity:.35;flex:1;font-size:.9rem;line-height:1}.mock-nav-active{opacity:1}.intro-dots{align-items:center;gap:7px;padding:.5rem 0;display:flex}.intro-dot{background:var(--border);cursor:pointer;border-radius:50%;width:8px;height:8px;transition:background .2s,width .2s;display:inline-block}.intro-dot-active{background:var(--primary);border-radius:4px;width:22px}.intro-text{text-align:center;padding:.75rem .5rem 0}.intro-headline{color:var(--text-main);letter-spacing:-.03em;margin-bottom:.5rem;font-size:1.35rem;font-weight:800;line-height:1.25}.intro-desc{color:var(--text-muted);max-width:300px;margin:0 auto;font-size:.875rem;line-height:1.55}.intro-next{background:var(--primary);color:#fff;cursor:pointer;letter-spacing:.01em;border:none;border-radius:999px;width:100%;max-width:340px;margin-top:1.5rem;padding:.9rem;font-size:1rem;font-weight:700;transition:background .15s}.intro-next:hover{background:var(--primary-hover)}
