:root{--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--page-gutter:17px;--page-top:18px;--surface-page:#f8faf7;--surface:#fff;--surface-top:#edf2ed;--border:#d6e0d7;--text-primary:#203428;--text-muted:#637268;--text-note:#4d6b59;--accent:#287452;--accent-soft:#e7f0e9;--accent-line:#82a990;--danger:#a4544c;--danger-soft:#faeeeb;--warning:#806232;--warning-soft:#f8f0d9;--overlay:color-mix(in srgb, var(--text-primary) 32%, transparent);--shadow-color:color-mix(in srgb, var(--text-primary) 10%, transparent);--font-title:1.4375rem;--font-body:.875rem;--font-control:.75rem;--font-caption:.625rem;--font-input:max(1rem, 16px);--font-emoji:1.125rem;--font-card-meta:.65625rem;--radius-control:7px;--radius-card:8px;--radius-dialog:12px;--radius-sheet:17px;--editor-width:980px;--editor-gutter:16px;--editor-label:3.92857em;--editor-control-height:2.0625rem;--editor-gap:7px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--surface-page);overscroll-behavior-y:none;min-height:100%;margin:0}body{color:var(--text-primary);font:var(--font-body)/1.5 -apple-system, BlinkMacSystemFont, "Hiragino Sans GB", "PingFang SC", "Microsoft YaHei", sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:enabled:active,a.ui-button:active{opacity:.65}button:disabled{cursor:not-allowed;opacity:.55}button:focus:not(:focus-visible){outline:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}:root .antialiased{-webkit-font-smoothing:antialiased}.ui-button{overflow-wrap:anywhere;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--accent);min-width:0;min-height:40px;font-size:var(--font-body);justify-content:center;align-items:center;gap:4px;padding:8px 12px;text-decoration:none;display:inline-flex}.ui-button-compact{min-height:var(--editor-control-height);font-size:var(--font-control);padding:0 7px}.ui-button-primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}.ui-button-text{background:0 0;border-color:#0000;padding-inline:0}.ui-button-danger{color:var(--danger);border-color:var(--danger)}.ui-icon-button{width:28px;min-height:28px;color:var(--text-muted);flex:none;padding:0}.ui-choices{flex-wrap:wrap;gap:4px;width:100%;min-width:0;display:flex}.ui-choice{min-width:0;min-height:var(--editor-control-height);border-radius:var(--radius-control);background:var(--surface-top);color:var(--accent);font-size:var(--font-control);white-space:normal;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;border:0;flex:1;justify-content:center;align-items:center;gap:3px;padding:4px 7px;line-height:1.3;display:inline-flex}.ui-choice:not(:lang(zh),:lang(ja)){flex-basis:auto}.ui-choice[aria-pressed=true]{font-weight:650;box-shadow:inset 0 0 0 1.5px}.ui-choice[aria-pressed=mixed]{outline:1px dashed var(--accent-line);outline-offset:-2px}.ui-attribute,.ui-field{grid-template-columns:var(--editor-label) minmax(0, 1fr);align-items:center;gap:var(--editor-gap);min-width:0;margin:6px 0;display:grid}.ui-attribute-label,.ui-field-label{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;min-width:0;color:var(--text-muted);font-size:var(--font-control)}.ui-attribute-controls{min-width:0}.ui-attribute-controls>*{max-width:100%}.ui-input{box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-height:var(--editor-control-height);border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--text-primary);font-size:var(--font-input);padding:4px 8px;line-height:1.3}.ui-input:focus{border-color:var(--accent-line);outline:none}textarea.ui-input{resize:vertical;min-height:54px}.ui-sheet-header{flex-wrap:wrap;align-items:center;gap:7px;min-height:28px;margin-bottom:10px;display:flex}.ui-sheet-header h2{font-size:var(--font-body);overflow-wrap:anywhere;min-width:0;max-width:100%;margin:0;font-weight:600;line-height:1.42857}.ui-sheet-header>.ui-icon-button{margin-inline-start:auto}.ui-sheet-header>span{overflow-wrap:anywhere;min-width:0;color:var(--text-muted);font-size:var(--font-control);flex:1}.danger-text{color:var(--danger)}.app-shell{background:linear-gradient(var(--surface-top) 0 120px, var(--surface-page) 120px);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;min-height:100dvh;position:relative}.app-shell input,.app-shell textarea,.app-shell [contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.app-main{max-width:900px;min-height:100dvh;padding:calc(var(--page-top) + var(--safe-top)) max(var(--page-gutter), var(--safe-right)) calc(var(--bottom-occlusion,60px) + 40px) max(var(--page-gutter), var(--safe-left));background:var(--surface-page);margin:auto;transition:transform .2s ease-out}.app-main.pulling{transition:none}.sticky-page-top{z-index:12;background:var(--surface-top);border-bottom:1px solid var(--border);margin:calc(-1 * (var(--page-top) + var(--safe-top))) calc(-1 * max(var(--page-gutter), var(--safe-right))) 0 calc(-1 * max(var(--page-gutter), var(--safe-left)));padding:calc(var(--page-top) + var(--safe-top)) max(var(--page-gutter), var(--safe-right)) 8px max(var(--page-gutter), var(--safe-left));position:sticky;top:0}.app-main.with-bulk .sticky-page-top,.app-shell[data-scrolling-header=true] .sticky-page-top{position:static}.page-head{flex-wrap:wrap;align-items:center;gap:8px;min-height:38px;display:flex}.page-head h1{overflow-wrap:anywhere;min-width:0;max-width:100%;font-size:var(--font-title);letter-spacing:-.04em;margin:0;font-weight:650;line-height:1.25}.head-count{max-width:100%;font-size:var(--font-control);letter-spacing:0;color:var(--text-muted);white-space:normal;margin-inline-start:4px;font-weight:450;display:inline-block}.head-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;min-width:0;max-width:100%;margin-inline-start:auto;display:flex}.head-actions .ui-button{white-space:normal;max-width:100%}.food-section{margin:9px 0}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 10px;min-width:0;min-height:22px;margin-bottom:1px;display:flex}.section-head h2{overflow-wrap:anywhere;min-width:0;max-width:100%;font-size:var(--font-control);color:var(--text-muted);flex:0 auto;margin:0;font-weight:500}.section-count{font-size:var(--font-caption);color:var(--text-muted);flex:none;font-weight:400}.section-empty,.plan-empty{color:var(--text-muted);font-size:var(--font-control);margin:4px 0 10px}.page-message{text-align:center;color:var(--text-muted);padding:70px 0}.empty-view{text-align:center;color:var(--text-muted);padding:85px 20px}.empty-icon{font-size:2.1875rem}.empty-view h2{font-size:var(--font-title);color:var(--text-primary);margin:18px 0 4px}.empty-view .ui-button{margin-top:15px}.search-box{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);min-height:2.375rem;color:var(--accent-line);align-items:center;gap:9px;margin:9px 0 8px;padding-block:2px;padding-inline:11px;display:flex}.search-box .ui-input{border:0;outline:0;flex:1;padding:0}.storage-filters{font-size:var(--font-control);border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-top);gap:0;min-height:36px;padding:2px}.sticky-page-top:has(.storage-filters),.settings-block:has(.density-options){container:pantry-choices/inline-size}.storage-filters,.density-options{flex-wrap:nowrap}.storage-filters .ui-choice,.density-options .ui-choice{overflow-wrap:normal;flex:auto;min-width:min-content}.storage-filters .ui-choice{border-inline-end:1px solid var(--border);min-height:30px;color:var(--text-muted);background:0 0;border-radius:0;padding-block:2px;font-weight:550}.storage-filters .ui-choice:last-child{border-inline-end:0}.storage-filters .ui-choice[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:none;font-weight:650}.sort-control{min-width:0;font-size:var(--font-body);flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0 9px;display:flex}.sort-control span{color:var(--text-muted);white-space:nowrap}.food-grid,.expiry-presets,.plan-presets,.category-popover .ui-choices{grid-template-columns:repeat(auto-fill, minmax(min(100%, max(var(--grid-min-width), calc((100% - (var(--grid-max-columns) - 1) * var(--grid-gap)) / var(--grid-max-columns)))), 1fr))}.food-grid{--grid-max-columns:var(--cols);--grid-min-width:3.75em;--grid-gap:2px;column-gap:var(--grid-gap);row-gap:6px;display:grid}.food-card{text-align:start;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);min-width:0;min-height:49px;color:var(--text-primary);flex-direction:column;justify-content:center;align-items:flex-start;padding:5px 7px;transition:background .15s;display:flex;position:relative;overflow:hidden}.food-card.has-note{min-height:64px}.food-card.selected{background:var(--surface-top)}.bulk-jump{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.bulk-jump:focus-visible{z-index:40;clip-path:none;border:1px solid var(--accent-line);border-radius:var(--radius-control);background:var(--surface);width:auto;height:auto;color:var(--text-primary);padding:8px 12px;position:fixed;top:8px;left:8px;overflow:visible}.food-name{font-size:var(--font-body);white-space:nowrap;text-overflow:ellipsis;width:100%;line-height:1.35714;overflow:hidden}.food-card small{max-width:100%;font-size:var(--font-card-meta);color:var(--text-muted);white-space:normal;overflow-wrap:anywhere;line-height:1.42857}.food-card small.expired{color:var(--danger)}.food-card small.soon{color:var(--warning)}.select-mark{inset-inline-start:4px;color:var(--accent);font-size:var(--font-caption);position:absolute;top:2px}.food-card:has(.select-mark) .food-name{padding-inline-start:1.2em}.food-card.planned{border-bottom-width:0}.food-card.planned:after{content:"";background:var(--accent-line);pointer-events:none;height:3px;position:absolute;bottom:0;left:0;right:0}.food-card:has(.stock-ribbon):is(:lang(zh),:lang(ja)){padding-block-start:1em}.food-card .stock-ribbon{clip-path:polygon(0 0,100% 0,100% 100%);text-align:right;z-index:1;pointer-events:none;width:2.77778em;height:2.77778em;padding:.222222em .222222em 0 1.11111em;font-size:.5625rem;font-weight:700;line-height:1.22222;position:absolute;top:0;right:0}.food-card:not(:lang(zh),:lang(ja)) .stock-ribbon{clip-path:none;border-radius:var(--radius-control);width:auto;max-width:100%;height:auto;font-size:var(--font-caption);text-align:end;align-self:flex-end;margin-block-end:2px;padding:1px 3px;line-height:1.3;position:static}.stock-half{background:var(--warning-soft);color:var(--warning)}.stock-low{background:var(--danger-soft);color:var(--danger)}.expired-group .food-card{background:var(--danger-soft)}.today-group .food-card{background:var(--warning-soft)}.expiry-alert .food-card.selected{outline:1px solid var(--accent);outline-offset:-2px}.food-note{text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:var(--font-card-meta);color:var(--text-note);border-top:1px solid var(--border);margin-top:3px;padding-top:3px;line-height:1.42857;overflow:hidden}.food-emojis{width:100%;font-size:var(--font-control);flex-wrap:wrap;gap:2px;margin-top:2px;line-height:1.33333;display:flex}.food-emojis>span{justify-content:center;min-width:17px;display:inline-flex}.bulk-panel,.detail-sheet,.note-sheet{box-sizing:border-box;width:100%;max-width:var(--editor-width);border:1px solid var(--border);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;background:var(--surface);padding:10px max(var(--editor-gutter), var(--safe-right)) calc(12px + var(--safe-bottom)) max(var(--editor-gutter), var(--safe-left));overscroll-behavior:contain;max-height:70dvh;overflow-y:auto}.bulk-panel,.detail-sheet{overscroll-behavior:none;touch-action:pan-y pinch-zoom;overflow-x:hidden}.bulk-panel{z-index:30;box-shadow:0 -9px 26px var(--shadow-color);margin:auto;position:fixed;bottom:0;left:0;right:0}.bulk-panel:focus-visible{outline:2px solid var(--accent-line);outline-offset:-4px}.editor-body:not(:lang(zh),:lang(ja)){--editor-label:8em}.editor-body:lang(ja){--editor-label:5.14286em}.editor-body .expiry-line,.editor-body .plan-line{align-items:start}.editor-body .expiry-line>.ui-attribute-label,.editor-body .plan-line>.ui-attribute-label{padding-block-start:.5em;line-height:1.5}.expiry-presets{--grid-max-columns:6;--grid-min-width:3em;--grid-gap:4px;font-size:var(--font-control);display:grid}.expiry-presets:not(:lang(zh),:lang(ja)){--grid-min-width:4.5em}.expiry-presets:lang(ja){--grid-min-width:4em}.plan-presets{--grid-max-columns:5;--grid-min-width:3.5em;--grid-gap:4px;font-size:var(--font-control);display:grid}.plan-presets:not(:lang(zh),:lang(ja)){--grid-min-width:5em}.expiry-presets .ui-choice,.plan-presets .ui-choice{padding:4px 1px}.plan-presets small{font-size:var(--font-caption);color:inherit}.category-trigger{text-align:start;justify-content:space-between;width:100%}.category-trigger>svg{flex:none}.category-popover{border:1px solid var(--border);border-radius:var(--radius-dialog);background:var(--surface);box-shadow:0 -7px 25px var(--shadow-color);margin:8px 0;padding:12px;position:relative}.category-popover h3{font-size:var(--font-body);margin:0 0 9px;font-weight:550}.category-popover .ui-choices{--grid-max-columns:2;--grid-min-width:10em;--grid-gap:7px;font-size:var(--font-control);gap:var(--grid-gap);overscroll-behavior-x:none;max-height:260px;display:grid;overflow:hidden auto}.ui-editor-fields{flex-direction:column;gap:6px;display:flex}.ui-editor-fields>.ui-field,.ui-editor-fields>.ui-attribute{margin:0}.ui-editor-fields textarea.ui-input{min-height:var(--editor-control-height);height:calc(1.3em + 10px)}.ui-editor-fields textarea.ui-input:focus{min-height:54px}.detail-sheet:focus{outline:none}.detail-sheet>.ui-button,.note-sheet>.ui-button{width:100%;margin:10px 0 8px}.ui-editor-actions{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.ui-editor-actions>.ui-button-danger{flex:0 auto;min-width:min(72px,100%);max-width:100%}.ui-editor-actions>.ui-button-secondary{flex:auto}.emoji-picker{grid-template-columns:repeat(auto-fit,minmax(min(100%,2em),1fr));gap:4px;display:grid}.emoji-picker .ui-choice{min-height:max(var(--editor-control-height), 1.3em);font-size:var(--font-emoji);padding:2px 0;line-height:1.3}.native-date{align-items:center;display:inline-grid;position:relative}.native-date input{font:inherit;font-size:var(--font-input);box-sizing:border-box;min-width:0}.native-date-action input{opacity:.01;cursor:pointer;border:0;width:100%;height:100%;margin:0;position:absolute;inset:0}.native-date input::-webkit-calendar-picker-indicator{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.native-date-action:focus-within{outline:2px solid var(--accent-line);outline-offset:1px}.native-date-visible{border-radius:var(--radius-control);width:100%;min-width:0;max-width:100%;display:block;overflow:hidden}.native-date-visible input{width:100%;min-height:var(--editor-control-height)}.native-date-visible input::-webkit-date-and-time-value{text-align:left;min-width:0}dialog.modal-shade{z-index:50;width:100%;max-width:none;height:100%;max-height:none;color:inherit;background:var(--overlay);border:0;justify-content:center;align-items:flex-end;margin:0;padding:0;display:flex;position:fixed;inset:0}dialog.modal-shade::backdrop{background:0 0}.conflict-dialog{background:var(--surface);border-radius:var(--radius-dialog);width:min(25.7143em, calc(100% - max(16px, var(--safe-left)) - max(16px, var(--safe-right))));max-height:calc(100% - max(16px, var(--safe-top)) - max(16px, var(--safe-bottom)));overflow-wrap:anywhere;overscroll-behavior:contain;align-self:center;padding:20px;overflow-y:auto}.conflict-dialog p{color:var(--text-muted);font-size:var(--font-body);line-height:1.6}.conflict-dialog small{color:var(--text-muted);font-size:var(--font-control);margin:11px 0 18px;display:block}.conflict-dialog>.dialog-actions{gap:8px;display:flex}.dialog-actions>.ui-button{flex:1}.note-sheet>textarea{min-height:88px}.sync-issue{overflow-wrap:anywhere;border-bottom:1px solid var(--border);min-width:0;padding:10px 0}.sync-issue strong{font-size:var(--font-body);font-weight:550}.sync-issue p{color:var(--text-muted);font-size:var(--font-control);margin:4px 0}.plan-note.ui-button{text-align:start;white-space:nowrap;text-overflow:ellipsis;min-width:0;min-height:24px;font-size:var(--font-control);color:var(--text-note);border:0;flex:70px;padding:1px 0;line-height:1.5;display:block;overflow:hidden}.plan-note.empty{white-space:normal;text-overflow:clip;max-width:100%;color:var(--text-muted);flex:1 0 auto;overflow:visible}.section-divider{border-top:1px solid var(--border);margin-top:18px;padding-top:12px}.history-section>.food-section{margin-top:0}.unplanned-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:10px;display:flex}.unplanned-head>.section-head{flex:1;justify-content:flex-start}.unplanned-head .section-head h2{font-size:var(--font-body);color:var(--text-primary);font-weight:600}.ui-segmented{background:var(--border);border-radius:var(--radius-control);gap:2px;width:auto;max-width:100%;padding:2px}.ui-segmented .ui-choice{border-radius:calc(var(--radius-control) - 2px);max-width:100%;min-height:28px;color:var(--text-muted);background:0 0;flex:1 0 auto;padding:2px 8px}.ui-segmented .ui-choice[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:none}.settings-block{margin:18px 0 24px}.settings-block .section-head{margin-bottom:8px}.settings-block p{font-size:var(--font-control);color:var(--text-muted);margin:0 0 10px}.language-select{min-height:44px;margin-block-end:10px}.threshold-slider{width:100%;accent-color:var(--accent)}.slider-ends{color:var(--text-muted);font-size:var(--font-caption);justify-content:space-between;display:flex}.density-options{font-size:var(--font-control);gap:6px}.density-options .ui-choice{flex-direction:column;gap:2px;min-height:48px;padding:6px 3px}.density-options strong{max-width:100%;font-size:var(--font-body);font-weight:550}.density-options small{max-width:100%;font-size:var(--font-caption);color:var(--text-muted)}@container pantry-choices (width<14em){.storage-filters,.density-options{flex-wrap:wrap}}.account p{overflow-wrap:anywhere;font-size:var(--font-body);color:var(--text-primary)}.account small{overflow-wrap:anywhere;font-size:var(--font-control);color:var(--text-muted);margin-bottom:8px;display:block}.signout-link{color:var(--accent);font-size:var(--font-control);margin-top:14px;text-decoration:none;display:inline-block}.add-back.ui-button{width:32px;height:38px;color:var(--accent);margin-left:-7px}.add-guidance{margin:16px 0 10px}.add-guidance p{font-size:var(--font-body);margin:0 0 4px;font-weight:500}.add-input.ui-input{border-radius:var(--radius-card);height:70px;margin:12px 0 17px;padding:12px;display:block}.segmentation-panel{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);margin-top:2px;padding:12px}.recognition-head{min-width:0;font-size:var(--font-body);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-weight:600;display:flex}.split-toggle{white-space:nowrap;color:var(--text-muted);font-size:var(--font-control);cursor:pointer;align-items:center;gap:7px;font-weight:400;display:flex}.split-toggle input{opacity:0;width:1px;height:1px;position:absolute}.toggle-track{background:var(--border);border-radius:12px;width:34px;height:20px;transition:background .15s;position:relative}.toggle-track:after{content:"";background:var(--surface);width:16px;height:16px;box-shadow:0 1px 3px var(--shadow-color);border-radius:50%;transition:transform .15s;position:absolute;top:2px;left:2px}.split-toggle input:checked+.toggle-track{background:var(--accent)}.split-toggle input:checked+.toggle-track:after{transform:translate(14px)}.split-toggle input:focus-visible+.toggle-track{outline:2px solid var(--accent-line);outline-offset:2px}.segmentation-help,.split-off-hint{font-size:var(--font-control);color:var(--text-muted);line-height:1.5}.segmentation-help{margin:0 0 11px}.split-off-hint{margin:12px 0}.segmentation-characters{background:var(--surface-page);border-radius:var(--radius-card);flex-wrap:wrap;align-content:flex-start;align-items:center;gap:2px 0;min-height:57px;padding:10px 9px;display:flex}.segmentation-char{white-space:nowrap;align-items:center;max-width:100%;min-height:2.1875rem;display:inline-flex}.segmentation-char .glyph{text-overflow:ellipsis;font-size:var(--font-input);color:var(--text-primary);text-align:center;min-width:20px;line-height:1.9375;overflow:hidden}.segmentation-gap{touch-action:manipulation;background:0 0;border:0;flex:none;place-items:center;width:24px;height:44px;margin:0 -2px;padding:0;display:grid}.segmentation-gap span{background:var(--border);border-radius:2px;width:2px;height:14px;display:block}.segmentation-gap.has-boundary span{background:var(--accent);width:3px;height:28px}.segmentation-empty{font-size:var(--font-control);color:var(--text-muted);margin:17px 0 20px}.segmentation-results{margin-top:11px}.result-head{font-size:var(--font-control);color:var(--text-muted);padding:0 1px 5px}.recognized-row{border-top:1px solid var(--surface-top);align-items:center;gap:10px;min-height:44px;padding:0 1px;display:flex}.recognized-row>span{font-size:var(--font-body);text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-right:auto;overflow:hidden}.recognized-row>.ui-input{flex:1}.recognized-row>.ui-button{white-space:nowrap;flex:none}.add-actions-slot{min-height:48px;margin-top:16px}.add-actions{gap:8px;display:flex}.add-actions-anchor{bottom:calc(20px + var(--safe-bottom));pointer-events:none;visibility:hidden;width:0;height:0;position:fixed}.add-actions.is-floating{left:max(18px, var(--safe-left));right:max(18px, var(--safe-right));z-index:9;max-width:864px;bottom:calc(20px + var(--safe-bottom));margin:auto;position:fixed}.add-actions>.ui-button{min-height:48px;font-size:var(--font-input)}.add-submit{flex:1}.add-cancel{padding-inline:24px}.bottom-nav{background:var(--surface);border-top:1px solid var(--border);font-size:var(--font-control);z-index:20;min-height:calc(60px + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;display:grid;position:fixed;bottom:0;left:0;right:0;container-type:inline-size}.bottom-nav button{color:var(--text-muted);font-size:var(--font-control);white-space:normal;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;min-height:48px;padding:0;display:flex}.bottom-nav button.current{color:var(--accent)}.nav-icon{width:22px;height:22px;position:relative}.current .nav-icon .lucide-refrigerator path:first-child,.current .nav-icon .lucide-clock circle,.current .nav-icon .lucide-calendar-days rect,.current .nav-icon .lucide-shopping-cart path{fill:currentColor}.current .nav-icon .lucide-refrigerator path:not(:first-child),.current .nav-icon .lucide-clock path,.current .nav-icon .lucide-calendar-days path:nth-of-type(n+3){stroke:var(--surface)}.current .nav-icon .lucide-shopping-cart circle{fill:currentColor;stroke:currentColor}.floating-add.ui-button{z-index:19;right:max(var(--page-gutter), var(--safe-right), calc((100vw - 900px) / 2 + var(--page-gutter)));bottom:calc(var(--nav-height,60px) + 18px);min-height:50px;max-width:calc(100% - max(var(--page-gutter), var(--safe-left)) - max(var(--page-gutter), var(--safe-right)));font-size:var(--font-body);white-space:normal;box-shadow:0 5px 16px var(--shadow-color);border-radius:999px;gap:8px;padding:12px 18px;font-weight:600;line-height:1.4;position:fixed}.floating-add svg{flex:none}.floating-add span{overflow-wrap:anywhere;min-width:0}.app-shell:has(.shopping-row.is-revealed) .floating-add{visibility:hidden}@container (width<24em){.bottom-nav:not(:lang(zh),:lang(ja))>button{grid-column:span 2}}@media (max-height:400px) and (orientation:landscape){.bottom-nav>button{flex-direction:row;gap:.25em}.bottom-nav .nav-icon{flex-shrink:0}.bottom-nav>button>span:not(.nav-icon){min-width:0}}.nav-count{background:var(--danger);min-width:1.6em;min-height:1.6em;color:var(--surface);font-size:var(--font-caption);border-radius:8px;place-items:center;padding:0 3px;display:inline-grid;position:absolute;top:-4px;left:17px}.sync-label{min-width:0;max-width:100%;font-size:var(--font-control);color:var(--text-muted);white-space:normal;overflow-wrap:anywhere}.sync-action{text-underline-offset:2px;color:var(--danger);background:0 0;border:0;padding:0;text-decoration:underline}.pull-indicator{height:30px;color:var(--accent);font-size:var(--font-control);pointer-events:none;justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex;position:absolute;top:15px;left:0;right:0}.spinning{animation:.8s linear infinite pull-spin}@keyframes pull-spin{to{transform:rotate(360deg)}}.toast{z-index:80;top:max(16px, var(--safe-top));min-width:230px;max-width:calc(100% - max(16px, var(--safe-left)) - max(16px, var(--safe-right)));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px);overflow-wrap:anywhere;background:var(--text-primary);color:var(--surface);border-radius:var(--radius-card);box-shadow:0 10px 25px var(--shadow-color);font-size:var(--font-control);align-items:center;gap:18px;padding:10px 14px;display:flex;position:fixed;left:50%;overflow-y:auto;transform:translate(-50%)}.toast>span{min-width:0}.toast-error{background:var(--danger)}.toast .ui-icon-button{color:var(--surface);margin-left:auto}.login-page{background:var(--surface-page);min-height:100dvh;color:var(--text-primary);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex}.login-page h1{font-size:var(--font-title);margin:0 0 9px}.login-page p{color:var(--text-muted)}.login-page a{padding-inline:30px}.google-login-card{overflow-wrap:anywhere;justify-items:stretch;gap:16px;width:min(100%,390px);display:grid}.google-login-page{box-sizing:border-box}.google-login-card h1,.google-login-card p{margin:0}.google-login-card form,.google-login-providers{gap:12px;display:grid}.google-login-card .ui-field{text-align:start;grid-template-columns:minmax(0,1fr);gap:4px}.google-login-card [role=alert]{color:var(--danger)}.google-auth-diagnostic{overflow-wrap:anywhere;margin-top:4px;font-size:.8em;display:block}.google-delete-confirm{text-align:start;align-items:flex-start;gap:8px;padding-block:10px;display:flex}.google-delete-confirm input{flex:none;width:20px;height:20px;margin-block-start:2px}@media (max-height:500px){.sticky-page-top{position:static}}@media (max-width:500px){.editor-body:not(:lang(zh),:lang(ja)) .ui-field,.editor-body:not(:lang(zh),:lang(ja)) .ui-attribute{grid-template-columns:minmax(0,1fr);gap:3px}.editor-body:not(:lang(zh),:lang(ja)) .ui-attribute-label{line-height:1.5}}@media (max-width:370px){:root{--editor-gutter:10px;--editor-label:3.42857em}.food-name{font-size:var(--font-control)}.expiry-presets{--grid-max-columns:4}.plan-presets{--grid-max-columns:3}.ui-choice{padding-inline:3px}.storage-filters .ui-choice{padding-inline:2px}.head-actions{gap:5px}.bottom-nav{font-size:var(--font-body)}.editor-body:lang(ja) .ui-field,.editor-body:lang(ja) .ui-attribute{grid-template-columns:minmax(0,1fr);gap:3px}.editor-body:lang(ja) .ui-attribute-label{line-height:1.5}}@media (min-width:700px){:root{--editor-gutter:36px;--page-gutter:36px;--page-top:34px;--font-title:1.6875rem;--font-card-meta:.75rem}.app-shell{border-inline:1px solid var(--accent-soft);max-width:980px;margin:0 auto}.sticky-page-top{padding-bottom:10px}.food-grid{--grid-gap:3px;row-gap:7px}.food-card{min-height:60px;padding:9px 12px}.food-card.has-note{min-height:72px}.food-name{font-size:var(--font-input)}.bottom-nav{max-width:980px;margin:auto}.add-actions.is-floating{max-width:908px;left:max(36px, var(--safe-left));right:max(36px, var(--safe-right))}.expiry-presets{--grid-max-columns:12}.plan-presets{--grid-max-columns:9}}html[data-keyboard=open] .bottom-nav,html[data-keyboard=open] .floating-add{display:none}html[data-keyboard=open] .add-actions.is-floating,html[data-keyboard=open] .add-actions-anchor{bottom:calc(8px + var(--keyboard-offset,0px))}html[data-keyboard=open] dialog.modal-shade{top:var(--visible-top,0px);height:var(--visible-height,100dvh);bottom:auto}html[data-keyboard=open] .detail-sheet,html[data-keyboard=open] .note-sheet{max-height:calc(var(--visible-height,100dvh) - 12px);padding-bottom:12px}html[data-keyboard=open] .app-main{padding-bottom:calc(100px + var(--keyboard-offset,0px))}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation-duration:.01ms!important}}.ui-choice:focus-visible,.ui-button:focus-visible,.food-card:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.editor-error{color:var(--danger);font-size:var(--font-control);margin:8px 0}html[data-keyboard=open] input,html[data-keyboard=open] textarea{scroll-margin-bottom:80px}.shopping-list{grid-auto-rows:1fr;margin:0;padding:0;display:grid}.shopping-row{--shopping-remove-width:min(7rem, 50%);min-width:0;display:grid;position:relative;overflow:hidden}.shopping-row:not(:last-child):after{content:"";inset-inline:0;background:var(--border);pointer-events:none;height:1px;position:absolute;bottom:0}.shopping-row-surface{background:var(--surface-page);touch-action:pan-y pinch-zoom;grid-template-columns:44px minmax(0,1fr) 28px;align-items:center;width:100%;min-height:56px;transition:transform .16s ease-out;display:grid;position:relative}.shopping-row.is-revealed .shopping-row-surface{transform:translateX(calc(-1 * var(--shopping-remove-width)))}.shopping-buy{cursor:pointer;grid-column:1;align-self:stretch;place-items:center;min-height:44px;display:grid}.shopping-buy input{appearance:none;border:1px solid var(--accent-line);background:var(--surface);width:22px;height:22px;cursor:inherit;border-radius:6px;margin:0}.shopping-buy input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.shopping-buy input:disabled{opacity:.55;cursor:not-allowed}.shopping-item-details{text-align:start;min-height:44px;color:var(--text-primary);border:0;border-radius:0;flex-direction:column;grid-column:2;justify-content:center;align-self:stretch;align-items:flex-start;gap:2px;padding:6px 2px}.shopping-name{max-width:100%;font-size:var(--font-body);overflow-wrap:anywhere;line-height:1.57143}.shopping-markers{max-width:calc(100% - 6px);font-size:var(--font-emoji);vertical-align:middle;flex-wrap:wrap;gap:6px;margin-inline-start:6px;line-height:1.22222;display:inline-flex}.shopping-markers>span{justify-content:center;display:inline-flex}.shopping-note{-webkit-line-clamp:2;overflow-wrap:anywhere;white-space:pre-line;max-width:100%;font-size:var(--font-control);color:var(--text-note);-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.shopping-overflow{grid-column:3;align-self:stretch;min-height:44px}.shopping-remove{width:var(--shopping-remove-width);background:var(--danger-soft);border:0;border-radius:0;position:absolute;inset-block:0;inset-inline-end:0}.shopping-remove:focus-visible{outline-offset:-2px}.shopping-empty{text-align:center;color:var(--text-muted);padding:30px 8px}.shopping-empty h2{font-size:var(--font-body);margin:0 0 8px;font-weight:500}.shopping-empty p{font-size:var(--font-control);margin:0}.shopping-suggestions{border-top:1px solid var(--border);margin-top:0;padding-top:12px}.shopping-suggestions>.section-head h2{color:var(--text-primary);font-size:var(--font-body);font-weight:600}.shopping-suggestions-hint{color:var(--text-muted);font-size:var(--font-control);margin:5px 0 12px}.shopping-suggestion-group{margin:9px 0}.shopping-suggestion{gap:0}@media (prefers-reduced-motion:reduce){.shopping-row-surface{transition:none}}
