code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.modal-backdrop{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.custom-food-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-height:90vh;max-width:500px;overflow-y:auto;width:100%}.modal-header{margin-bottom:24px;padding:24px 24px 0}.modal-header h2{font-size:24px}.modal-close-button{align-items:center;background:none;border:none;border-radius:6px;color:#666;cursor:pointer;display:flex;font-size:32px;height:40px;justify-content:center;transition:background-color .2s;width:40px}.modal-close-button:hover{background-color:#0000000d}.custom-food-form{box-sizing:border-box;max-width:100%;padding:0 24px 24px}.form-errors{background-color:#ffebee;border:1px solid #e57373;border-radius:6px;margin-bottom:20px;padding:12px}.form-error{color:#c62828;font-size:14px;margin-bottom:4px}.form-error:last-child{margin-bottom:0}.form-group{margin-bottom:16px}.form-group.inline{align-items:center;display:flex;gap:12px;margin-bottom:12px}.form-group.inline.nutrient{justify-content:space-between}.form-label{color:#333;display:block;flex-shrink:0;font-size:14px;font-weight:500;margin-bottom:6px;min-width:fit-content}.form-group.inline .form-label{margin-bottom:0;width:80px}.nutrient-label-container{align-items:center;display:flex;gap:4px}.input-unit{flex-shrink:0}.form-group.inline.nutrient .form-label{width:auto}.form-input{border:1px solid #e0e0e0;border-radius:6px;box-sizing:border-box;font-size:16px;min-width:0;padding:12px 16px;transition:border-color .2s,box-shadow .2s;width:100%}.form-input.name-input{flex:1 1;min-width:200px}.form-input.nutrient-input{flex-shrink:0;margin-left:auto;text-align:right;width:80px}.form-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a;outline:none}.form-input::placeholder{color:#999}.portions-section{border-top:1px solid #e0e0e0;margin-top:24px;padding-top:20px}.portions-title{color:#333;font-size:16px;font-weight:600;margin:0 0 8px}.portions-description{color:#666;font-size:14px;margin:0 0 16px}.add-portion-button:hover{background:#1976d2}.portion-item{padding:10px 14px}.portion-name{margin-right:8px}.portion-grams{color:#666;font-size:14px}.portion-nutrients{align-items:center;gap:12px}.nutrition-preview{background:#f0f7ff;border:1px solid #e3f2fd;border-radius:8px;margin:20px 0;padding:12px 16px}.preview-title{color:#555;font-size:14px;font-weight:600;margin:0 0 8px}.preview-nutrients{align-items:center;display:flex;gap:16px}.preview-carbs{color:#2196f3;font-size:16px;font-weight:600}.preview-fpu{color:#8e24aa;font-size:14px;font-weight:500}.dark .nutrition-preview{background:#2a3f5f;border-color:#1e3a5f}.dark .preview-title{color:#ccc}.dark .preview-carbs{color:#64b5f6}.dark .preview-fpu{color:#ce93d8}.form-actions{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:20px}.cancel-button{background:#fff;border:1px solid #e0e0e0;border-radius:6px;color:#666;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s}.cancel-button:hover{background-color:#f5f5f5;border-color:#ccc}.submit-button{background:#2196f3;border:1px solid #2196f3;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s}.submit-button:hover{background-color:#1976d2;border-color:#1976d2}.dark .custom-food-modal{background:#333;color:#f0f0f0}.dark .modal-header{border-color:#555}.dark .modal-header h2{color:#f0f0f0}.dark .modal-close-button{color:#ccc}.dark .modal-close-button:hover{background-color:#ffffff1a}.dark .form-errors{background-color:#4a2c2a;border-color:#d32f2f}.dark .form-error{color:#f48fb1}.dark .form-label{color:#f0f0f0}.dark .form-input{background:#444;border-color:#555;color:#f0f0f0}.dark .form-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f333}.dark .form-input::placeholder{color:#888}.dark .cancel-button{background:#444;border-color:#555;color:#ccc}.dark .cancel-button:hover{background-color:#555;border-color:#666}.dark .portions-section{border-color:#555}.dark .portions-title{color:#f0f0f0}.dark .portion-grams,.dark .portions-description{color:#ccc}.dark .form-actions{border-color:#555}@media (max-width:600px){.modal-backdrop{padding:10px}.custom-food-modal{max-height:95vh}.modal-header{margin-bottom:20px;padding:20px 20px 0}.modal-header h2{font-size:20px}.modal-close-button{font-size:28px;height:36px;width:36px}.custom-food-form{padding:0 20px 20px}.form-actions{flex-direction:column-reverse}.cancel-button,.submit-button{justify-content:center;width:100%}.portion-inputs{gap:6px}.add-portion-button{font-size:13px;padding:6px 8px}.portion-item{align-items:flex-start;flex-direction:column;gap:8px}.remove-portion-button{align-self:flex-end}}.search-results{display:flex;flex-direction:column;gap:12px;margin-top:20px}.food-card{background:#fff;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000001a;cursor:pointer;padding:20px 20px 28px;position:relative;transition:all .2s ease}.food-card:hover{box-shadow:0 4px 16px #00000026;transform:translateY(-2px)}.food-name{color:#333;font-size:18px;font-weight:500;gap:8px;justify-content:space-between;line-height:1.3;margin:0 0 16px}.food-name,.food-name-text{align-items:flex-start;display:flex}.food-name-text{flex:1 1;gap:6px;min-width:0;overflow:hidden}.food-actions{align-items:center;display:flex;flex-shrink:0;gap:4px}.delete-button,.edit-button,.favorite-button,.load-button{align-items:center;background:none;border:none;border-radius:4px;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:4px;transition:all .2s ease}.favorite-button:hover{background-color:#ffc1071a}.edit-button:hover,.load-button:hover{background-color:#2196f31a}.delete-button:hover{background-color:#f443361a}.delete-icon,.edit-icon,.load-icon,.star-icon{height:20px;transition:all .2s ease;width:20px}.star-icon{fill:none;stroke:#ffc107;stroke-width:2}.edit-icon,.load-icon{fill:#2196f3}.delete-icon{fill:#f44336}.favorite-button.favorited .star-icon{fill:#ffc107;stroke:#ffc107}.portions-container{display:flex;flex-direction:column;gap:8px;padding-bottom:20px;position:relative}.portion-display{align-items:center;background-color:#f8f9fa;border:1px solid #0000;border-radius:8px;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:8px 12px;transition:all .2s}.portion-display:hover{background-color:#f0f1f3}.portion-desc{color:#666;flex:1 1}.portion-nutrients{align-items:flex-end;display:flex;flex-direction:column;gap:2px}.portion-fpu{align-items:center;color:#666;display:flex;gap:4px}.fpu-value{color:#8e24aa;font-weight:600}.portion-display.selected{background-color:#e3f2fd;border:1px solid #2196f3}.portion-display.selected .portion-desc{color:#1976d2;font-weight:500}.more-portions{background-color:#f0f0f0;border-radius:6px;color:#666;font-size:11px;font-style:italic;line-height:1.2;overflow:hidden;padding:4px 8px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.dark .food-card{background:#333;border-color:#555}.dark .food-name{color:#f0f0f0}.dark .portion-display{background-color:#404040}.dark .portion-display:hover{background-color:#4a4a4a}.dark .portion-desc{color:#ccc}.dark .portion-display.selected{background-color:#1e3a5f;border-color:#2196f3}.dark .portion-display.selected .portion-desc{color:#64b5f6}.dark .more-portions{background-color:#404040;color:#aaa}.dark .portion-fpu{color:#aaa}.dark .fpu-value{color:#ce93d8}.card-source-attribution{bottom:8px;color:#999;font-size:10px;position:absolute;right:12px}.card-source-attribution a{color:#999;text-decoration:none}.card-source-attribution a:hover{color:#777;text-decoration:underline}.dark .card-source-attribution,.dark .card-source-attribution a{color:#777}.dark .card-source-attribution a:hover{color:#999}.portion-wrapper{position:relative}.share-button-overlay{display:flex;flex-direction:column;gap:8px;position:absolute;right:-40px;top:0;z-index:10}.recipe-button,.share-button{align-items:center;background:#fff;border:2px solid #2196f3;border-radius:8px;box-shadow:0 4px 12px #0003;cursor:pointer;display:flex;height:52px;justify-content:center;transition:all .2s;width:52px}.recipe-button{border-color:#4caf50}.recipe-button:hover,.share-button:hover{background:#f5f5f5;box-shadow:0 6px 16px #00000040;transform:translateY(-2px)}.recipe-icon,.share-icon{fill:#2196f3;height:24px;width:24px}.recipe-icon{fill:#4caf50}.dark .recipe-button,.dark .share-button{background:#444;border-color:#2196f3;box-shadow:0 4px 12px #0006}.dark .recipe-button{border-color:#66bb6a}.dark .recipe-button:hover,.dark .share-button:hover{background:#555;box-shadow:0 6px 16px #00000080}.dark .recipe-icon,.dark .share-icon{fill:#64b5f6}.dark .recipe-icon{fill:#81c784}.dark .favorite-button:hover{background-color:#ffc10733}.dark .edit-button:hover,.dark .load-button:hover{background-color:#2196f333}.dark .delete-button:hover{background-color:#f4433633}.dark .star-icon{stroke:#ffd54f}.dark .edit-icon,.dark .load-icon{fill:#64b5f6}.dark .delete-icon{fill:#f48fb1}.dark .favorite-button.favorited .star-icon{fill:#ffd54f;stroke:#ffd54f}@media (max-width:768px){.food-card{padding:16px}.food-name{font-size:16px;line-height:1.2;margin-bottom:12px}.portions-container{padding-bottom:16px}.more-portions{border-radius:3px;font-size:9px;line-height:1.1;margin-top:2px;padding:1px 4px}.delete-icon,.edit-icon,.load-icon,.star-icon{height:18px;width:18px}.delete-button,.edit-button,.favorite-button,.load-button{padding:2px}.food-actions{gap:2px}.share-button-overlay{gap:4px;right:-20px}.recipe-button,.share-button{height:44px;width:44px}.recipe-icon,.share-icon{height:20px;width:20px}}.disclaimer-backdrop{align-items:center;animation:fadeIn .3s ease forwards;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;opacity:0;padding:20px;position:fixed;right:0;top:0;z-index:2000}.disclaimer-modal{animation:scaleIn .3s ease forwards;background:#fff;border-radius:12px;box-shadow:0 10px 30px #0000004d;display:flex;flex-direction:column;max-height:80vh;max-width:500px;transform:scale(.9);width:100%}.disclaimer-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:24px 24px 16px}.disclaimer-title{color:#333;font-size:20px;font-weight:600;margin:0}.disclaimer-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;transition:background-color .2s;width:32px}.disclaimer-close:hover{background-color:#0000001a}.disclaimer-content{flex:1 1;overflow-y:auto;padding:24px}.disclaimer-paragraph{color:#333;font-size:14px;line-height:1.6;margin:0 0 16px}.disclaimer-paragraph:last-child{margin-bottom:0}.disclaimer-footer{border-top:1px solid #e0e0e0;display:flex;justify-content:center;padding:16px 24px 24px}.disclaimer-button{background:#2196f3;border:none;border-radius:8px;box-shadow:0 2px 4px #2196f34d;color:#fff;cursor:pointer;font-size:16px;font-weight:500;padding:12px 32px;transition:all .2s}.disclaimer-button:hover{background:#1976d2;box-shadow:0 4px 8px #2196f366;transform:translateY(-1px)}.dark .disclaimer-modal{background:#333;border:1px solid #555}.dark .disclaimer-header{border-color:#555}.dark .disclaimer-title{color:#f0f0f0}.dark .disclaimer-close{color:#ccc}.dark .disclaimer-close:hover{background-color:#ffffff1a}.dark .disclaimer-paragraph{color:#e0e0e0}.dark .disclaimer-footer{border-color:#555}@keyframes scaleIn{0%{transform:scale(.9)}to{transform:scale(1)}}@media (max-width:600px){.disclaimer-backdrop{padding:10px}.disclaimer-modal{max-height:90vh}.disclaimer-header{padding:20px 20px 0}.disclaimer-content{padding:20px}.disclaimer-footer{padding:12px 20px 20px}.disclaimer-button{width:100%}}.advanced-options{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin:12px 0;overflow:hidden}.options-content{flex-wrap:wrap;gap:16px;padding:12px}.option-group,.options-content{align-items:center;display:flex}.option-group{flex-direction:row;gap:8px;min-width:auto}.option-label{color:#333;font-size:14px;font-weight:500}.custom-select-wrapper{display:inline-block;position:relative}.unit-selector{appearance:none;background:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath d='m3 5 3 3 3-3' stroke='%23666' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:14px;outline:none;padding:6px 24px 6px 10px;text-indent:-9999px;transition:border-color .2s;width:60px}.unit-selector:focus{border-color:#2196f3}.unit-selector option{color:#333;text-indent:0}.select-display{color:#333;font-size:14px;font-weight:500;left:10px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);z-index:1}.custom-portion-input{align-items:center;display:flex;gap:8px}.portion-input{border:1px solid #ddd;border-radius:6px;flex:1 1;font-size:14px;outline:none;padding:8px 12px;transition:border-color .2s}.portion-input:focus{border-color:#2196f3}.input-unit{color:#666;font-size:14px;font-weight:500}.checkbox-label{align-items:center;cursor:pointer;display:flex;font-size:14px;gap:8px}.fpu-checkbox{accent-color:#2196f3;cursor:pointer;height:16px;width:16px}.checkbox-text{-webkit-user-select:none;user-select:none}.fpu-info-button{align-items:center;background:#fff;border:1px solid #ddd;border-radius:50%;color:#666;cursor:pointer;display:flex;font-size:12px;font-weight:700;height:20px;justify-content:center;margin-left:8px;transition:all .2s;width:20px}.fpu-info-button:hover{background:#f5f5f5;border-color:#bbb}.dark .advanced-options{background:#333;border-color:#555}.dark .option-label{color:#f0f0f0}.dark .unit-selector{background:#444;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath d='m3 5 3 3 3-3' stroke='%23bbb' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-color:#555;color:#f0f0f0}.dark .portion-input,.dark .unit-selector option{background:#444;color:#f0f0f0}.dark .portion-input{border-color:#555}.dark .portion-input:focus,.dark .unit-selector:focus{border-color:#2196f3;outline:none}.dark .unit-selector option:checked{background:#3a3a3a;color:#fff}.dark .select-display{color:#f0f0f0}.dark .input-unit{color:#ccc}.dark .checkbox-label{color:#f0f0f0}.dark .fpu-checkbox{accent-color:#64b5f6}.dark .fpu-info-button{background:#444;border-color:#555;color:#bbb}.dark .fpu-info-button:hover{background:#555;border-color:#666}@media (max-width:600px){.options-content{gap:12px;padding:10px}.option-group{min-width:auto}.option-label{font-size:13px;white-space:nowrap}.portion-input,.unit-selector{font-size:13px;padding:6px 8px}}.modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-height:90vh;overflow-y:auto;position:relative;width:100%}.modal-header{align-items:center;background:#fff;border-bottom:1px solid #e0e0e0;border-radius:12px 12px 0 0;display:flex;justify-content:space-between;padding:20px 24px 16px;position:sticky;top:0;z-index:10}.modal-header h2{color:#333;font-size:1.25rem;font-weight:600;margin:0}.close-button{background:none;border:none;border-radius:4px;color:#666;cursor:pointer;font-size:1.5rem;line-height:1;padding:4px 8px;transition:all .2s}.close-button:hover{background:#f0f0f0;color:#333}.barcode-scanner-modal{max-height:90vh;max-width:500px;overflow:hidden;padding:0;width:95vw}.scanner-container{align-items:center;background:#000;border-radius:0 0 8px 8px;display:flex;justify-content:center;min-height:400px;position:relative}.scanner-video{display:block;height:400px;object-fit:cover;width:100%}.scanner-overlay{align-items:center;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0}.scan-frame{border:2px solid #ffffff4d;border-radius:8px;height:200px;position:relative;width:280px}.scan-corners{bottom:0;left:0;position:absolute;right:0;top:0}.corner{border:3px solid #fff;height:20px;position:absolute;width:20px}.corner.top-left{border-bottom:none;border-right:none;border-top-left-radius:8px;left:-3px;top:-3px}.corner.top-right{border-bottom:none;border-left:none;border-top-right-radius:8px;right:-3px;top:-3px}.corner.bottom-left{border-bottom-left-radius:8px;border-right:none;border-top:none;bottom:-3px;left:-3px}.corner.bottom-right{border-bottom-right-radius:8px;border-left:none;border-top:none;bottom:-3px;right:-3px}.scanner-instructions{background:#000000b3;border-radius:20px;bottom:20px;color:#fff;font-size:14px;left:50%;padding:8px 16px;position:absolute;text-align:center;transform:translateX(-50%)}.scanner-error{align-items:center;color:#666;display:flex;flex-direction:column;justify-content:center;min-height:300px;padding:40px 20px;text-align:center}.error-icon{font-size:48px;margin-bottom:16px}.scanner-error p{font-size:16px;line-height:1.4;margin:0 0 24px}.scanner-buttons{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.cancel-button,.retry-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;padding:10px 20px;transition:background-color .2s}.retry-button{background:#007bff;color:#fff}.retry-button:hover{background:#0056b3}.cancel-button{background:#6c757d;color:#fff}.cancel-button:hover{background:#545b62}[data-theme=dark] .scanner-error{color:#ccc}[data-theme=dark] .retry-button{background:#0d6efd}[data-theme=dark] .retry-button:hover{background:#0b5ed7}[data-theme=dark] .cancel-button{background:#6c757d}[data-theme=dark] .cancel-button:hover{background:#5c636a}[data-theme=dark] .modal-content{background:#2a2a2a;color:#e0e0e0}[data-theme=dark] .modal-header{background:#2a2a2a;border-bottom-color:#444}[data-theme=dark] .modal-header h2{color:#e0e0e0}[data-theme=dark] .close-button{color:#ccc}[data-theme=dark] .close-button:hover{background:#404040;color:#e0e0e0}.search-container{margin:0 auto;max-width:800px;width:100%}.search-input{padding:12px 16px}.search-input:focus{border-color:#2196f3;box-shadow:0 4px 12px #2196f333}.app-main.landing .search-input{border-radius:24px;font-size:18px;margin:0 auto;max-width:600px;padding:16px 20px}.app-main.landing .search-input-container{margin:0 auto;max-width:600px}.load-more-button{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;color:#666;cursor:pointer;font-size:14px;margin-top:20px;padding:12px 16px;transition:all .2s;width:100%}.load-more-button:hover{background:#e9ecef;border-color:#d3d3d3}.dark .search-input{background-color:#333;border-color:#555;box-shadow:0 2px 8px #0000004d;color:#fff}.dark .search-input:focus{border-color:#2196f3;box-shadow:0 4px 12px #2196f34d}.dark .load-more-button{background:#404040;border-color:#555;color:#ccc}.dark .load-more-button:hover{background:#4a4a4a;border-color:#666}.search-input-container{margin:0 0 20px;position:relative;width:100%}.search-input{-webkit-text-size-adjust:100%;border:2px solid #e0e0e0;border-radius:8px;box-shadow:0 2px 8px #0000001a;font-size:16px;outline:none;padding:12px 60px 12px 16px;position:relative;transition:all .3s ease;width:100%;z-index:10}.barcode-button{align-items:center;background:#0000;border:none;border-radius:6px;cursor:pointer;display:flex;font-size:18px;height:40px;justify-content:center;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:all .2s ease;width:40px;z-index:11}.barcode-button:hover:not(:disabled){background:#2196f31a;border-radius:6px}.barcode-button:active:not(:disabled){transform:translateY(-50%) translateY(1px)}.barcode-button.disabled{background:#0000;cursor:not-allowed;opacity:.4}.barcode-button.no-permission{background:#f443361a}.barcode-button.no-permission:hover{background:#f4433633}.barcode-icon{display:inline-block;transition:transform .2s}.barcode-icon.blocked{position:relative}.barcode-icon.blocked:after{background:#f44336;content:"";height:2px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) rotate(45deg);width:150%;z-index:1}.dark .barcode-button{background:#0000;color:#ccc}.dark .barcode-button:hover:not(:disabled){background:#2196f333}.dark .barcode-button.disabled{background:#0000;opacity:.4}.dark .barcode-button.no-permission{background:#f4433633}.dark .barcode-button.no-permission:hover{background:#f443364d}.no-results{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;color:#666;margin:20px 0;padding:40px 20px;text-align:center}.no-results-icon{font-size:48px;margin-bottom:16px}.no-results-text{color:#495057;font-size:18px;font-weight:500;margin:0 0 12px}.no-results-hint{color:#6c757d;font-size:14px;line-height:1.4;margin:0}.dark .no-results{background:#343a40;border-color:#495057;color:#ced4da}.dark .no-results-text{color:#e9ecef}.dark .no-results-hint{color:#adb5bd}@media (max-width:480px){.barcode-button{font-size:16px;height:36px;right:6px;width:36px}.search-input{padding-right:50px}.no-results{margin:16px 0;padding:30px 16px}.no-results-icon{font-size:36px;margin-bottom:12px}.no-results-text{font-size:16px}.no-results-hint{font-size:13px}}.menu-container{position:relative}.menu-button{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 2px 4px #0000001a;cursor:pointer;display:flex;justify-content:center;padding:8px 12px;transition:all .2s}.menu-button:hover{background-color:#f5f5f5;box-shadow:0 4px 8px #00000026}.menu-dots{align-items:center;display:flex;flex-direction:column;gap:2px;height:16px;justify-content:center;width:16px}.dot{background-color:#333;border-radius:50%;height:3px;width:3px}.menu-backdrop{animation:fadeIn .2s ease forwards;background-color:#0000004d;bottom:0;left:0;opacity:0;z-index:999}.menu-backdrop,.menu-panel{position:fixed;right:0;top:0}.menu-panel{background:#fff;box-shadow:-4px 0 20px #00000026;display:flex;flex-direction:column;height:100vh;transform:translateX(100%);transition:transform .3s ease;width:320px;z-index:1000}.menu-panel-open{transform:translateX(0)}.menu-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px}.menu-header h3{color:#333;font-size:18px;font-weight:600;margin:0}.menu-close{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;transition:background-color .2s;width:32px}.menu-close:hover{background-color:#0000001a}.menu-content{flex:1 1;overflow-y:auto;padding:16px 0}.menu-item{align-items:center;border-bottom:1px solid #f0f0f0;cursor:pointer;display:flex;padding:16px 24px;transition:background-color .2s}.menu-item:hover{background-color:#f8f9fa}.menu-item:last-child{border-bottom:none}.menu-item-disabled{cursor:not-allowed;opacity:.5}.menu-item-disabled:hover{background-color:initial}.menu-divider{background-color:#e0e0e0;height:1px;margin:16px 24px}.menu-item-icon{display:flex;font-size:20px;justify-content:center;margin-right:16px;width:24px}.menu-item-content{flex:1 1}.menu-item-label{color:#333;font-size:16px;font-weight:500;margin-bottom:2px}.menu-item-value{color:#666;font-size:14px}.menu-dropdown{appearance:none;background:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;border:1px solid #e0e0e0;border-radius:6px;color:#333;cursor:pointer;font-size:14px;margin-top:4px;padding:8px 36px 8px 12px;transition:all .2s;width:100%}.menu-dropdown:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333;outline:none}.menu-dropdown:hover{border-color:#ccc}.dark .menu-button{background:#444;border-color:#555;color:#f0f0f0}.dark .menu-button:hover{background-color:#555}.dark .dot{background-color:#f0f0f0}.dark .menu-panel{background:#333;box-shadow:-4px 0 20px #0000004d}.dark .menu-header{background:#2a2a2a;border-color:#555}.dark .menu-header h3{color:#f0f0f0}.dark .menu-close{color:#ccc}.dark .menu-close:hover{background-color:#ffffff1a}.dark .menu-item{border-color:#444}.dark .menu-item:hover{background-color:#3a3a3a}.dark .menu-item-disabled:hover{background-color:initial}.dark .menu-divider{background-color:#555}.dark .menu-item-label{color:#f0f0f0}.dark .menu-item-value{color:#ccc}.dark .menu-dropdown{background:#444;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f0f0f0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;border-color:#555;color:#f0f0f0}.dark .menu-dropdown:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.dark .menu-dropdown:hover{border-color:#777}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:600px){.menu-panel{width:100vw}.menu-header{padding:16px 20px}.menu-item{padding:14px 20px}.menu-item-icon{font-size:18px;margin-right:12px;width:20px}.menu-item-label{font-size:15px}.menu-item-value{font-size:13px}}.legal-page{background:#fff;bottom:0;left:0;overflow-y:auto;padding:0;position:fixed;right:0;top:0;z-index:1500}.legal-header{background:#fff;border-bottom:1px solid #e0e0e0;padding:20px;position:sticky;top:0;z-index:10}.legal-back-button{background:none;border:none;color:#2196f3;cursor:pointer;font-size:16px;margin-bottom:16px;padding:8px 0;transition:color .2s}.legal-back-button:hover{color:#1976d2}.legal-title{color:#333;font-size:24px;font-weight:600;margin:0}.legal-content{margin:0 auto;max-width:800px;padding:20px}.legal-section{margin-bottom:32px}.legal-section-title{border-bottom:2px solid #2196f3;color:#333;font-size:18px;font-weight:600;margin:0 0 16px;padding-bottom:8px}.legal-paragraph{color:#555;font-size:14px;line-height:1.6;margin:0 0 12px}.legal-paragraph:last-child{margin-bottom:0}.dark .legal-page{background:#1a1a1a}.dark .legal-header{background:#1a1a1a;border-color:#555}.dark .legal-back-button{color:#64b5f6}.dark .legal-back-button:hover{color:#90caf9}.dark .legal-title{color:#f0f0f0}.dark .legal-section-title{border-color:#64b5f6;color:#f0f0f0}.dark .legal-paragraph{color:#ccc}@media (max-width:600px){.legal-content,.legal-header{padding:16px}.legal-title{font-size:20px}.legal-section-title{font-size:16px}.legal-section{margin-bottom:24px}}.recipe-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-height:90vh;max-width:600px;overflow-y:auto;width:100%}.empty-recipe{color:#666;padding:40px 24px;text-align:center}.recipe-content{padding:0 24px 24px}.ingredients-list{margin-bottom:16px}.ingredients-list h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.ingredient-item{align-items:center;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:4px;min-height:32px;padding:6px 10px}.ingredient-info{flex:1 1;min-width:0}.ingredient-compact{justify-content:space-between}.ingredient-compact,.ingredient-left{flex:1 1}.ingredient-compact,.ingredient-left,.ingredient-right{align-items:center;display:flex;gap:8px}.ingredient-name{color:#333;font-weight:500}.ingredient-portion{color:#666;font-size:14px}.ingredient-nutrients{align-items:center;display:flex;gap:12px}.ingredient-carbs{color:#2196f3;font-size:14px;font-weight:600}.ingredient-fpu{color:#8e24aa;font-size:12px;font-weight:500}.remove-ingredient-button{align-items:center;background:none;border:none;border-radius:50%;color:#f44336;cursor:pointer;display:flex;flex-shrink:0;font-size:20px;font-weight:700;height:28px;justify-content:center;transition:background-color .2s;width:28px}.remove-ingredient-button:hover{background:#f443361a}.recipe-portions,.recipe-totals{margin-bottom:16px;padding-top:12px}.recipe-portions h3,.recipe-totals h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.add-portion{margin-bottom:16px}.portion-inputs{align-items:stretch;box-sizing:border-box;display:flex;gap:8px;width:100%}.portion-name-input{flex:2 1}.portion-grams-input,.portion-name-input{border:1px solid #e0e0e0;border-radius:6px;box-sizing:border-box;font-size:14px;min-width:0;padding:8px 12px;transition:border-color .2s,box-shadow .2s}.portion-grams-input{flex:1 1}.portion-grams-input:focus,.portion-name-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a;outline:none}.add-portion-button{background:#2196f3;border:none;border-radius:6px;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;font-weight:500;min-width:fit-content;padding:8px 12px;transition:background-color .2s;white-space:nowrap}.add-portion-button:hover:not(:disabled){background:#1976d2}.add-portion-button:disabled{background:#ccc;cursor:not-allowed}.portions-list{display:flex;flex-direction:column;gap:8px}.portion-item{align-items:center;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;display:flex;justify-content:space-between;padding:12px 16px}.portion-info{flex:1 1;min-width:0}.portion-name{color:#333;font-weight:500;margin-bottom:4px}.portion-details{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.portion-weight{color:#666;font-size:14px}.portion-carbs{color:#2196f3;font-size:14px;font-weight:600}.portion-fpu{color:#8e24aa;font-size:12px;font-weight:500}.remove-portion-button{align-items:center;background:none;border:none;border-radius:50%;color:#f44336;cursor:pointer;display:flex;flex-shrink:0;font-size:18px;font-weight:700;height:24px;justify-content:center;transition:background-color .2s;width:24px}.remove-portion-button:hover{background:#f443361a}.totals-display{background:#f0f7ff;border:1px solid #e3f2fd;border-radius:6px;padding:8px 12px}.total-item{align-items:center;display:flex;gap:12px;margin-bottom:4px}.total-item .carbs-label{margin-left:auto}.total-item:last-child{margin-bottom:0}.total-label{color:#555;font-weight:500}.total-value{color:#333;font-weight:600}.total-value.carbs-value{color:#2196f3;font-size:16px}.total-value.fpu-value{color:#8e24aa}.recipe-actions{display:flex;gap:12px;justify-content:flex-end;padding-top:12px}.clear-recipe-button,.save-recipe-button,.update-recipe-button{border:1px solid;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s}.clear-recipe-button{background:#fff;border-color:#f44336;color:#f44336}.clear-recipe-button:hover{background:#ffebee}.update-recipe-button{background:#ff9800;border-color:#ff9800;color:#fff}.update-recipe-button:hover{background:#f57c00;border-color:#f57c00}.save-recipe-button{background:#4caf50;border-color:#4caf50;color:#fff}.save-recipe-button:hover{background:#388e3c;border-color:#388e3c}.save-dialog-overlay{align-items:center;background:#00000080;border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.save-dialog{background:#fff;border-radius:8px;box-shadow:0 8px 32px #0000004d;max-width:400px;padding:24px;width:90%}.save-dialog h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.recipe-name-input{border:1px solid #e0e0e0;border-radius:6px;box-sizing:border-box;font-size:16px;margin-bottom:20px;padding:12px 16px;width:100%}.recipe-name-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a;outline:none}.save-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.cancel-save-button,.confirm-save-button{border:1px solid;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.cancel-save-button{background:#fff;border-color:#e0e0e0;color:#666}.cancel-save-button:hover{background:#f5f5f5;border-color:#ccc}.confirm-save-button{background:#4caf50;border-color:#4caf50;color:#fff}.confirm-save-button:hover:not(:disabled){background:#388e3c;border-color:#388e3c}.confirm-save-button:disabled{background:#ccc;border-color:#ccc;cursor:not-allowed}.dark .recipe-modal{background:#333;color:#f0f0f0}.dark .empty-recipe{color:#ccc}.dark .ingredients-list h3,.dark .recipe-portions h3,.dark .recipe-totals h3{color:#f0f0f0}.dark .portion-grams-input,.dark .portion-name-input{background:#444;border-color:#555;color:#f0f0f0}.dark .portion-grams-input:focus,.dark .portion-name-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f333}.dark .portion-grams-input::placeholder,.dark .portion-name-input::placeholder{color:#888}.dark .add-portion-button:disabled{background:#555;color:#888}.dark .portion-item{background:#404040;border-color:#555}.dark .portion-name{color:#f0f0f0}.dark .portion-weight{color:#ccc}.dark .portion-carbs{color:#64b5f6}.dark .portion-fpu{color:#ce93d8}.dark .remove-portion-button{color:#f48fb1}.dark .remove-portion-button:hover{background:#f48fb133}.dark .ingredient-item{background:#404040;border-color:#555}.dark .ingredient-name{color:#f0f0f0}.dark .ingredient-portion{color:#ccc}.dark .ingredient-compact .ingredient-name{color:#f0f0f0}.dark .ingredient-compact .ingredient-portion{color:#ccc}.dark .ingredient-fpu{color:#ce93d8}.dark .totals-display{background:#2a3f5f;border-color:#1e3a5f}.dark .total-label{color:#ccc}.dark .total-value{color:#f0f0f0}.dark .total-value.carbs-value{color:#64b5f6}.dark .total-value.fpu-value{color:#ce93d8}.dark .clear-recipe-button{background:#444;border-color:#f48fb1;color:#f48fb1}.dark .clear-recipe-button:hover{background:#f48fb133}.dark .update-recipe-button{background:#ff9800;border-color:#ff9800}.dark .update-recipe-button:hover{background:#f57c00;border-color:#f57c00}.dark .save-recipe-button{background:#4caf50;border-color:#4caf50}.dark .save-recipe-button:hover{background:#388e3c;border-color:#388e3c}.dark .remove-ingredient-button{color:#f48fb1}.dark .remove-ingredient-button:hover{background:#f48fb133}.dark .save-dialog{background:#444;color:#f0f0f0}.dark .save-dialog h3{color:#f0f0f0}.dark .recipe-name-input{background:#555;border-color:#666;color:#f0f0f0}.dark .recipe-name-input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f333}.dark .cancel-save-button{background:#555;border-color:#666;color:#ccc}.dark .cancel-save-button:hover{background:#666;border-color:#777}.dark .confirm-save-button:disabled{background:#555;border-color:#555;color:#888}@media (max-width:600px){.recipe-modal{margin:10px;max-height:95vh}.recipe-content{padding:0 16px 16px}.modal-header{padding:16px 16px 0}.ingredient-item{align-items:flex-start;flex-direction:column;gap:6px;padding:8px 10px}.ingredient-info{width:100%}.remove-ingredient-button{align-self:flex-end}.recipe-actions{flex-direction:column-reverse}.clear-recipe-button,.save-recipe-button,.update-recipe-button{justify-content:center;width:100%}.save-dialog{margin:20px;padding:20px}.save-dialog-actions{flex-direction:column-reverse}.cancel-save-button,.confirm-save-button{justify-content:center;width:100%}.portion-inputs{gap:6px}.add-portion-button{font-size:13px;padding:6px 8px}.portion-item{align-items:flex-start;flex-direction:column;gap:8px}.portion-info{width:100%}.remove-portion-button{align-self:flex-end}}.modal-header-content{flex:1 1;min-width:0}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fafafa;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;transition:background-color .3s,color .3s}.dark body{background-color:#1a1a1a;color:#f0f0f0}.App{display:flex;flex-direction:column;min-height:100vh}.app-header{background:#fff;border-bottom:1px solid #e0e0e0;box-shadow:0 1px 3px #0000001a;justify-content:space-between;padding:16px 20px}.app-header,.header-content{align-items:center;display:flex}.header-content{gap:12px}.header-logo{height:36px;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;width:auto}.app-title{color:#2196f3;font-size:32px;font-weight:300;margin:0}.top-controls{align-items:center;display:flex;gap:12px}.control-button{background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 2px 4px #0000001a;color:#333;cursor:pointer;font-size:14px;padding:8px 12px;transition:all .2s}.control-button:hover{background-color:#f5f5f5;box-shadow:0 4px 8px #00000026}.dark .app-header{background:#333;border-color:#555}.dark .control-button{background:#444;border-color:#555;color:#f0f0f0}.dark .control-button:hover{background-color:#555}.app-main{flex:1 1;margin:0 auto;max-width:800px;padding:20px;width:100%}.app-main.landing{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:80vh;text-align:center}.app-main.has-searched{padding-top:20px}.landing-content{align-items:center;display:flex;flex-direction:column;gap:24px}.landing-logo{animation:bounce 2s infinite;height:120px;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;width:auto}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.landing-title{color:#2196f3;font-size:96px;font-weight:300;margin:0}.top-controls-landing{align-items:center;display:flex;gap:12px;position:absolute;right:20px;top:20px}.error,.loading{align-items:center;display:flex;font-size:20px;height:100vh;justify-content:center}.error{color:#f44336}@media (max-width:600px){.app-header{padding:12px 16px}.header-content{flex:1 1;gap:8px;min-width:0}.app-title{font-size:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-logo{height:24px;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.landing-title{font-size:64px}.landing-logo{height:80px;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.landing-content{gap:16px}.app-main.landing{min-height:70vh;padding:20px}.top-controls-landing{gap:8px;right:16px;top:16px}.control-button{font-size:12px;padding:6px 10px}}.offline-banner,.update-banner{align-items:center;display:flex;gap:12px;justify-content:center;left:0;padding:12px;position:fixed;right:0;text-align:center;top:0;z-index:1000}.update-banner{background-color:#2196f3;color:#fff}.fab-container{bottom:24px;display:flex;flex-direction:row-reverse;gap:16px;position:fixed;right:24px;z-index:100}.fab{align-items:center;border:none;border-radius:50%;cursor:pointer;display:flex;height:56px;justify-content:center;position:relative;transition:all .3s ease;width:56px}.fab:hover{transform:scale(1.1)}.fab svg{height:24px;width:24px}.fab.add-food-fab{background:#2196f3;box-shadow:0 4px 12px #2196f366;color:#fff}.fab.add-food-fab:hover{background:#1976d2;box-shadow:0 6px 16px #2196f380}.fab.recipe-fab{background:#4caf50;box-shadow:0 4px 12px #4caf5066;color:#fff}.fab.recipe-fab:hover{background:#388e3c;box-shadow:0 6px 16px #4caf5080}.fab.offline-indicator{background:#ff9800;box-shadow:0 4px 12px #ff980066;color:#fff}.fab.offline-indicator:hover{background:#f57c00;box-shadow:0 6px 16px #ff980080}.recipe-fab-badge{align-items:center;background:#f44336;border-radius:50%;color:#fff;display:flex;font-size:12px;font-weight:700;height:20px;justify-content:center;min-width:20px;position:absolute;right:-4px;top:-4px;width:20px}.dark .fab.add-food-fab{background:#2196f3;box-shadow:0 4px 12px #2196f399}.dark .fab.add-food-fab:hover{background:#1976d2;box-shadow:0 6px 16px #2196f3b3}.dark .fab.recipe-fab{background:#4caf50;box-shadow:0 4px 12px #4caf5099}.dark .fab.recipe-fab:hover{background:#388e3c;box-shadow:0 6px 16px #4caf50b3}.dark .fab.offline-indicator{background:#ff9800;box-shadow:0 4px 12px #ff980099}.dark .fab.offline-indicator:hover{background:#f57c00;box-shadow:0 6px 16px #ff9800b3}.database-loading-banner{background-color:#f5f5f5;border-bottom:1px solid #e0e0e0;font-size:14px;padding:8px 16px}.database-progress{flex-wrap:wrap;gap:16px;justify-content:center}.database-progress,.db-status{align-items:center;display:flex}.db-status{border-radius:12px;font-size:13px;gap:4px;padding:4px 8px;transition:all .3s ease}.db-status:first-child{background-color:#e8f5e8;border:2px solid #4caf50}.db-status:first-child .db-name:after{content:" (Essential)";font-size:11px;opacity:.7}.db-status.loaded{background-color:#e8f5e8;color:#2e7d2e}.db-status.loading{background-color:#fff3e0;color:#ef6c00}.db-status.error{background-color:#ffebee;color:#c62828}.db-status.pending{background-color:#f3f4f6;color:#6b7280}.db-name{font-weight:500}.db-size{font-size:12px;font-weight:400;opacity:.8}.loading-spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.update-button{background-color:#fff;border:none;border-radius:4px;color:#2196f3;cursor:pointer;font-weight:500;padding:6px 16px}.update-button:hover{background-color:#f0f0f0}body.has-banner{padding-top:48px}.legal-links{align-items:center;display:flex;gap:8px;justify-content:center;margin-top:60px;padding:40px 16px 20px}.legal-link{background:none;border:none;color:#888;cursor:pointer;font-size:12px;text-decoration:none;transition:color .2s}.legal-link:hover{color:#2196f3;text-decoration:underline}.legal-separator{color:#888;font-size:12px}.dark .legal-link{color:#aaa}.dark .legal-link:hover{color:#64b5f6}.dark .legal-separator{color:#aaa}.beta-label{background-color:#f443361a;border:1px solid #f44336;border-radius:3px;color:#f44336;font-size:.3em;font-weight:600;margin-left:4px;padding:1px 4px;text-transform:uppercase;vertical-align:super}.database-progress-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border-radius:8px;bottom:100px;box-shadow:0 4px 12px #00000026;padding:12px 16px;position:fixed;right:24px;transition:opacity .5s ease,transform .5s ease;z-index:90}.database-progress-bar.fading{opacity:0;transform:translateY(10px)}.dark .database-progress-bar{background:#212121f2;color:#fff}.progress-bar-container{display:flex;flex-direction:column;gap:8px;min-width:200px}.progress-bar-label{color:#666;font-size:12px;font-weight:500;text-align:center}.dark .progress-bar-label{color:#ccc}.progress-bar{background:#e0e0e0;border-radius:2px;height:4px;overflow:hidden}.dark .progress-bar{background:#555}.progress-bar-fill{background:linear-gradient(90deg,#2196f3,#4caf50);border-radius:2px;height:100%;transition:width .3s ease}.progress-text{color:#999;font-family:monospace;font-size:11px;text-align:center}.dark .progress-text{color:#aaa}@media (max-width:768px){.legal-links{margin-top:40px;padding:30px 16px 16px}.legal-link,.legal-separator{font-size:11px}.beta-label{font-size:.25em;margin-left:3px;padding:1px 3px}.fab-container{bottom:20px;gap:12px;right:20px}.fab{height:52px;width:52px}.fab svg{height:22px;width:22px}.recipe-fab-badge{font-size:11px;height:18px;min-width:18px;width:18px}.database-progress-bar{bottom:84px;min-width:160px;right:20px}.progress-bar-container{gap:6px}.progress-bar-label{font-size:11px}}
/*# sourceMappingURL=main.3c09e4f3.css.map*/