:root{--color-bg: #ece5d9;--color-surface: #fffcf7;--color-surface-sunken: #f5f1e9;--color-border: #e6ddcf;--color-border-strong: #d5c8b6;--color-text: #2a2620;--color-muted: #6d6155;--color-primary: #3f6b4a;--color-primary-hover: #345a3e;--color-primary-ink: #ffffff;--color-primary-wash: #eef2ec;--level-out: #b04a32;--level-out-ink: #ffffff;--level-low: #c98a3c;--level-low-ink: #2a2620;--level-stocked: #3f6b4a;--level-stocked-ink: #ffffff;--color-danger: #a93b2b;--color-danger-wash: #fbf0ed;--color-warning: #8a5a1f;--status-connected: #3f6b4a;--status-unreachable: #a93b2b;--status-checking: #8a5a1f;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgb(60 45 30 / 5%), 0 12px 28px -16px rgb(60 45 30 / 20%);--shadow-raised: 0 1px 2px rgb(60 45 30 / 7%), 0 5px 12px -7px rgb(60 45 30 / 18%);--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-heading: "New York", "Iowan Old Style", Charter, Georgia, "Times New Roman", serif;--text-xs: .75rem;--text-sm: .85rem;--text-base: 1rem;--text-lg: 1.15rem;--text-xl: 1.4rem;--text-2xl: 1.75rem;--text-3xl: 2.5rem;--leading-tight: 1.2;--leading-normal: 1.55;--touch-target: 44px}.card{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:var(--space-3)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.card h2{margin:0;font-family:var(--font-heading);font-size:var(--text-xl);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.01em;text-wrap:balance}.btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font:inherit;font-weight:600;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.btn--md{padding:var(--space-3) var(--space-4);font-size:var(--text-base);min-height:var(--touch-target)}.btn--sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.btn--primary{background:var(--color-primary);color:var(--color-primary-ink)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn--secondary:hover:not(:disabled){background:var(--color-bg)}.btn--ghost{background:transparent;color:var(--color-primary);border-color:var(--color-primary);border-radius:var(--radius-pill)}.btn--ghost:hover:not(:disabled){background:var(--color-primary-wash)}.btn--icon{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong);padding:var(--space-3)}.btn--link{background:none;border:none;padding:0;min-height:0;color:var(--color-primary);font-size:var(--text-sm);font-weight:600;text-decoration:underline}.btn[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-ink)}.btn[aria-pressed=true]:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-ink)}.btn:disabled{opacity:.5;cursor:not-allowed}.input{flex:1 1 100%;min-width:0;padding:var(--space-3);font:inherit;font-size:var(--text-base);color:var(--color-text);background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:var(--touch-target)}.input::placeholder{color:var(--color-muted)}.input:focus-visible,.btn:focus-visible,.segment:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.field{display:flex;flex-direction:column;gap:var(--space-1)}.field-label{font-size:var(--text-sm);font-weight:600;color:var(--color-muted)}.badge{flex:0 0 auto;padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:700;border-radius:var(--radius-pill);white-space:nowrap}.badge--out{background:var(--level-out);color:var(--level-out-ink)}.badge--low{background:var(--level-low);color:var(--level-low-ink)}.badge--stocked{background:var(--level-stocked);color:var(--level-stocked-ink)}.badge--neutral{background:var(--color-primary-wash);color:var(--color-primary)}.segmented{display:flex;gap:var(--space-1)}.segment{flex:1 1 0;min-width:0;padding:var(--space-2) var(--space-1);font:inherit;font-size:var(--text-xs);font-weight:600;text-align:center;color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);cursor:pointer;min-height:36px}.segment.is-active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-ink)}.segment--out.is-active{background:var(--level-out);border-color:var(--level-out);color:var(--level-out-ink)}.segment--low.is-active{background:var(--level-low);border-color:var(--level-low);color:var(--level-low-ink)}.segment--stocked.is-active{background:var(--level-stocked);border-color:var(--level-stocked);color:var(--level-stocked-ink)}.notice{display:flex;align-items:center;gap:var(--space-2);margin:0;padding:var(--space-3);font-size:var(--text-sm);line-height:var(--leading-normal);border-radius:var(--radius-md)}.notice--loading,.notice--empty{color:var(--color-muted);background:var(--color-surface-sunken);border:1px dashed var(--color-border-strong)}.notice--error{color:var(--color-danger);background:var(--color-danger-wash);border:1px solid var(--color-danger);font-weight:600}.notice-spinner{flex:0 0 auto;width:14px;height:14px;border:2px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:50%;animation:notice-spin .7s linear infinite}@keyframes notice-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.notice-spinner{animation:none}}.skeleton-group{display:flex;flex-direction:column;gap:var(--space-2)}.skeleton{position:relative;display:block;height:var(--touch-target);overflow:hidden;background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-surface) 70%,transparent),transparent);animation:skeleton-shimmer 1.4s ease-in-out infinite}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.skeleton-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){.skeleton:after{animation:none}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}.app{max-width:40rem;margin:0 auto;padding:var(--space-5) var(--space-4);padding-top:calc(var(--space-5) + env(safe-area-inset-top));padding-bottom:calc(var(--touch-target) + var(--space-6) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--space-5)}.app-header{display:flex;flex-direction:column;gap:var(--space-2)}.app-header h1{margin:0;font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.015em;color:var(--color-primary)}.status{margin:0;font-size:var(--text-sm);font-weight:600}.status--unreachable{color:var(--status-unreachable)}.status--checking{color:var(--status-checking)}.session-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-muted)}.session-invite{display:flex;align-items:center;gap:var(--space-2)}.session-invite summary{cursor:pointer;color:var(--color-primary);font-weight:600}.session-invite code{padding:0 var(--space-1);font-size:var(--text-xs);background:var(--color-primary-wash);border-radius:var(--radius-sm)}.session-invite-copied{font-size:var(--text-xs);font-weight:600;color:var(--color-primary)}.tab-bar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;align-items:stretch;gap:var(--space-1);max-width:40rem;margin:0 auto;padding:var(--space-2) var(--space-3);padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:var(--shadow-raised)}.tab{flex:1 1 0;min-width:0;min-height:var(--touch-target);display:flex;align-items:center;justify-content:center;font:inherit;font-size:var(--text-sm);font-weight:600;color:var(--color-muted);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.tab:hover:not([aria-current]){color:var(--color-text)}.tab[aria-current=page]{color:var(--color-primary);background:var(--color-primary-wash)}.tab--action{flex:0 0 auto;min-width:var(--touch-target);font-size:var(--text-xl);color:var(--color-primary-ink);background:var(--color-primary);border-radius:var(--radius-pill)}.tab--action:hover{background:var(--color-primary-hover);color:var(--color-primary-ink)}.tab--action[aria-current=page]{color:var(--color-primary-ink);background:var(--color-primary-hover)}.tab:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.panel-intro{margin:0;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-muted)}.nl-examples{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.nl-examples-label{font-size:var(--text-sm);color:var(--color-muted)}.panel-form{display:flex;flex-wrap:wrap;gap:var(--space-2)}.item-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.item-name{font-weight:600}.pantry-attention{margin:0 0 var(--space-3);font-size:var(--text-sm);font-weight:600;color:var(--color-warning)}.pantry-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.pantry-toolbar .input[type=search]{flex:1 1 12rem}.pantry-filters{display:flex;flex-wrap:wrap;gap:var(--space-2)}.pantry-group+.pantry-group{margin-top:var(--space-4)}.pantry-group-title{margin:0 0 var(--space-2);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;color:var(--color-muted)}.pantry-group-heading,.pantry-group-rename{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.pantry-group-heading .pantry-group-title,.pantry-group-rename .pantry-group-title{margin:0}.pantry-item{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md)}.pantry-item-info{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.item-expiry{margin-left:auto;font-size:var(--text-xs);color:var(--color-muted)}.item-category{font-size:var(--text-xs);color:var(--color-muted);padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-pill)}.pantry-item--expiring-soon{border-color:var(--level-low);background:color-mix(in srgb,var(--level-low) 8%,var(--color-surface-sunken))}.pantry-item--expiring-soon .item-expiry{color:var(--color-warning);font-weight:600}.pantry-item--expired{border-color:var(--level-out);background:color-mix(in srgb,var(--level-out) 8%,var(--color-surface-sunken))}.pantry-item--expired .item-expiry{color:var(--color-danger);font-weight:700}.pantry-item-confirm{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.pantry-item-confirm-label{font-size:var(--text-sm);color:var(--color-muted)}.pantry-item>.btn--icon{margin-left:auto}.shopping-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md)}.meal-card{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md)}.meal-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.meal-description,.meal-meta{margin:0;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-muted)}.meal-meta-label{font-weight:600;color:var(--color-text)}.meal-meta--missing .meal-meta-label{color:var(--color-danger)}.nl-preview{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--color-primary-wash);border:1px solid var(--color-border);border-radius:var(--radius-md)}.nl-preview-title{margin:0;font-weight:600}.nl-preview-hint{margin:calc(-1 * var(--space-2)) 0 0;font-size:var(--text-sm);color:var(--color-muted)}.nl-preview-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.nl-preview-item{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);border-radius:var(--radius-sm)}.nl-preview-item>.input[type=text]:first-child{flex:1 1 100%}.nl-preview-item .segmented{flex:1 1 auto}.nl-preview-item>.input[type=text]:not(:first-child){flex:1 1 8rem}.nl-preview-item>.input[type=date]{flex:0 1 auto}.nl-preview-item>.btn--icon{margin-left:auto}.nl-preview-actions{display:flex;gap:var(--space-2)}.nl-listening{margin:0;font-size:var(--text-sm);font-weight:600;color:var(--color-primary)}.add-type-reveal>summary{cursor:pointer;padding:var(--space-2) 0;font-size:var(--text-sm);font-weight:600;color:var(--color-primary)}.add-item-form{margin-top:var(--space-3)}.pantry-item,.shopping-item,.meal-card{transition:background-color .2s ease,border-color .2s ease}@keyframes fade-in-rise{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.session-invite-copied,.add-item-form .notice--empty{animation:fade-in-rise .2s ease}@media (prefers-reduced-motion: reduce){.pantry-item,.shopping-item,.meal-card{transition:none}.session-invite-copied,.add-item-form .notice--empty{animation:none}}.auth{box-sizing:border-box;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-6);padding:var(--space-6) var(--space-4);padding-top:calc(var(--space-7) + env(safe-area-inset-top));padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom));text-align:center;background:radial-gradient(125% 80% at 50% 0%,var(--color-primary-wash),transparent 62%),var(--color-bg)}.auth-lang{position:absolute;top:calc(var(--space-4) + env(safe-area-inset-top));right:var(--space-4)}.auth-hero{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);max-width:26rem}.auth-mark{color:var(--color-primary);opacity:.9;margin-bottom:var(--space-1)}.auth-wordmark{margin:0;font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:600;line-height:var(--leading-tight);color:var(--color-primary)}.auth-promise{margin:var(--space-2) 0 0;font-family:var(--font-heading);font-size:var(--text-xl);line-height:var(--leading-tight);color:var(--color-text);text-wrap:balance}.auth-tagline{margin:0;font-size:var(--text-base);color:var(--color-muted);text-wrap:balance}.auth-action{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:22rem}.auth-card{width:100%;max-width:28rem;margin:0 auto}.auth-form{display:flex;flex-direction:column;gap:var(--space-3)}.auth-household{margin:0;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:var(--space-3)}.auth-household legend{padding:0 var(--space-1);font-size:var(--text-sm);font-weight:600;color:var(--color-muted)}.auth-google{display:flex;justify-content:center}.auth-stub{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.auth-stub-button{width:100%;border-style:dashed}.auth-stub-hint{margin:0;font-size:var(--text-xs);color:var(--color-muted);text-align:center}.auth-switch{display:flex;justify-content:center;margin:0}.language-toggle{display:flex;gap:var(--space-1)}@media (min-width: 600px){.app{padding:var(--space-6) var(--space-5)}.app-header h1{font-size:2.1rem}.panel-form .input{flex:1 1 auto}.pantry-item{flex-direction:row;align-items:center;justify-content:space-between}.pantry-item .segmented{flex:0 0 auto;min-width:15rem}}
