*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f7fa;color:#2c3e50;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}button{font-family:inherit}.stats-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(4,1fr)}.stat-card{border:2px solid #0000;border-radius:12px;box-shadow:0 4px 14px #0000001f;color:#fff;cursor:pointer;font:inherit;margin:0;padding:1.5rem;text-align:center;transition:background .2s,box-shadow .2s,border-color .2s,transform .15s;width:100%}.stat-card:hover{box-shadow:0 6px 20px #0000002e}.stat-card:focus-visible{box-shadow:0 0 0 3px #fff,0 0 0 6px #2c3e5073;outline:none}.stat-card.active{border-color:#fffffff2;box-shadow:inset 0 0 0 1px #fff6,0 8px 24px #0003}.stat-card:active{transform:scale(.99)}.stat-icon{align-items:center;display:flex;justify-content:center;margin-bottom:.75rem}.stat-icon svg{stroke:currentColor}.stat-value{color:#fff;font-size:2.25rem;font-weight:700;margin:.25rem 0}.stat-label{color:#ffffffe6;font-size:.9rem;font-weight:600}.stat-card.total{background:#3498db}.stat-card.total:hover{background:#2e86c1}.stat-card.fresh{background:#27ae60}.stat-card.fresh:hover{background:#229954}.stat-card.expiring{background:#e67e22}.stat-card.expiring:hover{background:#d35400}.stat-card.expired{background:#e74c3c}.stat-card.expired:hover{background:#c0392b}@media (max-width:768px){.stats-grid{grid-template-columns:repeat(2,1fr)}}.pantry-card{background:#fff;border:1px solid #2c3e5014;border-left:4px solid #bdc3c7;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:1.25rem;position:relative;transition:box-shadow .2s,border-color .2s}.pantry-card--expired{background:linear-gradient(105deg,#e74c3c12,#fff 42%);border-left-color:#e74c3c}.pantry-card--expiring{background:linear-gradient(105deg,#e67e2217,#fff 42%);border-left-color:#e67e22}.pantry-card--fresh{background:linear-gradient(105deg,#27ae6012,#fff 42%);border-left-color:#27ae60}.pantry-card--unknown{border-left-color:#95a5a6}.pantry-card:hover{box-shadow:0 4px 12px #0000001a}.pantry-card-actions{display:flex;gap:.25rem;position:absolute;right:.75rem;top:.75rem}.card-action-btn{align-items:center;background:#f0f2f5;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:.9rem;height:32px;justify-content:center;transition:background .2s;width:32px}.card-action-btn:hover{background:#e0e0e0}.pantry-card-icon{align-items:center;background:#f0f2f5;border-radius:10px;display:flex;height:56px;justify-content:center;margin-bottom:.75rem;width:56px}.pantry-card-letter{color:#7f8c8d;font-size:1.5rem;font-weight:700}.expiry-dot{border-radius:50%;display:inline-block;height:8px;margin-right:.35rem;vertical-align:middle;width:8px}.expiry-dot[data-status=expired]{background:#e74c3c}.expiry-dot[data-status=expiring]{background:#e67e22}.expiry-dot[data-status=fresh]{background:#27ae60}.expiry-dot[data-status=unknown]{background:#95a5a6}.pantry-card-img{border-radius:10px;height:100%;object-fit:cover;width:100%}.pantry-card-name{color:#2c3e50;font-size:1.1rem;font-weight:600;margin:0 0 .25rem}.pantry-card-added,.pantry-card-meta,.pantry-card-quantity{color:#7f8c8d;font-size:.85rem;margin:.25rem 0}.pantry-card-expiry{align-items:center;display:flex;font-size:.9rem;font-weight:600;gap:.35rem;margin:.5rem 0 0}.pantry-card-expiry.expired{color:#c0392b}.pantry-card-expiry.expiring-soon{color:#d35400}.pantry-card-expiry.fresh{color:#1e8449}.pantry-card-expiry.unknown{color:#7f8c8d}.consume-btn{background:#eefaf1;border:1px solid #27ae60;border-radius:8px;color:#1e874b;cursor:pointer;font-weight:600;margin-top:.75rem;padding:.5rem .75rem;width:100%}.consume-btn:hover{background:#e1f6e8}@media (max-width:480px){.consume-btn{box-sizing:border-box;min-height:44px;padding:.65rem .75rem}.card-action-btn{box-sizing:border-box;height:44px;width:44px}}.needs-attention-section{margin-top:2rem}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.section-title{font-size:1.75rem;margin:0}.needs-attention-scope{color:#7f8c8d;font-size:1rem;font-weight:600}.view-all-link{background:none;border:none;color:#27ae60;cursor:pointer;font-size:1rem;font-weight:600;padding:.5rem 0;text-decoration:underline}.view-all-link:hover{color:#229954}.attention-count{color:#7f8c8d;font-size:.95rem;font-weight:600}.items-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(3,1fr)}@media (max-width:1200px){.items-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.items-grid{grid-template-columns:1fr}}.reminder-center{margin-top:1rem}.reminder-title{color:#2c3e50;font-size:1.1rem;margin:0 0 .6rem}.reminder-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.reminder-card{background:#fff;border:1px solid #e8edf2;border-radius:10px;padding:.8rem}.reminder-label{color:#7f8c8d;font-size:.85rem;margin:0}.reminder-count{font-size:1.35rem;font-weight:700;margin:.2rem 0 0}@media (max-width:768px){.reminder-grid{grid-template-columns:1fr}}.activity-feed{background:#fff;border-radius:12px;margin-top:1.2rem;padding:1rem}.activity-title{font-size:1.1rem;margin:0 0 .75rem}.activity-list{display:flex;flex-direction:column;gap:.6rem;list-style:none;margin:0;padding:0}.activity-row{border:1px solid #edf1f4;border-radius:8px;padding:.65rem .75rem}.activity-message{color:#2c3e50;font-weight:600;margin:0}.activity-time{color:#7f8c8d;font-size:.8rem;margin:.2rem 0 0}.activity-empty{color:#7f8c8d}.home-page{padding:0}.home-page-title{color:#2c3e50;font-size:2rem;font-weight:700;margin:0 0 .25rem}.home-page-subtitle{color:#7f8c8d;font-size:1rem;margin:0 0 2rem}.home-pantry-section{margin-top:2.5rem}.pantry-section-title{color:#2c3e50;font-size:1.5rem;font-weight:700;margin:0 0 .25rem}.error,.loading{box-shadow:0 2px 8px #0000000f}.pantry-page{padding:0}.pantry-page-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:1.5rem}.pantry-page-title{color:#2c3e50;font-size:2rem;font-weight:700;margin:0 0 .25rem}.pantry-page-count{color:#7f8c8d;font-size:1rem;margin:0}.add-item-btn{align-items:center;background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:.5rem;padding:.6rem 1.25rem;transition:background .2s}.add-item-btn:hover{background:#229954}.add-icon{font-size:1.2rem}.pantry-toolbar{display:flex;gap:1rem;margin-bottom:1.5rem}.search-wrap{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex:1 1;padding:0 1rem}.search-icon{font-size:1rem;margin-right:.5rem;opacity:.7}.search-input{border:none;flex:1 1;font-size:1rem;outline:none;padding:.75rem 0}.category-select{background:#fff;border:1px solid #e0e0e0;border-radius:8px;font-size:.95rem;min-width:160px;padding:.75rem 1rem}.pantry-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}@media (max-width:480px){.pantry-toolbar{align-items:stretch;flex-direction:column}.category-select{min-width:0;width:100%}.pantry-grid{grid-template-columns:1fr}.add-item-btn{box-sizing:border-box;min-height:44px}.pantry-page-header{align-items:stretch;flex-direction:column;gap:.75rem}}.pantry-empty{color:#7f8c8d}.error,.loading,.pantry-empty{background:#fff;border-radius:12px;padding:3rem;text-align:center}.error{color:#e74c3c}.error h2{margin-bottom:.5rem}.modal-overlay{align-items:center;background:#00000080;bottom:0;box-sizing:border-box;display:flex;justify-content:center;left:0;padding:max(1rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) max(1rem,env(safe-area-inset-bottom,0px)) max(1rem,env(safe-area-inset-left,0px));position:fixed;right:0;top:0;z-index:1000}.modal-content{-webkit-overflow-scrolling:touch;background:#fff;border-radius:16px;border-top:3px solid #27ae60;box-shadow:0 25px 50px -12px #0000002e,0 12px 24px #00000014;max-height:min(90vh,calc(100dvh - 2rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)));max-width:600px;overflow-y:auto;width:100%}.modal-header{align-items:center;background:#f8faf9;border-bottom:none;display:flex;justify-content:space-between;padding:1.35rem 2rem 1.25rem}.modal-title{color:#2c3e50;font-size:1.5rem;font-weight:700;margin:0}.modal-close{align-items:center;background:none;border:none;border-radius:8px;box-sizing:border-box;color:#7f8c8d;cursor:pointer;display:flex;font-size:2rem;height:44px;justify-content:center;min-height:44px;min-width:44px;padding:0;transition:all .2s;width:44px}.modal-close:hover{background:#ffffffe6;color:#2c3e50}.add-item-mode-bar{background:#fff;border-bottom:1px solid #2c3e5014;padding:.65rem 2rem 1rem}.add-item-mode-switch{background:#e8eeea;border-radius:10px;display:flex;gap:0;min-width:0;padding:4px;width:100%}.mode-segment{align-items:center;background:#0000;border:none;border-radius:8px;color:#5a6c7d;cursor:pointer;display:inline-flex;flex:1 1;font-family:inherit;font-size:.9rem;font-weight:600;gap:.45rem;justify-content:center;min-width:0;padding:.55rem .65rem;transition:background .2s,color .2s,box-shadow .2s}.mode-segment:hover:not(.active){background:#ffffff8c;color:#2c3e50}.mode-segment.active{background:#27ae60;box-shadow:0 1px 3px #27ae6059;color:#fff}.mode-segment svg{color:inherit;flex-shrink:0}.add-modal-back-btn{align-items:center;background:#fff;border:1px solid #d5ded8;border-radius:8px;color:#2c3e50;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.9rem;font-weight:600;justify-content:center;padding:.5rem 1rem;transition:background .2s,border-color .2s}.add-modal-back-btn:hover{background:#f8faf9;border-color:#27ae60;color:#1e8449}.add-item-form{padding:1.25rem 2rem}.add-item-form-compact .form-row{margin-bottom:1rem}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(3,1fr);margin-bottom:1.5rem}.form-row-2{grid-template-columns:1fr 1fr}.form-optional{margin-bottom:.5rem;margin-top:1rem}.form-optional-toggle{background:none;border:none;color:#27ae60;cursor:pointer;font-size:.9rem;font-weight:500;padding:.25rem 0}.form-optional-toggle:hover{text-decoration:underline}.form-optional-fields{border-top:1px solid #eee;margin-top:.75rem;padding-top:.75rem}.form-optional-fields .form-row{margin-bottom:1rem}.form-group{display:flex;flex-direction:column}.form-group.full-width{grid-column:1/-1}.form-group label{color:#2c3e50;font-size:.875rem;font-weight:600;margin-bottom:.5rem}.required{color:#e74c3c}.form-group input,.form-group select,.form-group textarea{background:#fff;border:1px solid #e0e0e0;border-radius:8px;font-family:inherit;font-size:1rem;padding:.75rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#27ae60;box-shadow:0 0 0 3px #27ae601a;outline:none}.form-group input.error,.form-group select.error,.form-group textarea.error{border-color:#e74c3c}.form-group textarea{min-height:60px;resize:vertical}.add-modal-scan{padding:1rem 2rem 1.5rem}.add-modal-scan-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:.75rem}.add-modal-scan-hint{color:#7f8c8d;font-size:.95rem;margin:0}.add-modal-camera-wrap{background:#111;border-radius:12px;min-height:min(42vh,400px);overflow:hidden;position:relative}.add-modal-camera-mount{min-height:min(40vh,380px);width:100%}.add-modal-camera-mount video{display:block;width:100%}.add-modal-camera-error,.add-modal-camera-loading{background:#000c;bottom:0;color:#fff;font-size:.9rem;left:0;margin:0;padding:.75rem 1rem;position:absolute;right:0}.add-modal-camera-error{color:#f8d7da}.date-input-wrapper{align-items:center;display:flex;position:relative}.date-input-wrapper input[type=date]{flex:1 1;padding-right:2.5rem}.date-input-wrapper input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;height:100%;opacity:0;position:absolute;right:0;width:100%}.calendar-icon{font-size:1.1rem;pointer-events:none;position:absolute;right:.75rem;top:50%;transform:translateY(-50%);z-index:1}.error-message{color:#e74c3c;font-size:.75rem;margin-top:.25rem}.form-actions{background:#fafbfa;border-radius:0 0 13px 13px;display:flex;gap:1rem;justify-content:flex-end;margin:1.5rem -2rem -1.25rem;padding:1.15rem 2rem 1.35rem}.btn-cancel{background:#fff;border:1px solid #e0e0e0;border-radius:8px;color:#2c3e50;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s}.btn-cancel:hover{background:#f5f7fa;border-color:#bdc3c7}.btn-add{align-items:center;background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:.5rem;padding:.75rem 1.5rem;transition:background .2s}.btn-add:hover{background:#229954}.add-icon{font-size:1.25rem;font-weight:300}@media (max-width:768px){.modal-content{margin:1rem;max-width:100%}.add-item-form,.add-item-mode-bar,.form-actions,.modal-header{padding-left:1.25rem;padding-right:1.25rem}.form-actions{border-radius:0 0 12px 12px;flex-direction:column-reverse;margin-bottom:-1.25rem;margin-left:-1.25rem;margin-right:-1.25rem}.mode-segment{font-size:.82rem;padding:.5rem .4rem}.form-row,.form-row-2{gap:1rem;grid-template-columns:1fr}.form-group.full-width{grid-column:1}.btn-add,.btn-cancel{justify-content:center;width:100%}.add-modal-scan{padding-left:1.25rem;padding-right:1.25rem}.add-modal-scan-header{align-items:stretch;flex-direction:column}}.scan-page{padding:0}.scan-page-title{color:#2c3e50;font-size:2rem;font-weight:700;margin:0 0 .25rem}.scan-page-subtitle{color:#7f8c8d;font-size:1rem;margin:0 0 2rem}.scan-camera-area{margin-bottom:2rem}.scan-camera-wrapper{background:#111;border-radius:12px;min-height:min(52vh,520px);overflow:hidden;position:relative}.scan-camera-mount{min-height:min(50vh,500px);width:100%}.scan-camera-mount video{display:block;width:100%}.scan-camera-wrapper .scan-start-camera-btn{margin:1rem}.scan-camera-error,.scan-camera-loading{font-size:.95rem;margin:.5rem 1rem 0}.scan-camera-error{color:#e74c3c}.scan-camera-loading{color:#27ae60}.scan-camera-placeholder{background:#fff;border:2px dashed #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:3rem;text-align:center}.scan-camera-icon{color:#bdc3c7;display:block;margin-bottom:1rem}.scan-camera-icon svg{stroke:currentColor}.scan-camera-status{color:#2c3e50;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.scan-camera-hint{color:#7f8c8d;font-size:.95rem;margin:0 0 1.5rem}.scan-start-camera-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:600;padding:.75rem 1.5rem}.scan-start-camera-btn.secondary{background:#95a5a6}.scan-manual{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:1.5rem}.scan-manual-title{color:#2c3e50;font-size:1.1rem;font-weight:600;margin:0 0 1rem}.scan-manual-form{display:flex;gap:.75rem;margin-bottom:.75rem}.scan-manual-input{border:1px solid #e0e0e0;border-radius:8px;flex:1 1;font-size:1rem;padding:.75rem 1rem}.scan-lookup-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:600;padding:.75rem 1.25rem}.scan-lookup-btn:disabled{opacity:.7}.scan-manual-hint{color:#7f8c8d;font-size:.85rem;margin:0}.scan-manual-error{color:#e74c3c;font-size:.9rem;margin:.5rem 0 0}.recipe-generator{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-top:2rem;padding:2rem}.recipe-generator-header{margin-bottom:1.5rem}.recipe-title{color:#27ae60;font-size:1.75rem;font-weight:700;margin:0 0 .5rem}.recipe-subtitle{color:#7f8c8d;font-size:1rem;margin:0}.recipe-preferences-section{margin-bottom:1.5rem}.recipe-preferences-title{color:#2c3e50;font-size:1rem;font-weight:700;margin:0 0 .75rem}.recipe-filters{display:flex;flex-wrap:wrap;gap:1rem}.generate-btn-icon{font-size:1.25rem}.filter-group{display:flex;flex-direction:column;gap:.25rem}.filter-group label{color:#2c3e50;font-size:.85rem;font-weight:600}.filter-group select{border:1px solid #e0e0e0;border-radius:8px;font-size:.95rem;min-width:140px;padding:.5rem .75rem}.generate-recipe-btn{align-items:center;background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1.1rem;font-weight:600;gap:.5rem;justify-content:center;margin-bottom:2rem;padding:1rem 1.5rem;transition:background .2s;width:100%}.generate-recipe-btn:hover:not(:disabled){background:#229954}.generate-recipe-btn:disabled{cursor:not-allowed;opacity:.6}.spinner{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:18px;width:18px}@keyframes spin{to{transform:rotate(1turn)}}.recipe-card{background:#f8f9fa;border:2px solid #27ae60;border-radius:12px;padding:1.5rem}.recipe-card-header{margin-bottom:1rem}.recipe-name{color:#2c3e50;font-size:1.5rem;font-weight:700;margin:0 0 .5rem}.recipe-meta{color:#7f8c8d;display:flex;flex-wrap:wrap;font-size:.9rem;gap:1.5rem}.recipe-meta span{align-items:center;display:inline-flex;gap:.35rem}.recipe-meta svg{stroke:currentColor;flex-shrink:0}.recipe-description{color:#34495e;font-style:italic;margin-bottom:1rem}.priority-alert{align-items:center;background:#fff3cd;border:1px solid #ffc107;border-radius:8px;color:#856404;display:flex;font-weight:600;gap:.5rem;margin-bottom:1rem;padding:.75rem}.alert-icon{font-size:1.2rem}.recipe-section{margin-bottom:1.5rem}.recipe-section:last-child{margin-bottom:0}.section-title{color:#27ae60;font-size:1.1rem;font-weight:700;margin:0 0 .75rem}.ingredients-list{list-style:none;margin:0;padding:0}.ingredients-list li{align-items:center;background:#fff;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:.5rem;padding:.5rem}.ingredients-list li.expiring-ingredient{background:#fef5e7;border-left:3px solid #f39c12}.ingredient-name{color:#2c3e50;font-weight:600}.expiry-badge{background:#f39c12;border-radius:12px;color:#fff;font-size:.75rem;font-weight:600;padding:.25rem .5rem}.instructions-list{color:#34495e;line-height:1.8;padding-left:1.5rem}.instructions-list li{margin-bottom:.75rem}.missing-section{background:#e8f5e9;border-radius:8px;padding:1rem}.missing-intro{color:#2e7d32;font-size:.95rem;margin:0 0 .5rem}.missing-list{color:#34495e;margin:0 0 1rem;padding-left:1.25rem}.delivery-links{display:flex;flex-wrap:wrap;gap:.75rem}.delivery-btn{border-radius:8px;display:inline-block;font-size:.9rem;font-weight:600;padding:.6rem 1rem;text-decoration:none;transition:opacity .2s}.delivery-btn:hover{opacity:.9}.delivery-btn.deliveroo{background:#00ccbc;color:#fff}.delivery-btn.add-shopping{background:#2c3e50;border:none;color:#fff;cursor:pointer}.delivery-btn.ubereats{background:#06c167;color:#fff}.use-recipe-btn{background:#2c3e50;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:600;padding:.8rem 1rem;width:100%}.use-recipe-btn:hover:not(:disabled){background:#22303d}.use-recipe-btn:disabled{cursor:not-allowed;opacity:.65}@media (max-width:768px){.recipe-generator{padding:1.5rem}.recipe-meta{flex-direction:column;gap:.5rem}}.recipes-page{padding:0}.recipes-page-title{color:#2c3e50;font-size:2rem;font-weight:700;margin:0 0 .25rem}.recipes-page-subtitle{color:#7f8c8d;font-size:1rem;margin:0 0 1.5rem}.priority-ingredients-box{background:#fef9e7;border:1px solid #f0e6c8;border-radius:12px;margin-bottom:1.5rem;padding:1.25rem}.priority-ingredients-title{color:#2c3e50;font-size:1rem;font-weight:700;margin:0 0 .75rem}.priority-tags{display:flex;flex-wrap:wrap;gap:.5rem}.priority-tag{background:#fff;border:1px solid #e0e0e0;border-radius:20px;color:#2c3e50;display:inline-block;font-size:.85rem;padding:.4rem .75rem}.produce-page{padding:0}.produce-page-title{color:#2c3e50;font-size:2rem;font-weight:700;margin:0 0 .25rem}.produce-page-subtitle{color:#7f8c8d;font-size:1rem;margin:0 0 1.5rem}.produce-disclaimer{background:#e3f2fd;border:1px solid #90caf9;border-radius:12px;margin-bottom:1.5rem;padding:1rem 1.25rem}.produce-disclaimer-title{color:#1565c0;font-size:1rem;font-weight:700;margin:0 0 .35rem}.produce-disclaimer-icon{margin-right:.25rem}.produce-disclaimer-text{color:#0d47a1;font-size:.95rem;line-height:1.5;margin:0}.produce-upload-zone{margin-bottom:1.5rem}.produce-drop-area{background:#fff;border:2px dashed #bdc3c7;border-radius:12px;cursor:pointer;margin-bottom:1rem;padding:3rem 2rem;text-align:center;transition:border-color .2s,background .2s}.produce-drop-area.drag-over,.produce-drop-area:hover{background:#f8fff9;border-color:#27ae60}.produce-drop-area.has-preview{padding:1rem}.produce-file-input{display:none}.produce-upload-arrow{color:#27ae60;display:block;font-size:3rem;margin-bottom:.75rem}.produce-upload-title{color:#2c3e50;font-size:1.2rem;font-weight:700;margin:0 0 .35rem}.produce-upload-hint{color:#7f8c8d;font-size:.95rem;margin:0 0 .25rem}.produce-upload-types{color:#95a5a6;font-size:.85rem;margin:0}.produce-preview-img{border-radius:8px;max-height:280px;max-width:100%}.produce-upload-btn{align-items:center;background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:.5rem;justify-content:center;padding:1rem 1.5rem;transition:background .2s;width:100%}.produce-upload-btn:hover:not(:disabled){background:#229954}.produce-upload-btn:disabled{cursor:not-allowed;opacity:.8}.produce-upload-btn-icon{font-size:1.25rem}.produce-reset-btn{background:none;border:none;color:#7f8c8d;cursor:pointer;display:block;font-size:.9rem;margin:.75rem auto 0}.produce-reset-btn:hover{color:#2c3e50}.produce-error{color:#e74c3c;margin:.5rem 0 0}.produce-result{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:1.25rem}.produce-estimate-label{color:#27ae60;font-size:1.25rem;font-weight:700;margin:0 0 .5rem}.produce-result-message,.produce-result-suggestion{color:#34495e;margin:.35rem 0}.shopping-page{padding:0}.shopping-title{font-size:2rem;margin:0 0 .25rem}.shopping-subtitle{color:#7f8c8d;margin:0 0 1.2rem}.shopping-add-row{display:flex;gap:.75rem;margin-bottom:1rem}.shopping-input{border:1px solid #d9dee5;border-radius:8px;flex:1 1;padding:.65rem .8rem}.shopping-add-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;padding:.6rem 1rem}.shopping-card{background:#fff;border-radius:12px;margin-bottom:1rem;padding:1rem}.shopping-suggestions{display:flex;flex-wrap:wrap;gap:.5rem}.suggestion-chip{background:#eef9f2;border:1px solid #b8e5c8;border-radius:999px;color:#1f7f47;cursor:pointer;padding:.35rem .7rem}.shopping-list{display:flex;flex-direction:column;gap:.65rem}.shopping-item{align-items:center;border:1px solid #eef1f4;border-radius:8px;display:flex;justify-content:space-between;padding:.65rem .75rem}.shopping-item-name{font-weight:600;margin:0}.shopping-item-meta{color:#7f8c8d;font-size:.85rem;margin:.2rem 0 0}.shopping-remove-btn{background:#fdeeee;border:none;border-radius:8px;color:#c0392b;cursor:pointer;padding:.4rem .6rem}.shopping-empty{color:#7f8c8d}.insights-page{padding:0}.insights-title{font-size:2rem;margin:0 0 .2rem}.insights-subtitle{color:#7f8c8d;margin:0 0 1rem}.insights-grid{grid-gap:.8rem;display:grid;gap:.8rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:.8rem}.insight-card{background:#fff;border-radius:12px;padding:1rem}.insight-card p{color:#7f8c8d;margin:0}.insight-card h3{font-size:1.8rem;margin:.2rem 0 0}.insights-list{margin:.5rem 0 0}@media (max-width:768px){.insights-grid{grid-template-columns:1fr}}.household-page{padding:0}.household-title{font-size:2rem;margin:0 0 .2rem}.household-subtitle{color:#7f8c8d;margin:0 0 1rem}.household-card{background:#fff;border-radius:12px;padding:1rem}.household-row{display:flex;gap:.6rem;margin-bottom:.8rem}.household-row input{border:1px solid #d9dee5;border-radius:8px;flex:1 1;padding:.6rem .75rem}.household-card button,.household-row button{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;padding:.55rem .8rem}.household-members{margin:.4rem 0 .8rem}.invite-code{font-weight:700;margin-top:.8rem}.share-mode-row{align-items:center;border:1px solid #e8edf2;border-radius:8px;display:flex;gap:.75rem;justify-content:space-between;margin:.8rem 0 .35rem;padding:.6rem .75rem}.share-mode-label{color:#2c3e50;font-weight:600}.share-mode-helper{color:#7f8c8d;font-size:.9rem;margin:0 0 .75rem}.profile-page{padding:0}.profile-title{font-size:2rem;margin:0 0 .2rem}.profile-subtitle{color:#7f8c8d;margin:0 0 1rem}.profile-card{grid-gap:1rem;background:#fff;border-radius:12px;display:grid;gap:1rem;grid-template-columns:220px 1fr;padding:1rem}.profile-photo-wrap{align-items:center;display:flex;flex-direction:column;gap:.7rem}.profile-photo,.profile-photo-fallback{border-radius:50%;height:120px;object-fit:cover;width:120px}.profile-photo-fallback{align-items:center;background:#d5f4e6;color:#27ae60;display:flex;font-size:2rem;font-weight:700;justify-content:center}.profile-upload-btn{background:#eef9f2;border:none;border-radius:8px;color:#1f7f47;cursor:pointer;font-weight:600;padding:.45rem .7rem}.profile-form{display:flex;flex-direction:column;gap:.45rem}.profile-form input{border:1px solid #d9dee5;border-radius:8px;padding:.6rem .75rem}.profile-save-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;margin-top:.5rem;padding:.55rem .8rem;width:-webkit-fit-content;width:fit-content}.profile-message{margin:.3rem 0 0}.profile-message.error{color:#c0392b}.profile-message.success{color:#1f7f47}@media (max-width:768px){.profile-card{grid-template-columns:1fr}}.auth-page{align-items:center;background:#f5f7fa;display:flex;justify-content:center;min-height:100vh;padding:2rem}.auth-card{background:#fff;border-radius:12px;box-shadow:0 2px 12px #00000014;max-width:400px;padding:2rem;width:100%}.auth-brand{margin-bottom:1.5rem;text-align:center}.auth-brand-icon{align-items:center;color:#27ae60;display:inline-flex;height:48px;justify-content:center;margin-bottom:.5rem;width:48px}.auth-brand-icon svg{height:100%;width:100%}.auth-brand-title{color:#2c3e50;font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .25rem}.auth-brand-subtitle{color:#7f8c8d;font-size:.95rem;margin:0}.auth-tabs{background:#f0f0f0;border-radius:10px;display:flex;gap:.25rem;margin-bottom:1.5rem;padding:4px}.auth-tab{background:#0000;border:none;border-radius:8px;color:#2c3e50;cursor:pointer;flex:1 1;font-size:.95rem;font-weight:500;padding:.6rem 1rem;transition:background .2s,color .2s}.auth-tab:hover{background:#ffffffb3}.auth-tab.active{background:#fff;box-shadow:0 1px 2px #0000000f;color:#27ae60}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-label{color:#2c3e50;font-size:.9rem;font-weight:500}.auth-input{border:1px solid #ddd;border-radius:8px;font-size:1rem;padding:.75rem 1rem;transition:border-color .2s}.auth-input:focus{border-color:#27ae60;outline:none}.auth-input:disabled{background:#f5f5f5;cursor:not-allowed}.auth-error{color:#c0392b;font-size:.9rem;margin:0;padding:.5rem 0}.auth-submit{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;margin-top:.25rem;padding:.75rem 1.5rem;transition:background .2s}.auth-submit:hover:not(:disabled){background:#229954}.auth-submit:disabled{cursor:not-allowed;opacity:.7}.auth-switch{color:#7f8c8d;font-size:.9rem;margin:1.25rem 0 0;text-align:center}.auth-switch-btn{background:none;border:none;color:#27ae60;cursor:pointer;font-weight:600;padding:0;text-decoration:underline}.auth-switch-btn:hover{color:#229954}.undo-snackbar{align-items:center;background:#2c3e50;border-radius:10px;bottom:1.2rem;color:#fff;display:flex;gap:.6rem;left:50%;padding:.7rem .9rem;position:fixed;transform:translateX(-50%);z-index:2000}.undo-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;padding:.35rem .6rem}.undo-close-btn{background:#0000;border:none;color:#d7e3ef;cursor:pointer}.App{background:#f5f7fa;min-height:100vh;overflow-x:hidden}.topnav{background:#fff;box-shadow:0 1px 2px #0000000f;box-sizing:border-box;justify-content:space-between;min-height:64px;padding:max(0px,env(safe-area-inset-top,0px)) max(2rem,env(safe-area-inset-right,0px)) 0 max(2rem,env(safe-area-inset-left,0px));position:-webkit-sticky;position:sticky;top:0;z-index:100}.topnav,.topnav-brand{align-items:center;display:flex}.topnav-brand{background:none;border:none;cursor:pointer;font:inherit;gap:.6rem;min-height:44px;min-width:44px;padding:.35rem .25rem}.topnav-brand:hover{opacity:.9}.brand-icon{align-items:center;color:#27ae60;display:flex;height:36px;justify-content:center;width:36px}.brand-logo-svg{height:100%;width:100%}.brand-title{color:#2c3e50;font-size:1.4rem;font-weight:700;letter-spacing:-.02em;margin:0}.topnav-actions{align-items:center;display:flex;flex-shrink:0;gap:.5rem;margin-left:auto}.pages-menu-wrap{position:relative}.pages-menu-trigger{align-items:center;background:#fff;border:1px solid #e6eaef;border-radius:10px;box-sizing:border-box;color:#2c3e50;cursor:pointer;display:inline-flex;font:inherit;font-size:.95rem;font-weight:600;gap:.45rem;min-height:44px;padding:.5rem .75rem;transition:background .2s,border-color .2s,color .2s}.pages-menu-trigger:hover{background:#f8faf9;border-color:#d5ded8}.pages-menu-trigger.open{background:#d5f4e6;border-color:#27ae60;color:#1e8449}.pages-menu-trigger-icon{color:inherit;display:flex}.pages-menu-current{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pages-menu-chevron{border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid #95a5a6;flex-shrink:0;height:0;width:0}.pages-menu-trigger.open .pages-menu-chevron{border-top-color:#27ae60}.pages-menu-dropdown{background:#fff;border:1px solid #e6eaef;border-radius:10px;box-shadow:0 10px 28px #0000001a;max-height:min(70vh,440px);min-width:228px;overflow-y:auto;padding:.35rem;position:absolute;right:0;top:calc(100% + .35rem);z-index:300}.pages-menu-item{align-items:center;background:#0000;border:none;border-radius:8px;box-sizing:border-box;color:#2c3e50;cursor:pointer;display:flex;font:inherit;font-size:.95rem;font-weight:500;gap:.65rem;min-height:44px;padding:.65rem .75rem;text-align:left;width:100%}.pages-menu-item:hover{background:#f5f7fa}.pages-menu-item.active{background:#d5f4e6;color:#27ae60}.pages-menu-item.active .pages-menu-item-icon svg{stroke:#27ae60}.pages-menu-item-icon{display:flex;flex-shrink:0;opacity:.9}.pages-menu-item.active .pages-menu-item-icon{opacity:1}.profile-menu-wrap{position:relative}.profile-menu-trigger{align-items:center;background:#0000;border:none;border-radius:999px;box-sizing:border-box;cursor:pointer;display:flex;gap:.45rem;min-height:44px;padding:.35rem .6rem .35rem .35rem}.profile-menu-trigger:hover{background:#f5f7fa}.profile-trigger-fallback,.profile-trigger-photo{border-radius:50%;height:32px;width:32px}.profile-trigger-photo{object-fit:cover}.profile-trigger-fallback{align-items:center;background:#d5f4e6;color:#27ae60;display:inline-flex;font-weight:700;justify-content:center}.profile-trigger-name{color:#2c3e50;font-size:.9rem;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-menu-dropdown{background:#fff;border:1px solid #e6eaef;border-radius:10px;box-shadow:0 8px 20px #00000014;min-width:170px;padding:.25rem;position:absolute;right:0;top:calc(100% + .35rem);z-index:300}.profile-menu-item{background:#0000;border:none;border-radius:8px;box-sizing:border-box;cursor:pointer;min-height:44px;padding:.65rem .75rem;text-align:left;width:100%}.profile-menu-item:hover{background:#f5f7fa}.profile-menu-item.danger{color:#c0392b}.main-content{margin:0 auto;max-width:1200px;padding:2rem max(2rem,env(safe-area-inset-right,0px)) 2rem max(2rem,env(safe-area-inset-left,0px))}.mobile-bottom-nav{display:none}@media (max-width:768px){.topnav{flex-wrap:wrap;gap:.5rem;min-height:auto;padding:max(.75rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) .75rem max(1rem,env(safe-area-inset-left,0px))}.topnav-actions{justify-content:flex-end;margin-left:0;width:100%}.pages-menu-current{max-width:min(42vw,140px)}.pages-menu-dropdown{left:auto;max-width:calc(100vw - 2rem - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px));right:0}.main-content{padding:1rem max(1rem,env(safe-area-inset-right,0px)) 1rem max(1rem,env(safe-area-inset-left,0px))}}@media (max-width:480px){.mobile-bottom-nav{align-items:stretch;background:#fff;border-top:1px solid #e6eaef;bottom:0;box-shadow:0 -4px 16px #0000000f;display:flex;gap:.1rem;justify-content:space-around;left:0;padding:.25rem max(.35rem,env(safe-area-inset-left,0px)) max(.25rem,env(safe-area-inset-bottom,0px)) max(.35rem,env(safe-area-inset-right,0px));position:fixed;right:0;z-index:90}.mobile-bottom-nav-item{-webkit-tap-highlight-color:transparent;align-items:center;background:none;border:none;color:#7f8c8d;cursor:pointer;display:flex;flex:1 1;flex-direction:column;font-family:inherit;font-size:.62rem;font-weight:600;gap:.1rem;justify-content:center;max-width:20%;min-height:48px;padding:.2rem .15rem}.mobile-bottom-nav-item.active{color:#27ae60}.mobile-bottom-nav-item .mobile-bottom-nav-icon{display:flex;line-height:0}.main-content{padding-bottom:calc(4.85rem + env(safe-area-inset-bottom, 0px))}}
/*# sourceMappingURL=main.1f0f802d.css.map*/