:root{--surface:#f5f6f2;--panel:#fff;--text:#4f5d56;--text-strong:#18251f;--muted:#75827c;--muted-strong:#5f6d66;--border:#dce3dc;--green:#236b4c;--shadow-soft:0 8px 18px #192a2214;color:var(--text);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #236b4c42}strong,h1,h2,h3,h4{overflow-wrap:anywhere}.app-shell{background:var(--surface);grid-template-columns:280px minmax(0,1fr);min-height:100svh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;gap:24px;height:100svh;padding:24px;display:flex;position:sticky;top:0}.brand-block,.topbar,.topbar-actions,.button-row,.section-heading,.recipe-detail-header,.day-card-header,.stock-main,.activity-item,.system-strip div,.toggle-row{align-items:center;display:flex}.brand-block{gap:12px}.brand-mark,.stat-icon,.activity-icon{flex:none;place-items:center;display:grid}.brand-mark{color:#f7fff9;background:#163f37;border-radius:8px;width:42px;height:42px}.eyebrow{color:var(--muted);text-transform:uppercase;margin:0 0 4px;font-size:12px;font-weight:700;line-height:1.3}.brand-block h1,.topbar h2,.plan-header h3,.empty-state h3,.recipe-detail h3,.profile-panel h3,.shopping-section h3,.section-heading h3{color:var(--text-strong);margin:0;font-weight:750;line-height:1.15}.brand-block h1{font-size:20px}.topbar h2{font-size:28px}.nav-tabs{gap:8px;display:grid}.nav-tabs button,.segmented button,.meal-slot,.recipe-row,.icon-button,.primary-action,.secondary-action{font:inherit;letter-spacing:0;cursor:pointer;border:0}.nav-tabs button{min-height:42px;color:var(--muted-strong);text-align:left;background:0 0;border-radius:8px;align-items:center;gap:10px;padding:0 12px;display:flex}.nav-tabs button:hover,.nav-tabs button.active{color:var(--text-strong);background:#edf4ef}.system-strip{color:var(--muted-strong);gap:10px;margin-top:auto;font-size:13px;display:grid}.system-strip div{gap:8px}.workspace{align-content:start;gap:22px;min-width:0;padding:24px;display:grid}.topbar{justify-content:space-between;gap:16px;min-height:56px}.topbar-actions,.button-row{gap:10px}.icon-button,.primary-action,.secondary-action,.icon-link{border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:40px;text-decoration:none;display:inline-flex}.icon-button{width:40px;color:var(--text-strong);background:var(--panel);border:1px solid var(--border)}.icon-button.filled{color:#fff;background:var(--green);border-color:var(--green)}.primary-action,.secondary-action{padding:0 14px;font-weight:750}.primary-action{color:#fff;background:var(--green)}.secondary-action{color:var(--text-strong);background:var(--panel);border:1px solid var(--border)}.primary-action:disabled,.secondary-action:disabled,.icon-button:disabled,.meal-slot:disabled{cursor:not-allowed;opacity:.58}.error-banner{color:#873a27;background:#fff1ed;border:1px solid #f1b7a8;border-radius:8px;align-items:center;gap:10px;padding:12px 14px;display:flex}.stats-grid{grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px;display:grid}.stat-tile{border:1px solid var(--border);background:var(--panel);border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;min-height:94px;padding:14px;display:grid}.stat-icon{border-radius:8px;width:38px;height:38px}.stat-tile span{color:var(--muted);font-size:13px;font-weight:700}.stat-tile strong{color:var(--text-strong);font-size:28px;line-height:1}.stat-tile.green .stat-icon{color:#1f6b4d;background:#dcefe3}.stat-tile.amber .stat-icon{color:#946812;background:#fff0c7}.stat-tile.coral .stat-icon{color:#af4f35;background:#ffe3dc}.stat-tile.blue .stat-icon{color:#2a659d;background:#dfeeff}.camera-layout,.plan-layout,.recipes-layout,.stock-layout,.family-layout{gap:16px;display:grid}.camera-layout{grid-template-columns:minmax(320px,1fr) 390px;align-items:start}.camera-stage{aspect-ratio:16/10;background:#161a1b;border:1px solid #293131;border-radius:8px;min-height:480px;position:relative;overflow:hidden}.camera-stage video,.camera-stage canvas{width:100%;height:100%}.camera-stage video{object-fit:cover;opacity:0;display:block}.camera-stage video.live{opacity:1}.camera-stage canvas{display:none}.camera-placeholder{color:#d3ded7;align-content:center;place-items:center;gap:12px;font-weight:800;display:grid;position:absolute;inset:0}.roi-box{pointer-events:none;border:2px solid #f5d56f;border-radius:8px;position:absolute;box-shadow:inset 0 0 0 9999px #09111029,0 0 18px #f5d56f4d}.scan-line{background:#73e2b2;height:2px;animation:2.8s linear infinite scan;position:absolute;top:22%;left:0;right:0;box-shadow:0 0 18px #73e2b2}.scan-result-overlay{z-index:5;color:#10241c;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7fff9f0;border:1px solid #bedcc7eb;border-radius:8px;gap:7px;max-width:540px;padding:16px 18px;animation:4.6s both scan-result-pop;display:grid;position:absolute;bottom:24px;left:24px;right:24px;box-shadow:0 18px 44px #00000047}.scan-result-overlay strong{overflow-wrap:anywhere;min-width:0;font-size:28px;line-height:1.05}.scan-result-overlay>span{color:#315145;font-size:14px;font-weight:750}.scan-result-overlay.needs_review,.scan-result-overlay.ignored_duplicate{background:#fff8def5;border-color:#e9c252e6}.scan-result-overlay.removed{background:#fff2eef5;border-color:#ea9b85e6}.scan-result-kicker{color:#1f6b4d;text-transform:uppercase;align-items:center;gap:7px;font-size:12px;font-weight:900;display:inline-flex}@keyframes scan-result-pop{0%{opacity:0;transform:translateY(12px)scale(.98)}8%,86%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.99)}}@keyframes scan{0%{transform:translateY(0)}50%{transform:translateY(230px)}to{transform:translateY(0)}}.control-panel,.recipe-detail,.profile-panel,.shopping-section,.activity-rail,.empty-state{border:1px solid var(--border);background:var(--panel);border-radius:8px}.control-panel{gap:14px;padding:16px;display:grid}.segmented{background:#eef1ec;border-radius:8px;grid-template-columns:1fr 1fr;gap:4px;min-height:42px;padding:4px;display:grid}.segmented button{min-height:34px;color:var(--muted-strong);background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:8px;display:inline-flex}.segmented button.active{background:var(--panel);color:var(--text-strong);box-shadow:var(--shadow-soft)}.toggle-row{border-top:1px solid var(--border);border-bottom:1px solid var(--border);min-height:42px;color:var(--text-strong);justify-content:space-between;font-weight:700}.toggle-row input{width:18px;height:18px;accent-color:var(--green)}.detection-list,.activity-list,.recipe-list,.review-list,.track-list{gap:10px;display:grid}.detection-item,.review-item,.track-item{border:1px solid var(--border);background:#fbfcfa;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.detection-item strong,.review-item strong,.track-item strong,.activity-item strong,.recipe-row strong,.stock-row strong{color:var(--text-strong)}.detection-item span,.review-item span,.track-item span,.activity-item span,.recipe-row span,.stock-main span,.stock-meta,.day-card-header span,.quiet{color:var(--muted);font-size:13px}.stock-meta{overflow-wrap:anywhere;display:block}.detection-badge,.status-pill,.gap-count,.shopping-chip,.recipe-meta span{border-radius:999px;justify-content:center;align-items:center;min-height:26px;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.detection-badge.added,.detection-badge.increased,.detection-badge.consumed,.status-pill.ok{color:#1f6b4d;background:#dcefe3}.detection-badge.removed,.status-pill.expired,.gap-count.alert{color:#af4f35;background:#ffe3dc}.detection-badge.ignored_duplicate,.detection-badge.needs_review,.status-pill.use-soon{color:#946812;background:#fff0c7}.review-panel{border-top:1px solid var(--border);padding-top:14px}.calibration-panel,.demo-panel,.integration-panel,.track-panel{border-top:1px solid var(--border);gap:12px;padding-top:14px;display:grid}.demo-sample-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.demo-sample-grid .secondary-action{min-height:38px;padding:0 10px}.calibration-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.calibration-grid label{color:var(--text-strong);gap:5px;font-size:13px;font-weight:750;display:grid}.calibration-grid input,.calibration-grid select{min-height:36px}.section-heading.compact{margin-bottom:8px}.section-heading.compact h3{font-size:16px}.review-actions{gap:6px;display:flex}.icon-button.approve{color:#1f6b4d;background:#eef8f2;border-color:#c8dfd0}.icon-button.reject{color:#af4f35;background:#fff2ee;border-color:#f0c3b8}.track-status{border-radius:999px;justify-content:center;align-items:center;min-height:26px;padding:0 10px;font-size:12px;font-weight:850;display:inline-flex}.track-status.committed{color:#1f6b4d;background:#dcefe3}.track-status.needs_review,.track-status.observing{color:#946812;background:#fff0c7}.track-status.ignored{color:#5f6d66;background:#eef1ec}.integration-list{gap:8px;display:grid}.integration-item{border:1px solid var(--border);background:#fbfcfa;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.integration-item strong{color:var(--text-strong);font-size:13px;display:block}.integration-item span:not(.integration-badge){color:var(--muted);overflow-wrap:anywhere;margin-top:2px;font-size:11px;line-height:1.35;display:block}.integration-badge{border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:0 9px;font-size:11px;font-weight:850;display:inline-flex}.integration-badge.ready{color:#1f6b4d;background:#dcefe3}.integration-badge.pending{color:#946812;background:#fff0c7}.plan-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.week-grid{grid-template-columns:repeat(7,minmax(180px,1fr));gap:12px;padding-bottom:4px;display:grid;overflow-x:auto}.day-card{border:1px solid var(--border);background:var(--panel);border-radius:8px;gap:10px;min-width:180px;padding:12px;display:grid}.day-card-header{justify-content:space-between;gap:8px}.day-card-header strong{color:var(--text-strong)}.meal-slot{text-align:left;border:1px solid var(--border);min-height:78px;color:var(--text);background:#f8faf7;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:4px 8px;padding:10px;display:grid}.meal-slot:hover{border-color:#a9c9b8}.meal-label{color:#1f6b4d;background:#e8f3ed;border-radius:6px;place-items:center;width:28px;height:28px;font-size:13px;font-weight:850;display:grid}.meal-title{min-width:0;color:var(--text-strong);font-weight:750}.gap-count{color:#2a659d;background:#e7f0fb;grid-column:2;width:max-content}.shopping-section{padding:16px}.shopping-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.shopping-chip{color:var(--text-strong);background:#f0f4ef}.recipes-layout{grid-template-columns:310px minmax(0,1fr);align-items:start}.recipe-row{text-align:left;border:1px solid var(--border);background:var(--panel);border-radius:8px;gap:4px;min-height:68px;padding:12px;display:grid}.recipe-row.active{background:#f1f8f4;border-color:#89b79e}.recipe-detail{gap:18px;padding:20px;display:grid}.recipe-detail-header{justify-content:space-between;gap:16px}.recipe-detail h3{font-size:26px}.icon-link{width:40px;color:var(--text-strong);border:1px solid var(--border);background:#f9faf8}.recipe-summary{color:var(--text);margin:0}.recipe-meta{flex-wrap:wrap;gap:8px;display:flex}.recipe-meta span{color:#315963;background:#eef4f6}.detail-columns{grid-template-columns:minmax(220px,.8fr) minmax(260px,1.2fr);gap:22px;display:grid}.detail-columns h4{color:var(--text-strong);margin:0 0 10px}.ingredient-list,.step-list{margin:0;padding:0}.ingredient-list{gap:8px;list-style:none;display:grid}.ingredient-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.step-list{color:var(--text);padding-left:22px}.step-list li+li{margin-top:8px}.stock-layout{align-items:start}.usage-adjustment-panel{border:1px solid var(--border);background:var(--panel);border-radius:8px;gap:10px;padding:14px;display:grid}.usage-chip-list{flex-wrap:wrap;gap:8px;display:flex}.usage-chip{color:#5f6d66;background:#eef1ec;border-radius:999px;align-items:center;min-height:28px;padding:0 10px;font-size:12px;font-weight:850;display:inline-flex}.usage-chip.consumed,.usage-chip.removed{color:#1f6b4d;background:#dcefe3}.storage-filter{flex-wrap:wrap;gap:8px;display:flex}.storage-filter button{border:1px solid var(--border);min-height:38px;color:var(--muted-strong);background:var(--panel);font:inherit;letter-spacing:0;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 12px;font-weight:750;display:inline-flex}.storage-filter button.active{color:#1f6b4d;background:#edf7f1;border-color:#a9c9b8}.stock-form{grid-template-columns:minmax(180px,1.5fr) 90px 80px minmax(120px,1fr) minmax(110px,1fr) 150px 44px;gap:8px;display:grid}input,select{border:1px solid var(--border);background:var(--panel);min-width:0;min-height:42px;color:var(--text-strong);font:inherit;letter-spacing:0;border-radius:8px;padding:0 11px}.stock-table{gap:8px;display:grid}.stock-row{border:1px solid var(--border);background:var(--panel);border-radius:8px;grid-template-columns:minmax(190px,1fr) 90px 138px 80px 82px 90px 44px 44px;align-items:center;gap:12px;min-height:64px;padding:10px 12px;display:grid}.remaining-control{grid-template-columns:minmax(64px,1fr) auto;align-items:center;gap:6px;min-width:0;display:grid}.remaining-control input{min-height:36px}.remaining-control span{color:var(--muted);font-size:13px;font-weight:800}.stock-main{gap:10px;min-width:0}.stock-main>div{gap:2px;min-width:0;display:grid}.status-dot{border-radius:50%;width:10px;height:10px}.status-dot.ok{background:#2f8a62}.status-dot.use-soon{background:#d2931b}.status-dot.expired{background:#cc5b40}.family-layout{grid-template-columns:minmax(240px,.7fr) minmax(300px,1fr);align-items:start}.profile-panel{padding:16px}.member-grid{gap:10px;margin-top:14px;display:grid}.member-card{border:1px solid var(--border);border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:2px 10px;min-height:58px;padding:10px;display:grid}.member-card span{color:var(--muted);grid-column:2;font-size:13px}.settings-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;display:grid}.settings-grid label{color:var(--text-strong);gap:6px;font-weight:700;display:grid}.family-layout>.primary-action{grid-column:2;width:max-content}.activity-rail{padding:16px}.section-heading{justify-content:space-between;margin-bottom:12px}.section-heading span{color:var(--muted);font-size:13px;font-weight:800}.activity-item{border-top:1px solid var(--border);gap:10px;min-height:54px;padding-top:10px}.activity-item:first-child{border-top:0;padding-top:0}.activity-icon{color:#1f6b4d;background:#f0f4ef;border-radius:8px;width:34px;height:34px}.empty-state,.loading-screen{align-content:center;place-items:center;gap:14px;display:grid}.empty-state{text-align:center;min-height:340px;padding:28px}.loading-screen{min-height:100svh;color:var(--text-strong);background:var(--surface);font-weight:800}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1100px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;padding:16px;position:static}.nav-tabs{grid-template-columns:repeat(5,minmax(0,1fr))}.nav-tabs button{justify-content:center}.system-strip{grid-template-columns:repeat(3,max-content);margin-top:0}.camera-layout,.recipes-layout,.family-layout{grid-template-columns:1fr}.family-layout>.primary-action{grid-column:1}}@media (width<=760px){.workspace{padding:14px}.topbar{flex-direction:column;align-items:flex-start}.stats-grid,.settings-grid,.nav-tabs{grid-template-columns:1fr 1fr}.nav-tabs button{justify-content:flex-start}.camera-stage{min-height:280px}.stock-form,.stock-row{grid-template-columns:1fr 1fr}.stock-row .stock-main,.stock-form input:first-child{grid-column:1/-1}.detail-columns{grid-template-columns:1fr}}@media (width<=520px){.stats-grid,.settings-grid{grid-template-columns:1fr}.topbar-actions,.button-row{flex-wrap:wrap;width:100%}.primary-action,.secondary-action{flex:150px}}
