.login-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#fffffff2;border-radius:16px;width:100%;max-width:380px;padding:2.5rem 2rem;box-shadow:0 8px 32px #00000026}.login-logo{margin-bottom:.25rem;font-size:2rem}.login-card h2{color:#374151;margin-bottom:1.5rem;font-size:1.1rem;font-weight:500}.login-card form{flex-direction:column;gap:.75rem;display:flex}.login-card input,.login-card select{border:2px solid #e5e7eb;border-radius:8px;padding:.75rem 1rem;font-size:1rem;transition:border-color .2s}.login-card input:focus,.login-card select:focus{border-color:#667eea;outline:none}.login-btn{width:100%;margin-top:.5rem}.login-error{color:#dc2626;font-size:.875rem}.login-hint{color:#f59e0b;margin:-.25rem 0 .25rem;font-size:.8rem}.login-toggle{color:#6b7280;margin-top:1.25rem;font-size:.875rem}.login-toggle button{color:#667eea;cursor:pointer;background:0 0;border:none;font-size:.875rem;font-weight:600}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:12px;width:100%;max-width:600px;max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0000004d}.modal-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.modal-header h2{margin:0;font-size:1.5rem}.modal-close{cursor:pointer;color:#6b7280;background:0 0;border:none;width:2rem;height:2rem;padding:0;font-size:2rem;line-height:1}.modal-body{padding:1.5rem}@media (width<=640px){.modal-content{max-height:95vh}.modal-header h2{font-size:1.25rem}}.cooking-control{flex-wrap:wrap;gap:.75rem;padding:.5rem 1.5rem .75rem;display:flex}.cooking-control-row{flex:1;min-width:180px}.cooking-control label{color:#374151;margin-bottom:.5rem;font-weight:500;display:block}.duration-input{border:2px solid #e5e7eb;border-radius:8px;width:100%;margin-bottom:1rem;padding:.75rem;font-size:1rem;transition:border-color .2s}.duration-input:focus{border-color:#667eea;outline:none}.btn-large{width:100%;padding:1rem;font-size:1.125rem}.btn-danger{color:#fff;background:#ef4444}.btn-danger:hover:not(:disabled){background:#dc2626}.feedback-buttons{flex-direction:column;gap:.75rem;display:flex}.feedback-buttons p,.feedback-reason p{margin:0 0 .5rem;font-weight:500}.feedback-reason{flex-direction:column;gap:.75rem;display:flex}.feedback-reason textarea{resize:vertical;border:2px solid #e5e7eb;border-radius:8px;width:100%;padding:.75rem;font-size:1rem}.btn-success{color:#fff;background:#22c55e}.btn-success:hover:not(:disabled){background:#16a34a}.btn-warning{color:#fff;background:#f59e0b}.btn-warning:hover:not(:disabled){background:#d97706}.weight-display{text-align:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:12px;margin-bottom:1.5rem;padding:2rem}.weight-value{color:#fff;margin-bottom:.5rem;font-size:3rem;font-weight:700}.weight-unit{color:#ffffffe6;font-size:1.25rem}.weight-actions{flex-wrap:wrap;gap:1rem;display:flex}.weight-actions button{flex:1;min-width:120px}@media (width<=640px){.weight-value{font-size:2.5rem}.weight-actions{flex-direction:column}.weight-actions button{width:100%}}.loading-status{text-align:center;color:#6b7280;padding:2rem;font-size:.9rem}.roi-overlay{color:#fff;z-index:10;background:#00000080;border-radius:8px;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.roi-container{touch-action:none;width:100%;margin-bottom:1rem;position:relative}.roi-image{border-radius:8px;width:100%;height:auto;display:block}.roi-canvas{cursor:crosshair;width:100%;height:100%;position:absolute;top:0;left:0}.roi-hint{text-align:center;color:#6b7280;margin-bottom:1rem}.roi-actions{flex-wrap:wrap;gap:.75rem;display:flex}.roi-actions button{flex:1;min-width:100px}@media (width<=640px){.roi-actions{flex-direction:column}.roi-actions button{width:100%}}.food-list h2{color:#1f2937;margin-bottom:1rem}.processing-indicator{color:#4b5563;background:#f3f4f6;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;width:fit-content;margin-top:1rem;margin-left:auto;margin-right:auto;padding:.5rem 1rem;font-size:.8rem;display:flex}.indicator-dot{background:#667eea;border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite pulse}.indicator-weight{color:#1f2937;font-variant-numeric:tabular-nums;font-weight:600}.indicator-sep{color:#d1d5db}.indicator-state{color:#6b7280}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.food-card-new{animation:1.5s ease-out highlight}@keyframes highlight{0%{box-shadow:0 0 0 3px #667eea}to{box-shadow:0 2px 8px #0000001a}}.empty-state{text-align:center;color:#6b7280;padding:2rem}.food-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.food-card{background:#fff;border-radius:12px;transition:transform .2s,box-shadow .2s;overflow:hidden;box-shadow:0 2px 8px #0000001a}.food-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.food-image{object-fit:cover;cursor:pointer;width:100%;height:180px}.food-info{padding:1rem}.food-info h3{color:#1f2937;margin:0 0 .75rem;font-size:1.125rem}.nutrition-grid{grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem;display:grid}.nutrition-item{justify-content:space-between;font-size:.875rem;display:flex}.nutrition-item .label{color:#6b7280}.nutrition-item .value{color:#1f2937;font-weight:600}.btn-small{width:100%;padding:.5rem;font-size:.875rem}@media (width<=640px){.food-grid{grid-template-columns:1fr}}.nonfood-list h2{color:#1f2937;margin-bottom:1rem}.nonfood-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;display:grid}.nonfood-card{background:#fff;border-radius:8px;padding:0;overflow:hidden;box-shadow:0 2px 4px #0000001a}.nonfood-image{object-fit:cover;cursor:pointer;width:100%;height:140px}.nonfood-name{color:#1f2937;margin-bottom:.25rem;padding:.75rem 1rem 0;font-weight:600}.nonfood-confidence{color:#6b7280;padding:0 1rem .75rem;font-size:.875rem}@media (width<=640px){.nonfood-grid{grid-template-columns:1fr}}.cookbook{background:#fff;border-radius:12px;margin-bottom:1.5rem;padding:1.5rem;box-shadow:0 2px 8px #0000001a}.cookbook h2{color:#1f2937;margin:0 0 1rem}.cookbook-items{margin-bottom:1rem}.cookbook-item{background:#f9fafb;border-radius:6px;justify-content:space-between;margin-bottom:.5rem;padding:.75rem;display:flex}.item-name{color:#374151;font-weight:500}.item-calories{color:#6b7280}.cookbook-total{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:8px;margin-bottom:1rem;padding:1rem}.cookbook-total h3{margin:0 0 .75rem;font-size:1.125rem}.total-grid{grid-template-columns:1fr 1fr;gap:.5rem;font-size:.875rem;display:grid}.recipe-input{margin-top:1rem}.recipe-name-input{border:2px solid #e5e7eb;border-radius:8px;width:100%;margin-bottom:.75rem;padding:.75rem;font-size:1rem}.recipe-name-input:focus{border-color:#667eea;outline:none}.recipe-actions{gap:.75rem;display:flex}.recipe-actions button{flex:1}@media (width<=640px){.total-grid{grid-template-columns:1fr}}.recipes-list{margin-bottom:1.5rem}.recipes-list h2{color:#1f2937;margin-bottom:1rem}.recipes-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.recipe-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a}.recipe-header{justify-content:space-between;align-items:start;margin-bottom:1rem;display:flex}.recipe-header h3{color:#1f2937;flex:1;margin:0;font-size:1.125rem}.recipe-name{cursor:pointer;text-underline-offset:3px;-webkit-text-decoration:underline #d1d5db;text-decoration:underline #d1d5db}.recipe-name:hover{color:#2563eb;text-decoration-color:#2563eb}.delete-btn{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:1.5rem;line-height:1;display:flex}.recipe-nutrition{color:#6b7280;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem;font-size:.875rem;display:grid}.belly-row{align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.belly-servings-input{text-align:center;border:2px solid #e5e7eb;border-radius:6px;width:3.5rem;padding:.3rem;font-size:.85rem}.belly-servings-input:focus{border-color:#667eea;outline:none}.belly-btn{padding:.35rem .75rem!important;font-size:.8rem!important}.recipe-date{color:#9ca3af;text-align:right;font-size:.75rem}.recipe-servings{color:#374151;margin-bottom:.5rem;font-size:.875rem}.per-serving-inline{flex-wrap:wrap;gap:.35rem;margin-top:.35rem;display:flex}.nutrient-pill{border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:500}.nutrient-pill.cal{color:#92400e;background:#fef3c7}.nutrient-pill.prot{color:#1e40af;background:#dbeafe}.nutrient-pill.carb{color:#065f46;background:#d1fae5}.nutrient-pill.fats{color:#9d174d;background:#fce7f3}.serving-basis{color:#9ca3af;margin-left:.25rem;font-size:.75rem}.serving-config{border-top:1px solid #e5e7eb;margin-top:1.5rem;padding-top:1rem}.serving-config h4{color:#374151;margin:0 0 .75rem;font-size:.95rem}.serving-controls{flex-wrap:wrap;gap:1rem;margin-bottom:.75rem;display:flex}.serving-controls label{color:#6b7280;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.serving-controls select,.serving-controls input{border:1px solid #d1d5db;border-radius:6px;padding:.35rem .5rem;font-size:.875rem}.serving-controls input{width:80px}.unit{color:#9ca3af;font-size:.8rem}.serving-result{color:#374151;margin-bottom:.75rem;font-size:.9rem}.serving-total{color:#9ca3af;margin-left:.5rem;font-size:.75rem}.save-servings-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:.5rem 1.5rem;font-size:.875rem}.save-servings-btn:hover{background:#1d4ed8}@media (width<=640px){.recipes-grid{grid-template-columns:1fr}}.recipe-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.recipe-popup{background:#fff;border-radius:12px;width:90%;max-width:600px;max-height:80vh;padding:1.5rem;overflow-y:auto;box-shadow:0 8px 32px #0003}.popup-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.popup-header h3{color:#1f2937;margin:0}.close-btn{color:#fff;cursor:pointer;background:#6b7280;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:1.25rem;display:flex}.close-btn:hover{background:#4b5563}.no-items{color:#9ca3af;text-align:center}.ingredients-table{border-collapse:collapse;width:100%;font-size:.875rem}.ingredients-table th,.ingredients-table td{text-align:left;border-bottom:1px solid #e5e7eb;padding:.5rem}.ingredients-table th{color:#6b7280;font-weight:600}.ingredients-table td:first-child{color:#1f2937;font-weight:500}.weight-input{background:0 0;border:1px solid #d1d5db;border-radius:4px;outline:none;width:60px;padding:.2rem .35rem;font-size:.8rem}.icon-btn{cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:1rem;line-height:1}.icon-btn.save{color:#16a34a}.icon-btn.cancel{color:#6b7280}.icon-btn.remove{color:#ef4444;font-size:1.2rem}.icon-btn.remove:hover{color:#dc2626}.add-item-btn{color:#374151;cursor:pointer;background:#f3f4f6;border:1px dashed #9ca3af;border-radius:8px;width:100%;margin:.75rem 0;padding:.5rem 1rem;font-size:.875rem;display:block}.add-item-btn:hover{background:#e5e7eb}.add-item-section{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin-top:.5rem;padding:.75rem}.add-item-section input[type=text]{box-sizing:border-box;border:1px solid #d1d5db;border-radius:6px;width:100%;padding:.4rem .6rem;font-size:.875rem}.add-weight-label{color:#6b7280;align-items:center;gap:.4rem;margin-top:.5rem;font-size:.8rem;display:flex}.add-weight-label input{border:1px solid #d1d5db;border-radius:4px;width:70px;padding:.25rem .4rem;font-size:.8rem}.search-results{border:1px solid #e5e7eb;border-radius:6px;max-height:180px;margin:.5rem 0 0;padding:0;list-style:none;overflow-y:auto}.search-results li{cursor:pointer;border-bottom:1px solid #f3f4f6;flex-direction:column;padding:.5rem .6rem;display:flex}.search-results li:last-child{border-bottom:none}.search-results li:hover{background:#eff6ff}.sr-name{color:#1f2937;font-size:.85rem;font-weight:500}.sr-info{color:#6b7280;font-size:.75rem}.show-more-btn{color:#66eab4;cursor:pointer;background:0 0;border:none;margin:1rem auto 0;padding:.5rem 1rem;font-size:.85rem;display:block}.show-more-btn:hover{text-decoration:underline}.nutrition-log{background:#fffffff2;border-radius:12px;margin-bottom:1.5rem;padding:1.25rem;box-shadow:0 2px 8px #00000014}.nutrition-log h2{color:#1f2937;margin:0;font-size:1.1rem}.date-nav{justify-content:center;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.date-nav-btn{cursor:pointer;color:#374151;background:0 0;border:1px solid #d1d5db;border-radius:6px;padding:.15rem .5rem;font-size:1.1rem}.date-nav-btn:disabled{opacity:.3;cursor:default}.daily-totals{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.log-entries{flex-direction:column;gap:.4rem;display:flex}.log-entry{background:#f9fafb;border-radius:6px;align-items:center;gap:.75rem;padding:.4rem .6rem;font-size:.875rem;display:flex}.log-name{color:#374151;flex:1}.log-info{color:#6b7280}.log-delete{color:#dc2626;cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.1rem;line-height:1}.admin-panel{background:#fff;border-radius:12px;padding:1.25rem;box-shadow:0 1px 3px #0000001a}.admin-panel h2{margin:0 0 1rem;font-size:1.1rem}.admin-table{border-collapse:collapse;width:100%;font-size:.85rem}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid #f0f0f0;padding:.5rem .75rem}.admin-table th{color:#6b7280;text-transform:uppercase;font-size:.75rem;font-weight:600}.role-tag{text-transform:capitalize;background:#f3f4f6;border-radius:8px;padding:.15rem .5rem;font-size:.8rem}.toggle-btn{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.2rem .5rem;font-size:1.1rem}.toggle-btn:hover{background:#f3f4f6}.delete-btn{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.2rem .5rem;font-size:1.1rem}.delete-btn:hover{background:#fee2e2}@media (width<=600px){.admin-table thead{display:none}.admin-table tr{border-bottom:1px solid #f0f0f0;flex-direction:column;padding:.75rem 0;display:flex}.admin-table td{border:none;justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.admin-table td:first-child{margin-bottom:.25rem;font-weight:600}.admin-table td[data-label]:before{content:attr(data-label);color:#6b7280;font-size:.8rem}}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#667eea 0%,#58a24b 100%);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.app{min-height:100vh;padding-bottom:2rem}.top-bar{z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff7;margin-bottom:1.5rem;position:sticky;top:0;box-shadow:0 2px 8px #0000001a}.header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.header h1{color:#1f2937;align-items:center;gap:.4rem;font-size:1.25rem;display:flex}.logo-text{letter-spacing:-.5px;font-weight:700}.logo-accent{background:linear-gradient(135deg,#667eea,#58a24b);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-style:italic}.header-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.main{max-width:1400px;margin:0 auto;padding:0 1rem}.data-section{grid-template-columns:2fr 1fr;gap:1.5rem;display:grid}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;transition:all .2s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff;background:linear-gradient(135deg,#667eea 0%,#58a24b 100%)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.btn-secondary{color:#667eea;background:#fff;border:2px solid #667eea}.btn-secondary:hover:not(:disabled){color:#fff;background:#667eea}.btn-compact{padding:.5rem 1rem;font-size:.875rem}.user-badge{color:#fff;text-transform:capitalize;background:linear-gradient(135deg,#667eea 0%,#58a24b 100%);border-radius:12px;padding:.25rem .6rem;font-size:.75rem;font-weight:600}.user-badge.clickable{cursor:pointer}.user-badge.clickable:hover{opacity:.8}.error-msg{color:#991b1b;background:#fee2e2;border-radius:6px;margin-top:1rem;padding:.75rem;font-size:.875rem}@media (width<=1024px){.data-section{grid-template-columns:1fr}}@media (width<=640px){.header{flex-direction:column;align-items:stretch}.header h1{text-align:center;font-size:1.5rem}.header-actions{justify-content:center}.btn{padding:.625rem 1.25rem;font-size:.9375rem}}
