:root{color-scheme:dark;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Helvetica Neue", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--text-micro: .6875rem;--text-caption: .8125rem;--text-body: .9375rem;--text-label: 1rem;--text-title: 1.25rem;--text-heading: 1.75rem;--text-display: 2.25rem;--leading: 1.5;--leading-tight: 1.15;--tracking-tight: -.02em;--tracking-wide: .06em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 2rem;--space-8: 3rem;--space-10: 4rem;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 999px;--ease: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .12s;--duration: .22s;--duration-liquid: .42s;--loop-spin: .7s;--loop-pulse: 1.2s;--gray-000: #f4f4f5;--gray-100: #e4e4e7;--gray-200: #b8b8bf;--gray-300: #8f8f98;--gray-400: #6e6e77;--gray-500: #4f4f57;--gray-600: #38383f;--gray-700: #28282d;--gray-800: #1d1d21;--gray-850: #111113;--gray-900: #0b0b0c;--gray-950: #060607;--page-bg: var(--gray-900);--surface: #151517;--surface-raised: #1a1a1d;--color-text: var(--gray-000);--color-text-muted: var(--gray-200);--color-text-subtle: var(--gray-300);--color-line: rgba(255, 255, 255, .07);--color-line-strong: rgba(255, 255, 255, .12);--color-hover: rgba(255, 255, 255, .04);--color-press: rgba(255, 255, 255, .08);--color-accent: #6cb8f6;--color-accent-strong: #93cbf9;--color-accent-soft: rgba(108, 184, 246, .12);--color-accent-line: rgba(108, 184, 246, .34);--color-accent-contrast: #06182a;--color-warn: #f2b65a;--color-warn-soft: rgba(242, 182, 90, .14);--color-warn-line: rgba(242, 182, 90, .35);--color-danger: #f37b72;--color-danger-soft: rgba(243, 123, 114, .13);--color-danger-line: rgba(243, 123, 114, .35);--color-info: #a5b0f7;--color-info-soft: rgba(165, 176, 247, .13);--macro-kcal: var(--color-accent);--macro-protein: #f08fb0;--macro-fat: #f2c85a;--macro-carbs: #5fd0bd;--macro-fiber: #b49af0;--bar-track: rgba(255, 255, 255, .06);--bar-planned: rgba(255, 255, 255, .16);--bar-height: 8px;--bar-height-sm: 5px;--mark-width: 2px;--glass-bg: var(--surface);--glass-bg-strong: var(--surface-raised);--glass-bg-solid: var(--surface-raised);--glass-bg-float: rgba(26, 26, 29, .88);--glass-border: rgba(255, 255, 255, .07);--glass-blur: 16px;--overlay: rgba(0, 0, 0, .6);--overlay-blur: 2px;--shadow-glass: 0 16px 40px rgba(0, 0, 0, .5);--shadow-soft: none;--shadow-lift: 0 8px 24px rgba(0, 0, 0, .45);--focus-ring: 0 0 0 3px rgba(108, 184, 246, .38);--tap: 44px;--tap-dense: 34px;--control-height: 44px;--control-height-sm: 34px;--icon-sm: 16px;--icon: 20px;--icon-lg: 24px;--content-max: 1180px;--content-max-wide: 1400px;--content-narrow: 760px;--gutter: var(--space-4);--gutter-desktop: var(--space-7);--sidebar-width: 240px;--rail-width: 76px;--chat-panel-width: 400px;--tile-min: 280px;--tile-min-sm: 220px;--field-min: 140px;--nav-height: 68px;--nav-inset: var(--space-3);--nav-clearance: calc(var(--nav-height) + var(--nav-inset) + var(--space-6) + env(safe-area-inset-bottom, 0px));--sheet-width: 560px;--sheet-width-wide: 760px;--sheet-side-width: 480px;--sheet-max-height: 86svh;--sheet-top-gap: var(--space-6);--sheet-handle-width: 40px;--sheet-handle-height: 4px;--thumb-sm: 40px;--thumb: 56px;--thumb-lg: 88px;--hero-height: 220px;--hero-height-desktop: 300px;--chart-height: 160px;--planning-cell-min: 96px;--planning-slot-col: 120px;--chat-bubble-max: 78%;--chat-avatar: 32px;--chat-avatar-offset: calc(var(--text-caption) * var(--leading) + var(--space-1));--chat-photo-max: 220px;--track-off: rgba(255, 255, 255, .1);--track-on: var(--color-accent);--switch-width: 46px;--switch-height: 28px;--switch-thumb: 22px;--spinner-size: 18px;--spinner-size-sm: 13px;--dot: 8px;--z-base: 1;--z-sticky: 10;--z-nav: 50;--z-panel: 60;--z-sheet: 150}:root{--stock-row-height: 56px;--stock-cell-pad: var(--space-2) var(--space-3);--stock-head-bg: var(--glass-bg-strong);--stock-row-alert: var(--color-warn-soft);--fill-gauge-width: 10px;--fill-gauge-height: 16px;--search-max: 420px;--summary-width: 340px;--shopping-total-size: var(--text-display);--restock-dock-offset: calc(var(--nav-height) + var(--nav-inset) + var(--space-3) + env(safe-area-inset-bottom, 0px))}:root{--meal-card-min: 240px;--meal-card-height: 88px;--day-tab-width: 56px;--day-tab-dot: 5px;--recipe-card-photo: 168px;--ingredient-dot: var(--dot)}:root{--crop-frame-max-height: 55svh;--crop-guide: rgba(255, 255, 255, .5);--crop-track: 4px;--crop-thumb: 20px}:root{--weight-chart-height: var(--chart-height);--weight-line: 2px;--intake-chart-height: 120px;--intake-bar-width: 60%;--chat-input-max: 160px;--chat-bubble-max-panel: 92%}:root{--mic-recording: var(--color-danger);--mic-recording-soft: var(--color-danger-soft);--mic-recording-line: var(--color-danger-line);--mic-ring: 6px;--mic-timer-bg: var(--surface-raised);--dictation-reserve: calc(var(--tap) + var(--space-1));--dictation-reserve-dense: calc(var(--tap-dense) + var(--space-2))}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%;background:var(--page-bg)}body{min-height:100svh;font-family:var(--font-sans);font-size:var(--text-body);font-weight:var(--weight-regular);line-height:var(--leading);color:var(--color-text);background:var(--page-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none}#root{position:relative;z-index:var(--z-base);isolation:isolate}h1,h2,h3{font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed}a{color:var(--color-accent-strong);text-decoration:none}ul,ol{list-style:none}img{display:block;max-width:100%}:focus-visible{outline:none;box-shadow:var(--focus-ring)}::selection{background:var(--color-accent);color:var(--color-accent-contrast)}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;padding:0 var(--space-1);border:1px solid var(--color-line-strong);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:var(--text-micro);color:var(--color-text-subtle)}.glass{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg)}.scroll-area{scrollbar-width:thin;scrollbar-color:var(--gray-600) transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-height);padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-body);font-weight:var(--weight-semibold);white-space:nowrap;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease),opacity var(--duration-fast) var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45}.btn-primary{background:var(--color-accent);color:var(--color-accent-contrast)}.btn-primary:hover:not(:disabled){background:var(--color-accent-strong)}.btn-ghost{background:var(--glass-bg-strong);border-color:var(--glass-border);color:var(--color-text)}.btn-ghost:hover:not(:disabled){border-color:var(--color-line-strong);background:var(--gray-700)}.btn-quiet{color:var(--color-text-muted)}.btn-quiet:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}.btn-danger{border-color:var(--color-danger-line);color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-soft)}.btn-block{width:100%}.btn-sm{min-height:var(--control-height-sm);padding:0 var(--space-3);font-size:var(--text-caption)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);flex:0 0 auto;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg-strong);color:var(--color-text-muted);transition:color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.icon-btn[data-variant=quiet]{border-color:transparent;background:transparent}.icon-btn[data-variant=primary]{border-color:transparent;background:var(--color-accent);color:var(--color-accent-contrast)}.icon-btn:hover:not(:disabled){color:var(--color-text);background:var(--gray-700)}.icon-btn[data-variant=primary]:hover:not(:disabled){color:var(--color-accent-contrast);background:var(--color-accent-strong)}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:disabled{opacity:.35}@media(pointer:fine){.icon-btn{width:var(--tap-dense);height:var(--tap-dense)}}.mic{display:inline-flex;flex:0 0 auto;align-items:center;gap:var(--space-2)}.mic-btn{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.mic-btn[data-state=recording],.mic-btn[data-state=recording]:hover:not(:disabled){border-color:var(--mic-recording-line);background:var(--mic-recording-soft);color:var(--mic-recording);animation:mic-ring var(--loop-pulse) var(--ease) infinite}.mic-timer{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);background:var(--mic-timer-bg);color:var(--mic-recording);font-size:var(--text-caption);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;pointer-events:none}.mic-dot{width:var(--dot);height:var(--dot);border-radius:50%;background:var(--mic-recording);animation:pulse var(--loop-pulse) ease-in-out infinite}@keyframes mic-ring{0%{box-shadow:0 0 0 0 var(--mic-recording-line)}to{box-shadow:0 0 0 var(--mic-ring) transparent}}.spinner{width:var(--spinner-size);height:var(--spinner-size);flex:0 0 auto;border:2px solid var(--gray-600);border-top-color:var(--color-accent);border-radius:50%;animation:spin var(--loop-spin) linear infinite}.spinner[data-size=sm]{width:var(--spinner-size-sm);height:var(--spinner-size-sm);border-width:1.5px}.loading-block{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8) 0;color:var(--color-text-muted)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-7) var(--space-5);text-align:center;color:var(--color-text-subtle)}.empty-title{font-size:var(--text-label);font-weight:var(--weight-semibold);color:var(--color-text)}.empty-text{max-width:38ch}.error-note{padding:var(--space-3) var(--space-4);border:1px solid var(--color-danger-line);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger)}.reply{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-accent-line);border-radius:var(--radius-md);background:var(--color-accent-soft);animation:rise-in var(--duration) var(--ease) both}.reply-icon{display:flex;padding-top:var(--space-1);color:var(--color-accent)}.thinking{display:inline-flex;align-items:center;gap:var(--space-3);color:var(--color-text-subtle);font-size:var(--text-caption)}.thinking-dots{display:inline-flex;gap:var(--space-1)}.thinking-dots span{width:var(--dot);height:var(--dot);border-radius:50%;background:var(--color-accent);animation:pulse var(--loop-pulse) var(--ease) infinite}.thinking-dots span:nth-child(2){animation-delay:calc(var(--loop-pulse) / 8)}.thinking-dots span:nth-child(3){animation-delay:calc(var(--loop-pulse) / 4)}.chip{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border:1px solid var(--color-line-strong);border-radius:var(--radius-full);background:var(--color-hover);color:var(--color-text-muted);font-size:var(--text-micro);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap}.chip[data-tone=accent]{border-color:var(--color-accent-line);background:var(--color-accent-soft);color:var(--color-accent)}.chip[data-tone=warn]{border-color:var(--color-warn-line);background:var(--color-warn-soft);color:var(--color-warn)}.chip[data-tone=danger]{border-color:var(--color-danger-line);background:var(--color-danger-soft);color:var(--color-danger)}.chip[data-tone=info]{border-color:transparent;background:var(--color-info-soft);color:var(--color-info)}.card{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding:var(--space-4)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--control-height-sm)}.card-title{font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-subtle)}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap);padding:var(--space-2) 0;border-bottom:1px solid var(--color-line);text-align:left;color:inherit}.list-item:last-child{border-bottom:none}a.list-item:hover,button.list-item:hover{background:var(--color-hover)}.list-main{display:flex;flex:1;flex-direction:column;min-width:0}.list-title{overflow:hidden;font-weight:var(--weight-semibold);text-overflow:ellipsis;white-space:nowrap}.list-meta{color:var(--color-text-subtle);font-size:var(--text-caption)}.menu-list{display:flex;flex-direction:column;gap:var(--space-1)}.menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-label);font-weight:var(--weight-medium);text-align:left}.menu-item:hover,.menu-item[data-active=true]{background:var(--color-hover);color:var(--color-accent)}.menu-item[data-tone=danger]{color:var(--color-danger)}.photo{flex:0 0 auto;width:var(--thumb);height:var(--thumb);border-radius:var(--radius-md);background:var(--gray-700);object-fit:cover}.photo[data-size=sm]{width:var(--thumb-sm);height:var(--thumb-sm);border-radius:var(--radius-sm)}.photo[data-size=lg]{width:var(--thumb-lg);height:var(--thumb-lg)}.photo[data-size=hero]{width:100%;height:var(--hero-height);border-radius:var(--radius-lg)}.photo-empty{display:block;background:var(--gray-800)}.stepper{display:inline-flex;align-items:center;gap:var(--space-1);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--gray-850)}.stepper-value{min-width:3ch;font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;text-align:center}.markdown{line-height:1.6;overflow-wrap:anywhere}.markdown>*+*{margin-top:var(--space-3)}.markdown ul{padding-left:var(--space-5);list-style:disc}.markdown ol{padding-left:var(--space-5);list-style:decimal}.markdown li+li{margin-top:var(--space-1)}.markdown h1,.markdown h2,.markdown h3{font-size:var(--text-label)}.markdown code{font-family:var(--font-mono);font-size:var(--text-caption)}.markdown strong{color:var(--color-text)}.macro-list{display:flex;flex-direction:column;gap:var(--space-3)}.macro-list[data-compact=true]{gap:var(--space-2)}.macro-head{display:flex;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-1);font-size:var(--text-caption)}.macro-label{color:var(--color-text-muted);font-weight:var(--weight-semibold)}.macro-value{font-variant-numeric:tabular-nums}.macro-target{color:var(--color-text-subtle)}.macro-bar{position:relative;height:var(--bar-height);overflow:hidden;border-radius:var(--radius-full);background:var(--bar-track)}.macro-list[data-compact=true] .macro-bar{height:var(--bar-height-sm)}.macro-planned,.macro-eaten{position:absolute;inset:0 auto 0 0;border-radius:var(--radius-full);transition:width var(--duration-liquid) var(--ease)}.macro-planned{background:var(--bar-planned)}.macro-eaten{background:var(--macro-color, var(--color-accent))}.macro-mark{position:absolute;top:0;bottom:0;width:var(--mark-width);background:var(--color-text)}.macro[data-macro=kcal]{--macro-color: var(--macro-kcal)}.macro[data-macro=proteinG]{--macro-color: var(--macro-protein)}.macro[data-macro=fatG]{--macro-color: var(--macro-fat)}.macro[data-macro=carbsG]{--macro-color: var(--macro-carbs)}.macro[data-macro=fiberG]{--macro-color: var(--macro-fiber)}.form{display:flex;flex-direction:column;gap:var(--space-4)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--field-min),1fr));gap:var(--space-3)}.field{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.field-label{color:var(--color-text-muted);font-size:var(--text-caption);font-weight:var(--weight-semibold)}.field-hint{color:var(--color-text-subtle);font-size:var(--text-caption)}.input,.textarea,.select{width:100%;min-height:var(--control-height);padding:var(--space-2) var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--gray-850);color:var(--color-text);font-size:var(--text-label);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.input::placeholder,.textarea::placeholder{color:var(--color-text-subtle)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--color-accent-line);box-shadow:var(--focus-ring)}.input:disabled,.select:disabled{opacity:.55}.textarea{min-height:calc(var(--control-height) * 2);line-height:1.55;resize:vertical}.field-dictation{position:relative}.field-dictation>.mic{position:absolute;top:var(--space-1);right:var(--space-1)}.field-dictation[data-multiline=false]>.mic{top:0;bottom:0}.field-dictation:has(>.mic)>.input,.field-dictation:has(>.mic)>.textarea{padding-right:var(--dictation-reserve)}@media(pointer:fine){.field-dictation:has(>.mic)>.input,.field-dictation:has(>.mic)>.textarea{padding-right:var(--dictation-reserve-dense)}}.select{padding-right:var(--space-7);appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%239aa59e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right var(--space-3) center;background-repeat:no-repeat}.search{position:relative;display:flex;flex:1;align-items:center;min-width:0}.search>svg{position:absolute;left:var(--space-3);color:var(--color-text-subtle);pointer-events:none}.search .input{padding-left:calc(var(--space-3) * 2 + var(--icon-sm))}.search kbd{position:absolute;right:var(--space-3)}@media(pointer:coarse){.search kbd{display:none}}.switch{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);width:100%;min-height:var(--control-height);padding:var(--space-2) var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--gray-850);text-align:left}.switch-track{position:relative;width:var(--switch-width);height:var(--switch-height);flex:0 0 auto;border-radius:var(--radius-full);background:var(--track-off);transition:background var(--duration) var(--ease)}.switch[data-on=true] .switch-track{background:var(--track-on)}.switch-thumb{position:absolute;top:calc((var(--switch-height) - var(--switch-thumb)) / 2);left:calc((var(--switch-height) - var(--switch-thumb)) / 2);width:var(--switch-thumb);height:var(--switch-thumb);border-radius:50%;background:var(--gray-000);box-shadow:var(--shadow-soft);transition:transform var(--duration) var(--ease-spring)}.switch[data-on=true] .switch-thumb{transform:translate(calc(var(--switch-width) - var(--switch-height)))}.segmented{position:relative;display:flex;max-width:100%;padding:var(--space-1);overflow-x:auto;border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--gray-850);scrollbar-width:none}.segmented-thumb{position:absolute;top:var(--space-1);bottom:var(--space-1);left:0;border-radius:var(--radius-sm);background:var(--gray-700);box-shadow:var(--shadow-soft);pointer-events:none;transition:transform var(--duration) var(--ease),width var(--duration) var(--ease)}.segmented-option{position:relative;z-index:1;flex:1;min-height:var(--control-height-sm);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-subtle);font-weight:var(--weight-medium);white-space:nowrap;transition:color var(--duration) var(--ease)}.segmented-option[data-active=true]{color:var(--color-text);font-weight:var(--weight-semibold)}.choice{display:flex;flex-wrap:wrap;gap:var(--space-2)}.choice-option{display:inline-flex;flex:1;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-4);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--gray-850);color:var(--color-text-muted);font-weight:var(--weight-semibold);white-space:nowrap;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.choice-option:hover{border-color:var(--color-accent-line)}.choice-option[data-active=true]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.filter-row{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none}.filter{flex:0 0 auto;min-height:var(--control-height-sm);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-full);color:var(--color-text-muted);font-size:var(--text-caption);font-weight:var(--weight-semibold)}.filter:hover{border-color:var(--color-accent-line)}.filter[data-active=true]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.sheet-overlay{position:fixed;inset:0;z-index:var(--z-sheet);display:flex;align-items:flex-end;justify-content:center;background:var(--overlay);backdrop-filter:blur(var(--overlay-blur));-webkit-backdrop-filter:blur(var(--overlay-blur));opacity:0;transition:opacity var(--duration) var(--ease)}.sheet-overlay[data-open=true]{opacity:1}.sheet{display:flex;flex-direction:column;width:100%;height:calc(100svh - var(--sheet-top-gap));border:1px solid var(--glass-border);border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--glass-bg-solid);box-shadow:var(--shadow-glass);outline:none;transform:translateY(100%);transition:transform var(--duration-liquid) var(--ease)}.sheet-overlay[data-open=true] .sheet{transform:none}.sheet[data-dragging=true]{transition:none}.sheet-handle{display:block;flex:0 0 auto;width:var(--sheet-handle-width);height:var(--sheet-handle-height);margin:var(--space-3) auto var(--space-1);border-radius:var(--radius-full);background:var(--gray-500);touch-action:none}.sheet-header{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) var(--space-4) var(--space-2);touch-action:none}.sheet-title{min-width:0;overflow:hidden;font-size:var(--text-title);text-overflow:ellipsis;white-space:nowrap}.sheet-body{display:flex;flex:1;flex-direction:column;gap:var(--space-4);padding:var(--space-2) var(--space-4) var(--space-5);overflow-y:auto;overscroll-behavior:contain}.sheet-footer{display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--color-line)}.sheet-footer>.btn{flex:1}@media(min-width:768px){.sheet-overlay{align-items:center;padding:var(--space-6)}.sheet{width:min(var(--sheet-width),100%);height:auto;max-height:var(--sheet-max-height);border-bottom:1px solid var(--glass-border);border-radius:var(--radius-xl);opacity:0;transform:translateY(var(--space-3)) scale(.98);transition:transform var(--duration) var(--ease),opacity var(--duration) var(--ease)}.sheet[data-size=wide]{width:min(var(--sheet-width-wide),100%)}.sheet-overlay[data-open=true] .sheet{opacity:1}.sheet-handle{display:none}.sheet-header{padding-top:var(--space-4)}.sheet-footer{justify-content:flex-end}.sheet-footer>.btn{flex:0 0 auto}.sheet-overlay[data-placement=side]{align-items:stretch;justify-content:flex-end;padding:var(--space-3)}.sheet-overlay[data-placement=side] .sheet{width:min(var(--sheet-side-width),100%);max-height:none;transform:translate(var(--space-7))}.sheet-overlay[data-placement=side] .sheet[data-size=wide]{width:min(var(--sheet-width-wide),100%)}.sheet-overlay[data-placement=side][data-open=true] .sheet{transform:none}}.cropper{display:flex;flex-direction:column;gap:var(--space-4)}.cropper .segmented{align-self:center}.cropper-frame{position:relative;width:min(100%,calc(var(--crop-frame-max-height) * var(--crop-ratio)));aspect-ratio:var(--crop-ratio);margin-inline:auto;overflow:hidden;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--gray-950);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;transition:width var(--duration) var(--ease)}.cropper-frame:active{cursor:grabbing}.cropper-frame:focus-visible{border-color:var(--color-accent-line)}.cropper-frame[data-locked=true]{cursor:default;opacity:.6}.cropper-image{position:absolute;max-width:none;pointer-events:none}.cropper-thirds{position:absolute;inset:0;pointer-events:none;opacity:.35;transition:opacity var(--duration-fast) var(--ease);background:linear-gradient(to right,transparent calc(33.333% - .5px),var(--crop-guide) calc(33.333% - .5px),var(--crop-guide) calc(33.333% + .5px),transparent calc(33.333% + .5px),transparent calc(66.666% - .5px),var(--crop-guide) calc(66.666% - .5px),var(--crop-guide) calc(66.666% + .5px),transparent calc(66.666% + .5px)),linear-gradient(to bottom,transparent calc(33.333% - .5px),var(--crop-guide) calc(33.333% - .5px),var(--crop-guide) calc(33.333% + .5px),transparent calc(33.333% + .5px),transparent calc(66.666% - .5px),var(--crop-guide) calc(66.666% - .5px),var(--crop-guide) calc(66.666% + .5px),transparent calc(66.666% + .5px))}.cropper-frame:hover .cropper-thirds,.cropper-frame:active .cropper-thirds,.cropper-frame:focus-visible .cropper-thirds{opacity:.8}.cropper-hint{color:var(--color-text-subtle);font-size:var(--text-caption);text-align:center}.cropper-zoom{display:flex;flex-direction:column;gap:var(--space-2)}.cropper-zoom input{width:100%;height:var(--tap-dense);margin:0;background:none;appearance:none;-webkit-appearance:none;cursor:pointer}.cropper-zoom input::-webkit-slider-runnable-track{height:var(--crop-track);border-radius:var(--radius-full);background:var(--track-off)}.cropper-zoom input::-moz-range-track{height:var(--crop-track);border-radius:var(--radius-full);background:var(--track-off)}.cropper-zoom input::-webkit-slider-thumb{width:var(--crop-thumb);height:var(--crop-thumb);margin-top:calc((var(--crop-track) - var(--crop-thumb)) / 2);border:0;border-radius:var(--radius-full);background:var(--color-accent);-webkit-appearance:none;appearance:none}.cropper-zoom input::-moz-range-thumb{width:var(--crop-thumb);height:var(--crop-thumb);border:0;border-radius:var(--radius-full);background:var(--color-accent)}.cropper-zoom input:focus-visible{outline:none;box-shadow:none}.cropper-zoom input:focus-visible::-webkit-slider-thumb{box-shadow:var(--focus-ring)}.cropper-zoom input:focus-visible::-moz-range-thumb{box-shadow:var(--focus-ring)}.cropper-zoom input:disabled{cursor:default;opacity:.5}.cropper-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.app-boot{display:grid;min-height:100svh;place-items:center}.app-shell{min-height:100svh}.app-main{min-width:0}@media(min-width:768px){.app-shell{display:grid;grid-template-columns:var(--rail-width) minmax(0,1fr);align-items:start}}@media(min-width:1024px){.app-shell{grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.app-shell[data-panel=true]{grid-template-columns:var(--sidebar-width) minmax(0,1fr) var(--chat-panel-width)}}.page{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-5) var(--gutter) var(--nav-clearance);animation:rise-in var(--duration) var(--ease) both}.page[data-width=narrow]{max-width:var(--content-narrow)}@media(min-width:768px){.page{padding:var(--space-7) var(--gutter-desktop) var(--space-8)}}@media(min-width:1440px){.page[data-width=wide]{max-width:var(--content-max-wide)}}.page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3) var(--space-4);margin-bottom:var(--space-5)}.page-heading{display:flex;align-items:center;gap:var(--space-3);min-width:0}.page-heading-text{min-width:0}.page-title{font-size:var(--text-heading);letter-spacing:var(--tracking-tight);overflow-wrap:anywhere}.page-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.eyebrow{color:var(--color-text-subtle);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.page-subtitle{margin-top:var(--space-1);color:var(--color-text-subtle);font-size:var(--text-body)}@media(min-width:1024px){.page-title{font-size:var(--text-display)}}.grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}.grid[data-cols=auto]{grid-template-columns:repeat(auto-fill,minmax(min(var(--tile-min),100%),1fr))}.grid[data-cols=auto-sm]{grid-template-columns:repeat(auto-fill,minmax(min(var(--tile-min-sm),100%),1fr))}@media(min-width:768px){.grid[data-cols="2"],.grid[data-cols="3"],.grid[data-cols="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}}@media(min-width:1024px){.grid[data-cols="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.grid[data-cols="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}}.span-all{grid-column:1 / -1}.split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}@media(min-width:1024px){.split{grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:var(--space-6)}.split>:first-child{position:sticky;top:var(--space-6)}}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4)}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.stack[data-gap=lg]{gap:var(--space-5)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.spacer{flex:1}.muted{color:var(--color-text-subtle)}.caption{color:var(--color-text-subtle);font-size:var(--text-caption)}.numeric{font-variant-numeric:tabular-nums}.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-2) var(--space-4)}.kv dt{color:var(--color-text-subtle)}.kv dd{font-variant-numeric:tabular-nums;text-align:right}.lock{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-5);min-height:100svh;padding:var(--space-6);text-align:center}.lock-title{font-size:var(--text-title);font-weight:var(--weight-semibold)}.lock-form{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:var(--sheet-side-width)}.lock-input{text-align:center;letter-spacing:var(--tracking-wide);border-radius:var(--radius-full)}.lock-error{color:var(--color-danger);font-size:var(--text-caption)}.bottom-nav{position:fixed;right:var(--nav-inset);bottom:calc(var(--nav-inset) + env(safe-area-inset-bottom,0px));left:var(--nav-inset);z-index:var(--z-nav);height:var(--nav-height);overflow:hidden;border:1px solid var(--glass-border);border-radius:var(--radius-xl);background:var(--glass-bg-float);box-shadow:var(--shadow-glass);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}.bottom-nav-indicator{position:absolute;top:0;left:0;height:100%;pointer-events:none;transition:transform var(--duration-liquid) var(--ease-spring)}.bottom-nav-plate{position:absolute;inset:var(--space-2) var(--space-2);border-radius:var(--radius-lg);background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-line)}.bottom-nav-tabs{position:relative;display:flex;height:100%}.bottom-nav-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);min-width:0;color:var(--color-text-subtle);transition:color var(--duration) var(--ease)}.bottom-nav-item[data-active=true]{color:var(--color-accent)}.bottom-nav-label{max-width:100%;overflow:hidden;font-size:var(--text-micro);font-weight:var(--weight-semibold);text-overflow:ellipsis;white-space:nowrap}.side-nav{display:none}@media(min-width:768px){.bottom-nav{display:none}.side-nav{position:sticky;top:0;z-index:var(--z-nav);display:flex;flex-direction:column;gap:var(--space-4);height:100svh;padding:var(--space-4) var(--space-2);border-width:0 1px 0 0;border-radius:0}.side-nav-brand{display:none;align-items:center;min-height:var(--tap)}.side-nav-list{display:flex;flex:1;flex-direction:column;gap:var(--space-1)}.side-nav-item{position:relative;display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;min-height:var(--tap);padding:var(--space-2);border-radius:var(--radius-md);color:var(--color-text-subtle);font-weight:var(--weight-medium);transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.side-nav-item:hover{background:var(--color-hover);color:var(--color-text)}.side-nav-item[data-active=true]{background:var(--color-accent-soft);color:var(--color-accent)}.side-nav-footer{display:flex;flex-direction:column;gap:var(--space-1)}.side-nav-name,.side-nav-label,.side-nav-kbd,.side-nav-chat{display:none}}@media(min-width:1024px){.side-nav{padding:var(--space-5) var(--space-3)}.side-nav-brand{display:flex;padding:0 var(--space-2)}.side-nav-name{display:inline;font-size:var(--text-label);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.side-nav-item{justify-content:flex-start;padding:var(--space-2) var(--space-3)}.side-nav-label{display:inline}.side-nav-chat{display:flex}.side-nav-kbd{display:inline-flex;margin-left:auto}.side-nav-hint{display:block;padding:var(--space-2) var(--space-3);color:var(--color-text-subtle);font-size:var(--text-caption)}}.today-grid{margin-top:var(--space-4)}.today-meals{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.today-section-title{padding:0 var(--space-1)}.today-meal-list{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}@media(min-width:768px){.today-meal-list{grid-template-columns:repeat(auto-fill,minmax(min(var(--tile-min),100%),1fr))}}.today-meal{display:flex;align-items:center;gap:var(--space-4);min-height:var(--thumb-lg);padding:var(--space-3);color:inherit;transition:transform var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.today-meal:hover{border-color:var(--color-accent-line)}.today-meal:active{transform:scale(.99)}.today-meal[data-status=done],.today-meal[data-status=skipped]{opacity:.7}.today-meal-body{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-width:0}.today-meal-head{display:flex;align-items:center;gap:var(--space-2)}.today-meal-title{font-size:var(--text-label);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.today-meal-reason{display:-webkit-box;overflow:hidden;color:var(--color-text-subtle);font-size:var(--text-caption);-webkit-box-orient:vertical;-webkit-line-clamp:2}.today-meal-missing{white-space:normal}.today-meal-go{display:flex;color:var(--color-text-subtle)}.request{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-line)}.request-question{font-weight:var(--weight-semibold)}.request-answer{display:flex;gap:var(--space-2)}.request-answer .input{flex:1;min-width:0}.today-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}@media(min-width:1024px){.today-stats{grid-template-columns:minmax(0,1fr)}}.stat{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);color:inherit}a.stat:hover{border-color:var(--color-accent-line)}.stat-value{font-size:var(--text-title);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.stat[data-tone=accent] .stat-value{color:var(--color-accent)}.stat[data-tone=danger] .stat-value{color:var(--color-danger)}.stat-label{color:var(--color-text-subtle);font-size:var(--text-caption);line-height:var(--leading-tight)}.upcoming{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--tile-min-sm),100%),1fr));gap:var(--space-4)}.upcoming-label{margin-bottom:var(--space-1);color:var(--color-accent);font-size:var(--text-caption);font-weight:var(--weight-semibold);text-transform:capitalize}.meal-status{margin-top:var(--space-2)}.meal-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);width:100%}.meal-actions>.btn{flex:1}@media(min-width:768px){.meal-actions{width:auto}.meal-actions>.btn{flex:0 0 auto}}.meal-reason{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:var(--color-text-muted)}.meal-reason>svg{flex:0 0 auto;margin-top:var(--space-1);color:var(--color-accent)}.meal-feedback-body{align-items:flex-start;flex-wrap:nowrap;gap:var(--space-4)}.meal-feedback-text{color:var(--color-text-muted);font-style:italic}.complete-photo{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.week-nav{gap:var(--space-2)}.meal-card{position:relative;display:flex;flex-direction:column;min-height:var(--meal-card-height);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg-strong);transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.meal-card[data-status=empty]{justify-content:center;padding:var(--space-3);border-style:dashed;background:transparent}.meal-card[data-status=done]{border-color:var(--color-accent-line)}.meal-card[data-status=skipped]{opacity:.55}.meal-card:not([data-status=empty]):hover{border-color:var(--color-accent-line);background:var(--gray-700)}.meal-card-link{display:flex;flex:1;flex-direction:column;gap:var(--space-2);padding:var(--space-3);color:inherit}.meal-card-slot{color:var(--color-text-subtle);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.meal-card-title{font-weight:var(--weight-semibold);line-height:var(--leading-tight);overflow-wrap:anywhere}.meal-card[data-status=skipped] .meal-card-title{text-decoration:line-through}.meal-card-empty{color:var(--color-text-subtle);font-size:var(--text-caption)}.meal-card-remove{position:absolute;top:var(--space-1);right:var(--space-1);opacity:0;transition:opacity var(--duration-fast) var(--ease)}.meal-card:hover .meal-card-remove,.meal-card-remove:focus-visible{opacity:1}@media(hover:none){.meal-card-remove{opacity:1}}.week-grid{display:grid;gap:var(--space-2);padding:var(--space-3);overflow-x:auto}.week-row{display:grid;grid-template-columns:var(--planning-slot-col) repeat(7,minmax(var(--planning-cell-min),1fr));gap:var(--space-2)}.week-day,.week-slot{display:flex;align-items:center;padding:var(--space-2);color:var(--color-text-subtle);font-size:var(--text-caption);font-weight:var(--weight-semibold)}.week-day{justify-content:center;border-radius:var(--radius-sm);text-transform:capitalize}.week-day[data-today=true]{background:var(--color-accent-soft);color:var(--color-accent)}.week-cell{display:flex;flex-direction:column;border-radius:var(--radius-md)}.week-cell>.meal-card{flex:1}.week-cell[data-today=true]{box-shadow:0 0 0 1px var(--color-accent-line)}.day-list{display:flex;flex-direction:column;gap:var(--space-4)}.day-tabs{display:flex;gap:var(--space-2);overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.day-tab{display:flex;flex:1 0 var(--day-tab-width);flex-direction:column;align-items:center;gap:var(--space-1);min-height:var(--tap);padding:var(--space-2) var(--space-1);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg-strong);color:var(--color-text-subtle);scroll-snap-align:center}.day-tab[data-today=true]{border-color:var(--color-accent-line)}.day-tab[data-active=true]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.day-tab-name{font-size:var(--text-micro);font-weight:var(--weight-semibold);text-transform:uppercase}.day-tab-number{color:var(--color-text);font-size:var(--text-label);font-weight:var(--weight-bold)}.day-tab-dots{display:flex;gap:var(--space-1)}.day-tab-dots>span{width:var(--day-tab-dot);height:var(--day-tab-dot);border-radius:50%;background:var(--bar-track)}.day-tab-dots>span[data-filled=true]{background:var(--color-accent)}.day-slots{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);touch-action:pan-y;animation:fade-in var(--duration) var(--ease) both}.day-slots-title{font-size:var(--text-title);text-transform:capitalize}@media(min-width:768px){.day-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.day-slots-title{grid-column:1 / -1}}.recipe-view{display:flex;flex-direction:column;gap:var(--space-5)}.recipe-intro{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}@media(min-width:1024px){.recipe-intro{grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:var(--space-6)}.recipe-intro .photo[data-size=hero]{height:var(--hero-height-desktop)}}.recipe-summary{font-size:var(--text-label);color:var(--color-text-muted)}.recipe-facts{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);font-weight:var(--weight-semibold)}.recipe-facts .caption{display:block;font-weight:var(--weight-regular)}.recipe-adaptations{padding:var(--space-3);border-left:2px solid var(--color-accent-line);color:var(--color-text-muted)}.recipe-nutrient{display:contents}.recipe-steps ol>li::marker{color:var(--color-accent);font-weight:var(--weight-bold)}.recipe-steps ol>li+li{margin-top:var(--space-3)}@media(min-width:1024px){.recipe-steps{font-size:var(--text-label)}}.ingredient{gap:var(--space-3)}.ingredient-dot{width:var(--ingredient-dot);height:var(--ingredient-dot);flex:0 0 auto;border-radius:50%;background:var(--color-accent)}.ingredient[data-missing=true] .ingredient-dot{background:var(--color-warn)}.ingredient-name{font-weight:var(--weight-medium)}.ingredient-side{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-2)}.ingredient-amount{color:var(--color-text-muted)}.recipe-card{display:flex;flex-direction:column;overflow:hidden;color:inherit;transition:transform var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.recipe-card .photo[data-size=hero]{height:var(--recipe-card-photo);border-radius:0}.recipe-card:hover{border-color:var(--color-accent-line);box-shadow:var(--shadow-lift);transform:translateY(calc(var(--space-1) * -1))}.recipe-card-body{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4)}.recipe-card-title{font-size:var(--text-label);font-weight:var(--weight-semibold)}.recipe-card-summary{display:-webkit-box;overflow:hidden;color:var(--color-text-subtle);font-size:var(--text-caption);-webkit-box-orient:vertical;-webkit-line-clamp:2}.grid[data-loading=true]{opacity:.6;transition:opacity var(--duration) var(--ease)}.ingredient-editor{display:flex;flex-direction:column;gap:var(--space-3);border:none}.ingredient-edit{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-hover)}.ingredient-edit-head{display:flex;align-items:center;gap:var(--space-2)}.stock-toolbar .search{flex-basis:100%}@media(min-width:768px){.stock-toolbar .search{flex-basis:auto;max-width:var(--search-max)}}.stock-groups{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}@media(min-width:768px){.stock-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}.stock-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);min-height:var(--stock-row-height);padding:var(--space-2) 0;border-bottom:1px solid var(--color-line)}.stock-row:last-child{border-bottom:none}.stock-row-main{display:flex;flex:1 1 auto;align-items:center;gap:var(--space-3);min-width:0;min-height:var(--tap);border-radius:var(--radius-sm);text-align:left}.stock-row-main:hover .list-title{color:var(--color-accent)}.stock-row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2)}.stock-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-2)}.stock-quantity{color:var(--color-text-muted);font-size:var(--text-caption);font-weight:var(--weight-semibold)}.fill-levels{display:inline-flex;gap:var(--space-1)}.fill-level{display:inline-flex;align-items:center;gap:var(--space-1);min-height:var(--control-height-sm);padding:0 var(--space-2);border:1px solid var(--color-line);border-radius:var(--radius-sm);color:var(--color-text-subtle);font-size:var(--text-micro);font-weight:var(--weight-semibold);transition:border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.fill-level:hover:not(:disabled){border-color:var(--color-accent-line)}.fill-level[data-active=true]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.fill-gauge{position:relative;display:inline-block;width:var(--fill-gauge-width);height:var(--fill-gauge-height);overflow:hidden;border:1px solid currentColor;border-radius:var(--radius-xs)}.fill-gauge span{position:absolute;right:0;bottom:0;left:0;background:currentColor}.fill-level[data-level="100"] .fill-gauge span{top:0}.fill-level[data-level="50"] .fill-gauge span{top:50%}.fill-level[data-level="15"] .fill-gauge span{top:85%}.stock-row .fill-label{display:none}@media(min-width:768px){.stock-row .fill-label{display:inline}}.stock-table-wrap{overflow-x:auto}.stock-table{width:100%;border-collapse:collapse;font-size:var(--text-body)}.stock-table th{position:sticky;top:0;z-index:var(--z-sticky);padding:var(--stock-cell-pad);border-bottom:1px solid var(--color-line-strong);background:var(--stock-head-bg);text-align:left}.stock-sort{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-subtle);font-size:var(--text-caption);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.stock-sort svg{opacity:0;transition:opacity var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.stock-sort:hover,.stock-sort[data-active=true]{color:var(--color-text)}.stock-sort:hover svg,.stock-sort[data-active=true] svg{opacity:1}.stock-sort[data-active=true][data-dir=desc] svg{transform:rotate(180deg)}.stock-tr{cursor:pointer;transition:background var(--duration-fast) var(--ease)}.stock-tr:hover{background:var(--color-hover)}.stock-tr[data-alert=true]{background:var(--stock-row-alert)}.stock-tr td{padding:var(--stock-cell-pad);border-bottom:1px solid var(--color-line);vertical-align:middle}.stock-tr:last-child td{border-bottom:none}.stock-tr .stock-controls{justify-content:flex-start}.stock-cell-name{flex-wrap:nowrap}.stock-name-btn{display:flex;flex-direction:column;min-width:0;text-align:left}.stock-name-btn:hover .list-title{color:var(--color-accent)}.product-hero{display:flex;align-items:flex-start;gap:var(--space-4)}.product-sections{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5)}@media(min-width:768px){.product-sections{grid-template-columns:repeat(2,minmax(0,1fr))}}.lot-row{flex-wrap:wrap}.adjust-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--field-min),1fr));gap:var(--space-3);align-items:end}.movement-delta{min-width:4ch;font-weight:var(--weight-semibold)}.movement-delta[data-sign=plus]{color:var(--color-accent)}.movement-delta[data-sign=minus]{color:var(--color-text-subtle)}.shopping,.restock{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}@media(min-width:1024px){.shopping,.restock{grid-template-columns:minmax(0,1fr) var(--summary-width);gap:var(--space-6)}.shopping-summary,.restock-summary{position:sticky;top:var(--space-6)}}.shopping-add{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,1fr) auto;gap:var(--space-2);align-items:end}.shopping-items{padding-block:var(--space-1)}.shopping-item{padding-inline:var(--space-1)}.shopping-total{font-size:var(--shopping-total-size);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.restock-main{grid-row:span 2}.restock-tools{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}@media(min-width:768px){.restock-tools{grid-template-columns:auto minmax(0,1fr);align-items:start}.restock-tools>.btn{margin-top:calc(var(--text-caption) * var(--leading) + var(--space-2))}}.product-search{position:relative}.product-search-results{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2);padding:var(--space-1);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--glass-bg-solid);box-shadow:var(--shadow-lift)}.restock-lines{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}@media(min-width:1440px){.restock-lines{grid-template-columns:repeat(2,minmax(0,1fr))}}.restock-line{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);animation:rise-in var(--duration) var(--ease) both}.restock-line[data-new=true]{border-color:var(--color-info-soft)}.restock-line-head{display:flex;align-items:flex-start;gap:var(--space-2)}.restock-line-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--field-min),1fr));gap:var(--space-2) var(--space-3);align-items:end}.restock-line-product{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-line)}.restock-summary{order:2}.restock-dock{position:sticky;bottom:var(--restock-dock-offset);z-index:var(--z-sticky);display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-xl);background:var(--glass-bg-strong);box-shadow:var(--shadow-glass)}.restock-dock .btn{min-height:var(--nav-height)}@media(min-width:768px){.restock-dock{bottom:var(--space-4)}.restock-dock .btn{min-height:var(--control-height)}}@media(min-width:1024px){.restock-summary{order:0}.restock-dock{position:static;grid-column:2;grid-template-columns:minmax(0,1fr);padding:var(--space-3);border-radius:var(--radius-lg)}}.health-missing{padding:var(--space-3) var(--space-4);border:1px solid var(--color-warn-line);border-radius:var(--radius-md);background:var(--color-warn-soft);color:var(--color-warn)}.health-name{font-size:var(--text-title);font-weight:var(--weight-bold)}.health-notes{padding-top:var(--space-3);border-top:1px solid var(--color-line)}.health-slots{display:flex;flex-direction:column;gap:var(--space-2);border:none}.health-sources summary{cursor:pointer}.health-sources ul{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-2);padding-left:var(--space-4);list-style:disc}.weight-summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-3)}.weight-value{font-size:var(--text-heading);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.weight-chart{display:flex;flex-direction:column;gap:var(--space-1)}.weight-chart-frame{position:relative;height:var(--weight-chart-height);padding:var(--space-4) 0;border-top:1px dashed var(--color-line);border-bottom:1px dashed var(--color-line)}.weight-chart-svg{display:block;width:100%;height:100%;overflow:visible}.weight-chart-line{fill:none;stroke:var(--color-accent);stroke-width:var(--weight-line);stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.weight-chart-dot{fill:var(--glass-bg-solid);stroke:var(--color-accent);stroke-width:var(--weight-line);vector-effect:non-scaling-stroke}.weight-chart-axis{position:absolute;right:0;color:var(--color-text-subtle);font-size:var(--text-micro);font-variant-numeric:tabular-nums}.weight-chart-axis[data-edge=max]{top:var(--space-1)}.weight-chart-axis[data-edge=min]{bottom:var(--space-1)}.weight-chart-dates{display:flex;justify-content:space-between}.weight-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--field-min),1fr));align-items:end;gap:var(--space-3)}.intake-chart{position:relative;display:flex;align-items:stretch;gap:var(--space-1);height:var(--intake-chart-height)}.intake-target{position:absolute;right:0;left:0;border-top:1px dashed var(--color-accent-line);pointer-events:none}.intake-day{display:flex;flex:1;flex-direction:column;align-items:center;gap:var(--space-1);min-width:0;padding-top:var(--space-1);border-radius:var(--radius-sm);transition:background var(--duration-fast) var(--ease)}.intake-day:hover{background:var(--color-hover)}.intake-day[data-active=true]{background:var(--color-press)}.intake-bars{position:relative;flex:1;width:var(--intake-bar-width)}.intake-planned,.intake-eaten{position:absolute;bottom:0;left:0;width:100%;border-radius:var(--radius-xs) var(--radius-xs) 0 0}.intake-planned{background:var(--bar-planned)}.intake-eaten{background:var(--macro-kcal)}.intake-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pref-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--tile-min-sm),100%),1fr));gap:var(--space-4)}.pref-group-title{color:var(--color-text-subtle);font-size:var(--text-caption);font-weight:var(--weight-semibold)}.pref-group[data-kind=allergy] .pref-group-title{color:var(--color-danger)}.pref-group[data-kind=like] .pref-group-title{color:var(--color-accent)}.pref-form{display:grid;grid-template-columns:minmax(0,1fr);align-items:end;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-line)}@media(min-width:768px){.pref-form{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1.5fr) auto}}.chat-page{display:flex;flex-direction:column;height:100svh}.chat-page .page-header{margin-bottom:var(--space-3)}.chat-thread{display:flex;flex:1;flex-direction:column;min-height:0}.chat-scroll{display:flex;flex:1;flex-direction:column;gap:var(--space-3);min-height:0;padding:var(--space-2) 0 var(--space-4);overflow-y:auto;overscroll-behavior:contain}.chat-older{display:flex;justify-content:center}.chat-empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);text-align:center}.chat-suggestions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.chat-messages{display:flex;flex-direction:column;gap:var(--space-3)}.chat-message{display:flex;align-items:flex-end;gap:var(--space-2);animation:rise-in var(--duration) var(--ease) both}.chat-message[data-role=user]{justify-content:flex-end}.chat-message-body{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-width:0}.chat-message[data-role=user] .chat-message-body{align-items:flex-end}.chat-avatar{flex:0 0 auto;width:var(--chat-avatar);height:var(--chat-avatar);margin-bottom:var(--chat-avatar-offset);border-radius:var(--radius-full);object-fit:cover}.chat-bubble{display:flex;flex-direction:column;gap:var(--space-2);max-width:var(--chat-bubble-max);padding:var(--space-3) var(--space-4);border:1px solid var(--glass-border);border-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-xs);background:var(--glass-bg-strong)}.chat-message[data-role=user] .chat-bubble{border-color:var(--color-accent-line);border-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-xs);background:var(--color-accent-soft)}.chat-message[data-pending=true] .chat-bubble{opacity:.7}.chat-bubble .photo{width:100%;max-width:var(--chat-photo-max);height:auto}.chat-text{white-space:pre-wrap;overflow-wrap:anywhere}.chat-time{padding:0 var(--space-2)}.chat-thinking{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.chat-thinking .chat-avatar{margin-bottom:0}.chat-footer{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--space-2)}.chat-composer{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-xl)}.chat-composer-row{display:flex;align-items:flex-end;gap:var(--space-2)}.chat-attachment{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2)}.chat-attachment .caption{flex:1}.chat-input{flex:1;min-height:var(--tap);max-height:var(--chat-input-max);padding:calc((var(--tap) - var(--text-label) * var(--leading)) / 2) var(--space-3);border:none;background:transparent;color:var(--color-text);font-size:var(--text-label);line-height:var(--leading);resize:none}.chat-input:focus{outline:none}.chat-input::placeholder{color:var(--color-text-subtle)}.chat-panel{position:sticky;top:0;z-index:var(--z-panel);display:flex;flex-direction:column;gap:var(--space-3);height:100svh;padding:var(--space-4);border-width:0 0 0 1px;border-radius:0;animation:fade-in var(--duration) var(--ease) both}.chat-panel-header{display:flex;align-items:center;gap:var(--space-2)}.chat-panel-title{font-size:var(--text-title)}.chat-panel .chat-bubble{max-width:var(--chat-bubble-max-panel)}@media(min-width:768px){.chat-page{padding-bottom:var(--space-6)}}
