:root{--c-bg: #f5f4ef;--c-bg-card: #ffffff;--c-bg-elevated: #ffffff;--c-dark: #0f172a;--c-dark-soft: #1e293b;--c-text: #0f172a;--c-text-muted: #5b6472;--c-text-subtle: #8a94a6;--c-border: #e2dfd7;--c-primary: #d97706;--c-primary-hover: #b45309;--c-primary-light: #fef3c7;--c-accent: #0f766e;--c-danger: #dc2626;--c-danger-light: #fee2e2;--c-warning: #d97706;--c-warning-light: #fef3c7;--c-success: #15803d;--c-success-light: #dcfce7;--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--r-full: 9999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 30px rgba(15, 23, 42, .16);--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--tabbar-height: 56px;--header-height: 56px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-family:var(--font-sans);background:var(--c-dark);color:var(--c-text)}body{margin:0;padding:0;background:var(--c-bg);min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;max-width:520px;margin:0 auto;background:var(--c-bg);position:relative;padding-bottom:calc(var(--tabbar-height) + var(--safe-bottom) + 12px)}.app-body{flex:1;display:flex;flex-direction:column}.page{flex:1;display:flex;flex-direction:column;width:100%}.content{flex:1;padding:16px;padding-left:calc(16px + var(--safe-left));padding-right:calc(16px + var(--safe-right));display:flex;flex-direction:column;gap:16px}.app-header{position:sticky;top:0;z-index:30;background:var(--c-dark);color:#fff;padding-top:var(--safe-top);box-shadow:var(--shadow-sm)}.header-inner{display:flex;align-items:center;gap:12px;min-height:var(--header-height);padding:8px 16px;padding-left:calc(16px + var(--safe-left));padding-right:calc(16px + var(--safe-right))}.header-logo-mark{display:flex;align-items:center}.header-titles{flex:1;min-width:0}.header-title{font-size:1.2rem;font-weight:700;letter-spacing:-.01em;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-subtitle{font-size:.78rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;align-items:center;gap:8px}.tab-bar{position:fixed;bottom:0;left:0;right:0;max-width:520px;margin:0 auto;z-index:40;display:grid;grid-template-columns:repeat(6,1fr);background:#fff;border-top:1px solid var(--c-border);padding-bottom:var(--safe-bottom);box-shadow:0 -4px 16px #0f172a0f}.tab-bar--seven{grid-template-columns:repeat(7,1fr)}.tab-bar--seven .tab-item{padding:6px 2px 5px;font-size:.62rem}.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 4px 6px;min-height:52px;background:transparent;border:none;color:var(--c-text-muted);font-family:inherit;font-size:.68rem;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .15s ease}.tab-item--active{color:var(--c-primary);font-weight:700}.tab-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center}.tab-badge{position:absolute;top:-4px;right:-10px;background:var(--c-danger);color:#fff;font-size:.62rem;font-weight:700;line-height:1;padding:2px 5px;border-radius:var(--r-full)}.tab-label{line-height:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;font-family:inherit;font-size:.95rem;font-weight:600;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:background .15s ease,transform .05s ease,opacity .15s ease;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--c-primary);color:#fff}.btn-primary:hover{background:var(--c-primary-hover)}.btn-secondary{background:#fff;color:var(--c-text);border-color:var(--c-border)}.btn-secondary:hover{background:#f1ede4}.btn-danger{background:var(--c-danger);color:#fff}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 12px;font-size:.82rem}.icon-btn,.icon-btn-accent,.icon-btn-danger{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-full);border:none;background:transparent;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.icon-btn-accent{background:var(--c-primary);color:#fff}.icon-btn-danger{color:var(--c-danger)}.icon-btn-danger:hover{background:var(--c-danger-light)}.action-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 11px;min-height:44px;font-family:inherit;font-size:.8rem;font-weight:600;border-radius:var(--r-sm);border:1px solid var(--c-border);background:#fff;color:var(--c-text);cursor:pointer}.action-btn--danger{color:var(--c-danger);border-color:#fecaca}.link-btn{background:none;border:none;color:var(--c-primary);font-family:inherit;font-size:.85rem;font-weight:600;cursor:pointer;padding:4px 0}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.82rem;font-weight:600;color:var(--c-text)}.field-hint{font-size:.75rem;color:var(--c-text-muted)}.input,.select,.textarea{font-family:inherit;font-size:1rem;color:var(--c-text);background:#fff;border:1.5px solid var(--c-border);border-radius:var(--r-md);padding:12px 14px;min-height:46px;transition:border-color .15s ease;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-primary)}.textarea{resize:vertical;min-height:72px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.input-with-icon{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:13px;color:var(--c-text-subtle);pointer-events:none}.input--icon{padding-left:42px}.form-error{background:var(--c-danger-light);color:var(--c-danger);padding:10px 12px;border-radius:var(--r-sm);font-size:.85rem;font-weight:500}.search-bar{position:relative;display:flex;align-items:center}.search-bar-icon{position:absolute;left:13px;color:var(--c-text-subtle);pointer-events:none}.search-bar-input{width:100%;font-family:inherit;font-size:.95rem;padding:11px 40px;background:#fff;border:1.5px solid var(--c-border);border-radius:var(--r-full);min-height:44px}.search-bar-input:focus{outline:none;border-color:var(--c-primary)}.search-bar-clear{position:absolute;right:12px;background:none;border:none;color:var(--c-text-subtle);cursor:pointer;display:flex;padding:0}.filter-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.filter-chips::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;font-family:inherit;font-size:.8rem;font-weight:600;padding:7px 13px;border-radius:var(--r-full);border:1.5px solid var(--c-border);background:#fff;color:var(--c-text-muted);cursor:pointer;min-height:44px;display:inline-flex;align-items:center;transition:all .15s ease}.filter-chip--active{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.filters-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.field-compact select{font-size:.85rem;padding:10px 12px;min-height:44px}.sort-select-wrap select{font-size:.82rem;padding:9px 12px;min-height:44px;color:var(--c-text-muted)}.toolbar-row{display:flex;flex-direction:column;gap:8px}.section{display:flex;flex-direction:column;gap:12px}.section-title{font-size:1rem;font-weight:700;letter-spacing:-.01em}.section-header-row{display:flex;align-items:center;justify-content:space-between}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{display:flex;flex-direction:column;gap:4px;padding:14px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);text-align:left;font-family:inherit;color:inherit;cursor:default}.stat-card--clickable{cursor:pointer;transition:transform .1s ease,box-shadow .15s ease}.stat-card--clickable:active{transform:scale(.98)}.stat-card-top{display:flex;align-items:center;justify-content:space-between;font-size:.78rem;font-weight:600;color:var(--c-text-muted)}.stat-card-value{font-size:1.7rem;font-weight:800;line-height:1.1;letter-spacing:-.02em}.stat-card-hint{font-size:.74rem;color:var(--c-text-subtle)}.stat-card--danger .stat-card-value{color:var(--c-danger)}.stat-card--warning .stat-card-value{color:var(--c-warning)}.stat-card--success .stat-card-value{color:var(--c-success)}.readiness-banner{display:flex;gap:14px;align-items:flex-start;padding:16px;background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.readiness-banner-icon{width:44px;height:44px;border-radius:var(--r-md);background:#fbbf242e;color:#fbbf24;display:flex;align-items:center;justify-content:center;flex-shrink:0}.readiness-score-label{font-size:.78rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.readiness-score{font-size:2.1rem;font-weight:900;color:#fbbf24;line-height:1.1;letter-spacing:-.02em}.readiness-desc{font-size:.85rem;color:#cbd5e1;margin-top:4px}.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.quick-action-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 6px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);font-family:inherit;font-size:.72rem;font-weight:600;color:var(--c-text);cursor:pointer;min-height:44px;box-shadow:var(--shadow-sm)}.quick-action-btn:active{transform:scale(.97)}.card-list{display:flex;flex-direction:column;gap:10px}.list{display:flex;flex-direction:column;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;background:transparent;border:none;border-bottom:1px solid #f0ece3;width:100%;text-align:left;font-family:inherit;color:inherit}.list-row:last-child{border-bottom:none}.list-row--pressable{cursor:pointer;min-height:54px}.list-row--pressable:active{background:#f7f3ea}.list-row-main{flex:1;min-width:0}.list-row-title{font-size:.95rem;font-weight:600;line-height:1.3}.list-row-meta{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--c-text-muted);margin-top:3px;flex-wrap:wrap}.chevron{color:var(--c-text-subtle);flex-shrink:0}.box-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.box-card-main{display:flex;align-items:flex-start;gap:12px;padding:14px;width:100%;background:none;border:none;text-align:left;font-family:inherit;color:inherit;cursor:pointer;min-height:44px}.box-card-main:active{background:#f7f3ea}.box-card-icon{width:42px;height:42px;border-radius:var(--r-md);background:var(--c-primary-light);color:var(--c-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.box-card-text{flex:1;min-width:0}.box-card-title{font-size:1rem;font-weight:700}.box-card-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--c-text-muted);margin-top:4px;flex-wrap:wrap}.box-card-notes{font-size:.8rem;color:var(--c-text-muted);margin-top:6px;line-height:1.35}.box-card-actions{display:flex;justify-content:flex-end;gap:8px;padding:8px 14px;border-top:1px solid #f0ece3;background:#faf7f2}.location-chip{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;font-weight:600;color:var(--c-text);background:#eef1f5;padding:3px 8px;border-radius:var(--r-full)}.item-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.item-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.item-card-title{font-size:1rem;font-weight:700;line-height:1.3}.item-box-link{display:inline-flex;align-items:center;gap:5px;background:none;border:none;font-family:inherit;font-size:.76rem;color:var(--c-text-muted);cursor:pointer;padding:2px 0;margin-top:2px}.item-category-chip{font-size:.72rem;font-weight:600;color:#334155;background:#e9ecf1;padding:3px 8px;border-radius:var(--r-full);flex-shrink:0}.item-card-stats{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.item-qty{font-size:.95rem}.item-card-notes{font-size:.8rem;color:var(--c-text-muted);line-height:1.35}.item-card-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:6px;border-top:1px solid #f0ece3}.expiry-badge{display:inline-flex;align-items:center;gap:5px;font-size:.74rem;font-weight:700;padding:4px 9px;border-radius:var(--r-full);white-space:nowrap}.expiry-badge--sm{font-size:.7rem;padding:3px 7px}.expiry-badge-detail{font-weight:500;opacity:.85}.badge-expired{background:var(--c-danger-light);color:var(--c-danger)}.badge-soon{background:var(--c-warning-light);color:var(--c-warning)}.badge-good{background:var(--c-success-light);color:var(--c-success)}.badge-none{background:#e9ecf1;color:var(--c-text-subtle)}.expiration-section-header{display:flex;gap:12px;align-items:flex-start}.expiration-section-icon{width:36px;height:36px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon--danger{background:var(--c-danger-light);color:var(--c-danger)}.icon--warning{background:var(--c-warning-light);color:var(--c-warning)}.icon--success{background:var(--c-success-light);color:var(--c-success)}.icon--muted{background:#e9ecf1;color:var(--c-text-subtle)}.expiration-section-titles{flex:1}.expiration-section-title{font-size:1rem;font-weight:700}.counter-chip{font-weight:500;color:var(--c-text-muted)}.expiration-guidance{font-size:.8rem;color:var(--c-text-muted);margin-top:3px;line-height:1.35}.expiry-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);flex-wrap:wrap}.expiry-row-main{flex:1;min-width:180px}.expiry-row-title{font-size:.95rem;font-weight:700}.expiry-row-meta{display:flex;align-items:center;gap:10px;font-size:.78rem;color:var(--c-text-muted);margin-top:3px;flex-wrap:wrap}.expiry-row-date{font-size:.8rem;color:var(--c-text-subtle);margin-top:3px;display:flex;align-items:center;gap:8px}.expiry-days-chip{font-weight:700;color:var(--c-text)}.expiry-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.meals-summary-banner{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;background:var(--c-dark);color:#fff;border-radius:var(--r-lg);padding:16px 12px;box-shadow:var(--shadow-md)}.meals-summary-item{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center}.meals-summary-value{font-size:1.6rem;font-weight:800;color:#fbbf24;line-height:1}.meals-summary-label{font-size:.7rem;color:#94a3b8;font-weight:600}.meals-summary-divider{width:1px;height:32px;background:#334155}.meal-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.meal-card-main{display:flex;align-items:flex-start;gap:12px;padding:14px;width:100%;background:none;border:none;text-align:left;font-family:inherit;color:inherit;cursor:pointer}.meal-card-main:active{background:#f7f3ea}.meal-card-icon{width:42px;height:42px;border-radius:var(--r-md);background:#fce7f3;color:#be185d;display:flex;align-items:center;justify-content:center;flex-shrink:0}.meal-card-text{flex:1;min-width:0}.meal-card-title{font-size:1rem;font-weight:700}.meal-card-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--c-text-muted);margin-top:4px}.coverage-chip{display:inline-flex;align-items:center;gap:5px;font-weight:600}.meal-card-notes{font-size:.8rem;color:var(--c-text-muted);margin-top:6px;line-height:1.35}.meal-card-actions{display:flex;justify-content:flex-end;gap:8px;padding:8px 14px;border-top:1px solid #f0ece3;background:#faf7f2}.coverage-inputs-title{font-size:.82rem;font-weight:700;color:var(--c-text);margin-top:6px}.hint-text{font-size:.82rem;color:var(--c-text-muted);line-height:1.4}.coverage-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.coverage-banner-main{display:flex;align-items:center;gap:12px}.coverage-banner-icon{width:40px;height:40px;border-radius:var(--r-md);background:var(--c-primary-light);color:var(--c-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.coverage-banner-title{font-size:.72rem;color:var(--c-text-subtle);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.coverage-banner-counts{font-size:1.15rem;font-weight:800}.meal-notes-box{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);padding:12px 14px;font-size:.85rem;color:var(--c-text-muted);line-height:1.4}.meal-readiness-card{display:flex;align-items:center;gap:14px;padding:16px;background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;border-radius:var(--r-lg);box-shadow:var(--shadow-md);flex-wrap:wrap}.meal-readiness-icon{width:44px;height:44px;border-radius:var(--r-md);background:#fbbf242e;color:#fbbf24;display:flex;align-items:center;justify-content:center;flex-shrink:0}.meal-readiness-body{flex:1;min-width:180px}.meal-readiness-label{font-size:.75rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.meal-readiness-value{font-size:2.1rem;font-weight:900;color:#fbbf24;line-height:1.1}.meal-readiness-hint{font-size:.82rem;color:#cbd5e1;margin-top:4px;line-height:1.35}.meal-item-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.meal-item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.meal-item-name{font-size:1rem;font-weight:700}.meal-item-box{display:flex;align-items:center;gap:4px;font-size:.76rem;color:var(--c-text-muted);margin-top:2px}.meal-item-cat{font-size:.72rem;font-weight:600;color:#334155;background:#e9ecf1;padding:3px 8px;border-radius:var(--r-full)}.meal-item-numbers{display:flex;justify-content:space-between;font-size:.86rem;padding:8px 10px;background:#f7f3ea;border-radius:var(--r-sm);flex-wrap:wrap;gap:6px}.metric-label{color:var(--c-text-muted)}.text-danger{color:var(--c-danger)}.text-success{color:var(--c-success)}.shortfall-warning{font-size:.8rem;color:var(--c-danger);font-weight:600}.stock-ok{font-size:.8rem;color:var(--c-success);font-weight:600}.meal-item-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:6px;border-top:1px solid #f0ece3}.box-meta-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.box-meta-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.box-meta-actions{display:flex;gap:8px}.box-meta-notes{font-size:.84rem;color:var(--c-text-muted);line-height:1.4}.settings-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}.settings-row{display:flex;align-items:center;gap:12px}.settings-row-icon{width:38px;height:38px;border-radius:var(--r-md);background:#eef1f5;color:var(--c-dark-soft);display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-amber{background:var(--c-primary-light);color:var(--c-primary)}.settings-row-title{font-size:.74rem;color:var(--c-text-subtle);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.settings-row-value{font-size:1.05rem;font-weight:800}.settings-row-value.muted{font-weight:600;color:var(--c-text-muted)}.pwa-status{display:inline-flex;align-items:center;gap:5px;font-size:.86rem;font-weight:700;color:var(--c-success)}.settings-note{font-size:.83rem;color:var(--c-text-muted);line-height:1.45}.settings-action-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:#f7f3ea;border:1px solid var(--c-border);border-radius:var(--r-md);font-family:inherit;font-size:.86rem;font-weight:600;color:var(--c-text);cursor:pointer;text-align:left}.settings-buttons{display:flex;flex-direction:column;gap:8px}.about-card{display:flex;gap:12px;align-items:flex-start;padding:14px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg)}.about-icon{width:36px;height:36px;border-radius:var(--r-md);background:#eef1f5;color:var(--c-text-muted);display:flex;align-items:center;justify-content:center;flex-shrink:0}.about-title{font-size:.95rem;font-weight:700}.about-text{font-size:.82rem;color:var(--c-text-muted);line-height:1.4;margin-top:3px}.install-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:8px 8px 4px}.install-hero-icon{width:56px;height:56px;border-radius:var(--r-lg);background:var(--c-primary-light);color:var(--c-primary);display:flex;align-items:center;justify-content:center}.install-hero-title{font-size:1.25rem;font-weight:800;letter-spacing:-.01em}.install-hero-desc{font-size:.88rem;color:var(--c-text-muted);line-height:1.45}.install-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.install-step{display:flex;gap:14px;align-items:flex-start;padding:14px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.install-step-num{width:32px;height:32px;border-radius:var(--r-full);background:var(--c-dark);color:#fbbf24;font-weight:800;font-size:.95rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.install-step-title{font-size:.95rem;font-weight:700}.install-step-desc{font-size:.83rem;color:var(--c-text-muted);line-height:1.45;margin-top:3px}.inline-icon{display:inline-block;vertical-align:-2px}.install-benefits-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}.install-benefits-title{font-size:1rem;font-weight:700}.install-benefits{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.install-benefits li{display:flex;align-items:center;gap:10px;font-size:.88rem;color:var(--c-text);font-weight:500}.install-benefits li svg{color:var(--c-success);flex-shrink:0}.notifications-note-card{background:#fffbeb;border:1px solid #fde68a;border-radius:var(--r-lg);padding:14px;display:flex;flex-direction:column;gap:8px}.notifications-note-head{display:flex;align-items:center;gap:8px}.notifications-note-title{font-size:.95rem;font-weight:700;color:#78350f}.notifications-note-text{font-size:.83rem;color:#92400e;line-height:1.45}.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px;padding-top:calc(20px + var(--safe-top));padding-bottom:calc(20px + var(--safe-bottom));background:linear-gradient(180deg,#0f172a,#1e293b)}.login-card{width:100%;max-width:400px;background:#fff;border-radius:24px;padding:28px 24px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:20px}.login-brand{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.login-logo-mark svg{display:block}.login-title{font-size:1.9rem;font-weight:900;letter-spacing:-.02em}.brand-prep{color:var(--c-primary)}.brand-box{color:var(--c-dark)}.login-tagline{font-size:.88rem;color:var(--c-text-muted);line-height:1.4}.login-form{display:flex;flex-direction:column;gap:14px}.login-hint{display:flex;align-items:center;justify-content:center;gap:6px;font-size:.76rem;color:var(--c-text-subtle)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0f172a8c;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .15s ease;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-sheet{background:#fff;border-radius:24px 24px 0 0;width:100%;max-width:520px;max-height:90vh;max-height:90dvh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);padding-bottom:var(--safe-bottom);animation:slideUp .2s ease}.modal-sheet-handle{width:40px;height:4px;border-radius:2px;background:#cbd5e1;margin:10px auto 0}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 18px 8px}.modal-title{font-size:1.1rem;font-weight:800;letter-spacing:-.01em}.modal-body{padding:8px 18px 18px;overflow-y:auto}.modal-form{display:flex;flex-direction:column;gap:14px}.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.confirm-message{font-size:.95rem;color:var(--c-text);line-height:1.45;margin-bottom:16px}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(12px);opacity:.6}to{transform:translateY(0);opacity:1}}.install-banner{position:sticky;top:0;z-index:25;display:flex;align-items:center;gap:10px;background:#1e293b;color:#fff;padding:8px 14px;font-size:.8rem;box-shadow:var(--shadow-sm)}.install-banner-icon{color:#fbbf24;flex-shrink:0}.install-banner-text{flex:1;background:none;border:none;color:#fbbf24;font-family:inherit;font-size:.8rem;font-weight:600;text-align:left;cursor:pointer;padding:0;text-decoration:underline}.install-banner-close{background:none;border:none;color:#94a3b8;cursor:pointer;display:flex;padding:2px}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:40px 16px;background:var(--c-bg-card);border:1px dashed var(--c-border);border-radius:var(--r-lg)}.empty-state-icon{color:var(--c-text-subtle)}.empty-state-title{font-size:1.05rem;font-weight:700}.empty-state-desc{font-size:.85rem;color:var(--c-text-muted);line-height:1.45;max-width:340px}.empty-state-action{margin-top:4px}.splash{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--c-dark);color:#fff}.splash-text{font-size:.9rem;color:#94a3b8;font-weight:600}.spinner{width:36px;height:36px;border:3px solid rgba(251,191,36,.25);border-top-color:#fbbf24;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton-grid{display:flex;flex-direction:column;gap:12px}.skeleton.card{height:110px;border-radius:var(--r-lg);background:linear-gradient(90deg,#edeae2 25%,#f6f3eb,#edeae2 75%);background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.water-hero-card{display:flex;flex-direction:column;gap:12px;padding:18px 16px;background:linear-gradient(135deg,#1e293b,#0f172a);color:#fff;border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.water-hero-top{display:flex;align-items:center;justify-content:space-between}.water-hero-label{font-size:.74rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.water-settings-btn{display:inline-flex;align-items:center;gap:5px;background:#ffffff1a;border:none;color:#fff;font-family:inherit;font-size:.76rem;font-weight:600;padding:6px 10px;border-radius:var(--r-full);cursor:pointer}.water-hero-main{display:flex;align-items:center;gap:14px}.water-hero-icon{width:52px;height:52px;border-radius:var(--r-md);background:#38bdf82e;color:#38bdf8;display:flex;align-items:center;justify-content:center;flex-shrink:0}.water-hero-days{font-size:2.6rem;font-weight:900;color:#38bdf8;line-height:1;letter-spacing:-.02em}.water-hero--warning .water-hero-days{color:#fbbf24}.water-hero--danger .water-hero-days{color:#f87171}.water-hero-days-unit{font-size:1.1rem;font-weight:700;color:#94a3b8}.water-hero-sub{font-size:.85rem;color:#cbd5e1;margin-top:4px}.water-hero-demand{font-size:.8rem;color:#94a3b8;line-height:1.4;padding-top:8px;border-top:1px solid rgba(255,255,255,.1)}.water-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.water-quick-btn{font-size:.95rem;min-height:48px}.water-bulk-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:2px}.water-custom-row{display:flex;align-items:center;gap:8px;margin-top:4px}.water-custom-label{font-size:.78rem;font-weight:600;color:var(--c-text-muted);white-space:nowrap}.input--compact{width:90px;min-height:40px;padding:8px 10px;font-size:.9rem;text-align:center}.water-entry-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px}.water-entry-head{display:flex;align-items:flex-start;gap:12px}.water-entry-icon-wrap{width:40px;height:40px;border-radius:var(--r-md);background:#e0f2fe;color:#0284c7;display:flex;align-items:center;justify-content:center;flex-shrink:0}.water-entry-text{flex:1;min-width:0}.water-entry-title{font-size:1rem;font-weight:700}.water-entry-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--c-text-muted);margin-top:4px;flex-wrap:wrap}.water-entry-stats{display:flex;justify-content:space-between;font-size:.86rem;padding:8px 10px;background:#f7f3ea;border-radius:var(--r-sm);flex-wrap:wrap;gap:6px}.water-entry-notes{font-size:.8rem;color:var(--c-text-muted);line-height:1.35}.water-entry-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid #f0ece3;flex-wrap:wrap}.water-entry-adjust{display:flex;gap:6px}.water-entry-edits{display:flex;gap:8px}.dashboard-water-panel{display:flex;flex-direction:column;gap:10px;padding:16px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.dashboard-water-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.dashboard-water-title-wrap{display:flex;align-items:center;gap:12px}.dashboard-water-icon{width:42px;height:42px;border-radius:var(--r-md);background:#e0f2fe;color:#0284c7;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dashboard-water-label{font-size:.74rem;color:var(--c-text-subtle);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.dashboard-water-days{font-size:1.5rem;font-weight:900;color:var(--c-text);line-height:1.1}.dashboard-water-unit{font-size:.85rem;font-weight:600;color:var(--c-text-muted)}.dashboard-water-hint{font-size:.82rem;color:var(--c-text-muted);line-height:1.4}.dashboard-water-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-actions--five{grid-template-columns:repeat(5,1fr)}.water-amount-controls{display:flex;flex-direction:column;gap:10px}.water-amount-controls .field-row,.water-amount-controls .field{min-width:0}@media(min-width:768px){body{background:#e9e5dc}.app-shell{margin:16px auto;border-radius:28px;overflow:hidden;box-shadow:var(--shadow-lg);border:1px solid var(--c-border);max-height:calc(100vh - 32px);overflow-y:auto}.tab-bar{max-width:520px;border-radius:0 0 28px 28px}}.household-composition{font-size:.95rem;font-weight:700;line-height:1.35}.household-settings .settings-row-main,.household-settings .field,.household-member-form .field,.household-planning-fields>.field,.meal-serving-fields>.field{min-width:0}.household-target-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px}.household-target-form .input{max-width:140px}.household-target-form .btn{min-height:46px}.household-members-heading{gap:12px}.household-members-heading h3{font-size:.9rem;font-weight:700}.household-member-list{list-style:none;padding:0;margin:0;border:1px solid var(--c-border);border-radius:var(--r-md);overflow:hidden}.household-member-row{display:flex;align-items:center;border-bottom:1px solid #f0ece3}.household-member-row:last-child{border-bottom:0}.household-member-edit{display:flex;align-items:center;gap:10px;min-width:0;flex:1;min-height:58px;padding:9px 10px;border:0;background:transparent;font-family:inherit;color:inherit;text-align:left;cursor:pointer}.household-member-edit:active{background:#f7f3ea}.household-member-edit>svg{flex-shrink:0;color:var(--c-text-muted)}.household-member-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.household-member-text strong{font-size:.9rem;overflow-wrap:anywhere}.household-member-text>span{font-size:.75rem;color:var(--c-text-muted)}.household-remove{flex-shrink:0;width:44px;height:44px;margin-right:3px}.household-member-edit:disabled,.household-remove:disabled{opacity:.55;cursor:not-allowed}.household-warning{background:var(--c-warning-light);color:#92400e;border-radius:var(--r-sm);padding:10px 12px;font-size:.8rem;line-height:1.4}.household-save-notice{color:var(--c-success);font-size:.8rem;line-height:1.4}.household-planning{border-top:1px solid var(--c-border)}.household-planning>summary{padding:12px 0 0;min-height:44px;font-size:.85rem;font-weight:700;cursor:pointer}.household-planning>summary span{font-size:.75rem;font-weight:400;color:var(--c-text-muted);margin-left:6px}.household-planning-form{display:flex;flex-direction:column;gap:12px;padding-top:10px}.household-planning-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.household-planning-fields .input,.household-member-form input[type=date]{min-width:0;max-width:100%}.readiness-section{display:flex;flex-direction:column;gap:10px}.readiness-banner-body{min-width:0;flex:1}.readiness-target-action{display:flex;align-items:center;justify-content:space-between;gap:12px}.readiness-target-action>span{font-size:.75rem;color:var(--c-text-muted);flex:1;min-width:0}.readiness-target-action>button{flex-shrink:0}.readiness-progress-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.readiness-progress-card{display:flex;flex-direction:column;gap:6px;padding:12px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--r-md);min-width:0}.readiness-progress-card .field-hint{line-height:1.4}.readiness-progress-head{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:.85rem}.readiness-progress-head>span{display:inline-flex;align-items:center;gap:5px;font-weight:600}.readiness-progress-head>strong{color:var(--c-accent)}.readiness-progress{display:block;width:100%;height:7px;border:0;border-radius:var(--r-full);overflow:hidden;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:#e9ecf1;color:var(--c-primary)}.readiness-progress::-webkit-progress-bar{background:#e9ecf1;border-radius:var(--r-full)}.readiness-progress::-webkit-progress-value{background:var(--c-primary);border-radius:var(--r-full)}.readiness-progress--water{color:#0284c7}.readiness-progress--water::-webkit-progress-value{background:#0284c7}.readiness-progress::-moz-progress-bar{background:var(--c-primary)}.readiness-progress--water::-moz-progress-bar{background:#0284c7}.readiness-days{font-size:.8rem;font-weight:700}.readiness-scope{font-size:.73rem;line-height:1.4;color:var(--c-text-muted)}.water-household-label{font-size:.9rem;line-height:1.4;font-weight:600;color:#cbd5e1}.water-baby-note{color:#cbd5e1;line-height:1.4}.water-settings-btn{min-height:44px}.meal-household-label{display:flex;align-items:flex-start;gap:7px;font-size:.82rem;line-height:1.4;color:var(--c-text-muted)}.meal-household-label>svg,.coverage-chip>svg{flex-shrink:0}.meal-serving-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end}.meal-serving-fields .field-label{min-height:32px;line-height:1.2}.meal-serving-fields .input{min-width:0;padding:11px 10px}.meals-summary-banner--four{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.meals-summary-banner--four .meals-summary-value{font-size:1.35rem;max-width:100%;overflow-wrap:anywhere}.meals-summary-banner--four .meals-summary-label{font-size:.68rem}.meal-detail-page .coverage-banner{flex-wrap:wrap}.meal-detail-page .coverage-banner-main{min-width:0;flex:1 1 180px}.meal-detail-page .coverage-banner-counts{font-size:1rem;line-height:1.4;overflow-wrap:anywhere}.meal-use-panel{display:flex;flex-direction:column;gap:10px;margin:16px 0 24px}.meal-use-panel .field-hint{line-height:1.5}.meal-use-success,.meal-use-warning{display:flex;align-items:flex-start;gap:8px;padding:12px;border-radius:12px;font-size:13px;line-height:1.5}.meal-use-success{background:#ecfdf5;color:#065f46}.meal-use-success svg{flex-shrink:0;margin-top:2px}.meal-use-warning{background:#fffbeb;color:#92400e}.meal-use-undo-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:12px;border:1px solid var(--c-border);border-radius:12px;font-size:13px}.meal-use-undo-row span{flex:1;min-width:160px;line-height:1.5}.meal-use-undo-row button{min-height:44px}.meal-use-confirm-name{font-weight:700;font-size:18px;margin-bottom:5px}.meal-use-deductions-title{font-size:14px;margin:18px 0 10px}.meal-use-deductions{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.meal-use-deduction{display:flex;flex-direction:column;gap:5px;padding:12px;border:1px solid var(--c-border);border-radius:12px;font-size:13px;overflow-wrap:anywhere;line-height:1.5}.meal-use-box{display:flex;align-items:center;gap:5px;color:var(--c-muted)}
