:root{--bg:#f6f5f1;--surface:#fff;--surface-2:#ecebe5;--text:#1d1f1c;--muted:#74776f;--border:#e0dfd8;--accent:#1f8a4c;--accent-press:#176b3a;--accent-ink:#fff;--accent-soft:#e2f2e8;--pending-bg:#d9ead0;--pending-ink:#2f4f1f;--pending-edge:#b6d3a6;--danger:#c2412d;--warn:#c98a12;--shadow:0 1px 2px #0000000f, 0 4px 14px #0000000f;--radius:14px;--tab-h:58px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#151714;--surface:#1f221e;--surface-2:#2a2e29;--text:#eceee9;--muted:#9a9f95;--border:#333830;--accent:#2ea862;--accent-press:#248a50;--accent-ink:#fff;--accent-soft:#1c3426;--pending-bg:#2c3b27;--pending-ink:#d6e8cc;--pending-edge:#3c5233;--danger:#ec6b55;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);margin:0}html,body,button,input,select,textarea,a,label{touch-action:manipulation}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font:16px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif}body.no-scroll{overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{opacity:.4;cursor:default}input,textarea,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:12px;outline:none;width:100%;padding:11px 12px;font-size:16px}input:focus,textarea:focus,select:focus{border-color:var(--accent)}textarea{resize:none}select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 14px) 52%,calc(100% - 9px) 52%;background-repeat:no-repeat;background-size:5px 5px;width:auto;padding-right:26px}h1,h2{margin:0}a{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:13px}.block{display:block}.center{text-align:center}.grow{flex:1;min-width:0}.grow2{flex:2}.row{align-items:center;gap:8px;display:flex}.row.gap{gap:10px;margin-top:10px}.clamp1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.clamp2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}main{padding:calc(var(--safe-t) + 18px) 16px calc(var(--tab-h) + var(--safe-b) + 24px);max-width:720px;margin:0 auto}main.no-tabs{padding-bottom:calc(var(--safe-b) + 32px)}.splash{background:var(--bg);min-height:100vh}.topbar{align-items:center;gap:10px;min-height:52px;margin-bottom:2px;display:flex}.topbar h1{letter-spacing:-.02em;flex:1;align-items:center;gap:8px;font-size:28px;font-weight:750;display:flex}.topbar h1.small-title{text-align:center;justify-content:center;font-size:17px;font-weight:650}.topbar>.muted{font-size:14px}.icon-btn{width:40px;height:40px;color:var(--text);border-radius:12px;flex:none;place-items:center;display:inline-grid}.icon-btn:active{background:var(--surface-2)}.icon-btn.danger{color:var(--danger)}.sync-dot{background:0 0;border-radius:50%;width:8px;height:8px;transition:background .3s}.sync-dot.offline{background:var(--muted)}.sync-dot.error{background:var(--danger)}.btn{border-radius:14px;justify-content:center;align-items:center;gap:6px;height:48px;padding:0 18px;font-weight:600;display:inline-flex}.btn.small{border-radius:11px;height:36px;padding:0 12px;font-size:15px}.btn.block{width:100%;display:flex}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.primary:active{background:var(--accent-press)}.btn.ghost{background:var(--surface-2)}.btn.ghost:active{filter:brightness(.95)}.btn.danger,.text-btn.danger{color:var(--danger)}.text-btn{text-align:left;padding:6px 0}.search{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:14px;align-items:center;gap:8px;padding:0 6px 0 12px;display:flex}.search:focus-within{border-color:var(--accent)}.search input{background:0 0;border:0;padding:12px 0}.sticky-search{top:var(--safe-t);z-index:5;background:var(--bg);margin-top:-10px;padding:16px 0 8px;position:sticky}.suggest-grid{margin-top:10px}.grid{grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:8px;display:grid}.tile{aspect-ratio:1;border-radius:var(--radius);text-align:center;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:8px 6px;transition:transform 80ms,background .15s;display:flex}.tile:active{transform:scale(.94)}.tile .emoji{line-height:1.1}.tile .initial{opacity:.9;font-weight:750;line-height:1.1}.tile-name{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;font-weight:600;line-height:1.15;display:-webkit-box;overflow:hidden}.tile-sub{opacity:.85;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.15;display:-webkit-box;overflow:hidden}.tile.pending{background:var(--pending-bg);color:var(--pending-ink);box-shadow:inset 0 0 0 1px var(--pending-edge), var(--shadow)}.tile.pending .tile-sub{opacity:.9}.tile.recent,.tile.suggest{background:var(--surface);color:var(--text);border:1px solid var(--border)}.tile.staple{background:var(--surface);color:var(--muted);border:1px dashed var(--border)}.tile.create{background:var(--accent-soft);color:var(--accent);border:1px dashed var(--accent)}.tile.create .emoji{font-size:28px}.recents .tile .emoji{filter:saturate(.6)}.grid.compact{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:6px}.tile.compact{border-radius:12px;gap:2px;padding:6px 4px}.tile.compact .tile-name{font-size:12px;font-weight:550}.tile.compact .tile-sub{-webkit-line-clamp:1;font-size:11px}.group{margin-top:18px}.group h2{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 2px 8px;font-size:13px;font-weight:700}.hint{text-align:center;color:var(--muted);margin-top:22px;font-size:12px}.empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 24px;display:flex}.empty-emoji{font-size:48px}.empty .btn{margin-top:12px}.tabbar{z-index:20;height:calc(var(--tab-h) + var(--safe-b));padding-bottom:var(--safe-b);background:color-mix(in srgb, var(--surface) 96%, transparent);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:600;display:flex}.tabbar button.on{color:var(--accent)}.sheet-wrap{z-index:50;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;left:0;right:0}.sheet-backdrop{background:#00000061;animation:.18s fade;position:absolute;inset:0}.sheet{background:var(--bg);max-height:88%;padding:0 16px calc(var(--safe-b) + 14px);border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-width:720px;margin:0 auto;animation:.22s cubic-bezier(.2,.9,.3,1) up;display:flex;position:relative}.sheet.tall{min-height:55%}.sheet-handle{background:var(--border);border-radius:3px;flex:none;width:40px;height:5px;margin:8px auto 6px}.sheet-title{padding:4px 0 10px;font-size:18px;font-weight:700}.sheet-body{-webkit-overflow-scrolling:touch;flex:1;padding-bottom:6px;overflow-y:auto}.sheet-footer{padding-top:10px}@keyframes up{0%{transform:translateY(100%)}}@keyframes fade{0%{opacity:0}}.chips{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.chip{background:var(--surface);border:1px solid var(--border);border-radius:19px;height:38px;padding:0 14px;font-size:15px;font-weight:550}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip.ghost{color:var(--muted);border-style:dashed}.chip-form input{border-radius:19px;width:170px;height:38px;padding:0 14px}.product-sheet{flex-direction:column;gap:14px;display:flex}.product-head{align-items:center;gap:12px;display:flex}.emoji-edit{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex:none;place-items:center;width:60px;height:60px;display:grid;position:relative;overflow:hidden}.emoji-edit input{opacity:0;font-size:16px;position:absolute;inset:0}.title-input{font-size:20px;font-weight:650}.title-input.big{margin:14px 0 10px;font-size:22px}.field{flex-direction:column;gap:6px;display:flex}.label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:13px;font-weight:650}.qty{text-align:right;flex:none;width:84px}.switch-row{background:var(--surface);border:1px solid var(--border);border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex}.switch-row>span{flex:1}.switch{appearance:none;background:var(--surface-2);border:0;border-radius:15px;flex:none;width:50px;height:30px;padding:0;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(20px)}.check-list{flex-direction:column;gap:6px;display:flex}.check-row{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:10px;padding:11px 12px;display:flex}.check-row.staple:not(.on){opacity:.6}.check{border:2px solid var(--border);width:24px;height:24px;color:var(--accent-ink);border-radius:7px;flex:none;place-items:center;display:grid}.check-row.on .check{background:var(--accent);border-color:var(--accent)}.pill{background:var(--accent-soft);color:var(--accent);vertical-align:1px;border-radius:8px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:650;display:inline-block}.meal-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.meal-row{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:16px;align-items:center;gap:12px;padding:8px;display:flex}.meal-row:active{background:var(--surface-2)}.meal-row-text{flex-direction:column;flex:1;min-width:0;display:flex}.meal-row.new{border-style:dashed}.thumb{background:var(--accent-soft);color:var(--accent);border-radius:12px;flex:none;place-items:center;font-size:18px;font-weight:750;display:grid;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb.add{width:48px;height:48px}.detail .hero{aspect-ratio:4/3;object-fit:cover;border-radius:18px;width:100%;display:block}.detail-title{letter-spacing:-.02em;margin:14px 0 4px;font-size:26px;font-weight:750}.detail-desc{color:var(--muted);white-space:pre-wrap;margin:0 0 8px}.link-pill{background:var(--accent-soft);border-radius:16px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:22px 2px 8px;font-size:13px;font-weight:700}.ing-list{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin:0 0 18px;padding:0;list-style:none}.ing-list li{border-top:1px solid var(--border);align-items:center;gap:10px;padding:11px 14px;display:flex}.ing-list li:first-child{border-top:0}.editor textarea,.editor input[type=url]{margin-bottom:10px}.photo-pick{aspect-ratio:16/9;background:var(--surface);border:1.5px dashed var(--border);cursor:pointer;border-radius:18px;width:100%;display:block;position:relative;overflow:hidden}.photo-pick.has{border-style:solid}.photo-pick img{object-fit:cover;width:100%;height:100%;display:block}.photo-pick input{opacity:0;position:absolute;inset:0}.photo-empty{color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex;position:absolute;inset:0}.photo-remove{color:#fff;z-index:2;background:#0000008c;border-radius:50%;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:8px;right:8px}.ing-edit{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.ing-row{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:8px;padding:6px 4px 6px 12px;display:flex}.ing-row input,.ing-row select{padding:8px 10px}.ing-row .qty{width:70px}.ing-text{flex-direction:column;min-width:0;display:flex}.ing-name{text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:4px 0;font-weight:550;overflow:hidden}.ing-row .ing-note{color:var(--muted);background:0 0;border:0;width:100%;padding:0 0 4px;font-size:16px}.ing-row .ing-note::placeholder{color:var(--muted);opacity:.6}.suggest-rows{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;margin-top:6px;display:flex;overflow:hidden}.suggest-row{text-align:left;border-top:1px solid var(--border);align-items:center;gap:10px;padding:12px 14px;display:flex}.suggest-row:first-child{border-top:0}.suggest-row:active{background:var(--surface-2)}.suggest-row.create{color:var(--accent);font-weight:600}.delete-meal{margin-top:32px}.week-nav{background:var(--surface);border:1px solid var(--border);border-radius:14px;align-items:center;gap:4px;padding:4px;display:flex}.week-title{flex-direction:column;flex:1;align-items:center;padding:4px 0;line-height:1.2;display:flex}.copy-week{margin-top:10px}.days{flex-direction:column;gap:14px;margin-top:16px;display:flex}.day h2{margin:0 2px 6px;font-size:16px;font-weight:700}.day.today h2{color:var(--accent)}.slots{grid-template-columns:1fr 1fr;gap:8px;display:grid}.slot{text-align:left;border-radius:14px;align-items:center;gap:10px;min-height:64px;padding:10px;display:flex}.slot.filled{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.slot.filled:active{background:var(--surface-2)}.slot-text{flex-direction:column;min-width:0;font-size:14px;line-height:1.2;display:flex}.slot-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:2px;font-size:11px;font-weight:700}.empty-slot{border:1.5px dashed var(--border);color:var(--muted);justify-content:center;font-size:14px;font-weight:600}.empty-slot:active{background:var(--surface-2)}.action-list{flex-direction:column;gap:8px;display:flex}.card-list{background:var(--surface);border:1px solid var(--border);border-radius:14px;margin:0;padding:0;list-style:none}.card-list li{border-top:1px solid var(--border);align-items:center;gap:4px;min-height:50px;padding:6px 6px 6px 14px;display:flex}.card-list li:first-child{border-top:0}.card-list li input{background:0 0;border:0;padding:8px 0}.settings .search{margin-bottom:8px}.toast{z-index:45;left:50%;bottom:calc(var(--tab-h) + var(--safe-b) + 12px);color:#fff;background:#222520;border-radius:14px;align-items:center;gap:14px;width:max-content;max-width:calc(100% - 32px);padding:12px 16px;animation:.15s fade;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #00000040}.toast button{color:#7fe0a5;font-weight:700}.login{min-height:100vh;padding:calc(var(--safe-t) + 7vh) 24px 24px;flex-direction:column;justify-content:flex-start;align-items:center;gap:8px;display:flex}.login-logo{box-shadow:var(--shadow);border-radius:18px}.login h1{margin-bottom:14px;font-size:26px}.login form{flex-direction:column;gap:10px;width:100%;max-width:340px;display:flex}.password-field{position:relative}.password-field input{padding-right:48px}.password-field .eye{color:var(--muted);position:absolute;top:50%;right:4px;transform:translateY(-50%)}.error{color:var(--danger);text-align:center;margin:0;font-size:14px}.topbar>span:empty{flex:1}.ing-row select{min-width:84px}
