:root{--ease-spring:cubic-bezier(.34, 1.45, .64, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.45, 0, .2, 1);--duration-fast:.18s;--duration-normal:.45s;--duration-slow:.65s;--radius:14px;--radius-sm:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#e8e2d8;--bg-surface:#f0ebe3;--bg-elevated:#faf6f0;--bg-soft:#e3ddd2;--bg-input:#f5f0e8;--border:#cfc7ba;--border-strong:#b8afa0;--text:#1a1814;--text-muted:#5c5650;--text-faint:#8a8278;--accent:#2563eb;--accent-soft:#2563eb24;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--kcal:#e8940a;--kcal-soft:#e8940a33;--protein:#6366f1;--protein-soft:#6366f12e;--btn-primary:#1a1814;--btn-primary-hover:#3d3830;--btn-on-primary:#faf6f0;--shadow:0 1px 3px #1a18141a, 0 6px 20px #1a181414;--shadow-lift:0 4px 12px #1a18141f, 0 16px 40px #1a18141a;--nav-bg:#f0ebe3eb;--overlay:#1a181473;--gradient-bg:radial-gradient(ellipse 100% 60% at 50% -20%, #ffbe6473, transparent 55%), radial-gradient(ellipse 70% 50% at 100% 20%, #6366f11a, transparent 50%), linear-gradient(168deg, #f2ece4 0%, #e8e2d8 40%, #ddd6ca 100%);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:DM Sans,system-ui,-apple-system,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#e8e2d8;--bg-surface:#f0ebe3;--bg-elevated:#faf6f0;--bg-soft:#e3ddd2;--bg-input:#f5f0e8;--border:#cfc7ba;--border-strong:#b8afa0;--text:#1a1814;--text-muted:#5c5650;--text-faint:#8a8278;--accent:#2563eb;--accent-soft:#2563eb24;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--kcal:#e8940a;--kcal-soft:#e8940a33;--protein:#6366f1;--protein-soft:#6366f12e;--btn-primary:#1a1814;--btn-primary-hover:#3d3830;--btn-on-primary:#faf6f0;--shadow:0 1px 3px #1a18141a, 0 6px 20px #1a181414;--shadow-lift:0 4px 12px #1a18141f, 0 16px 40px #1a18141a;--nav-bg:#f0ebe3eb;--overlay:#1a181473;--gradient-bg:radial-gradient(ellipse 100% 60% at 50% -20%, #ffbe6473, transparent 55%), radial-gradient(ellipse 70% 50% at 100% 20%, #6366f11a, transparent 50%), linear-gradient(168deg, #f2ece4 0%, #e8e2d8 40%, #ddd6ca 100%)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0e10;--bg-surface:#141416;--bg-elevated:#1c1c1f;--bg-soft:#222226;--bg-input:#18181b;--border:#2e2e34;--border-strong:#3d3d45;--text:#f2f2f4;--text-muted:#9898a0;--text-faint:#63636b;--accent:#5b8def;--accent-soft:#5b8def26;--danger:#f87171;--success:#4ade80;--warning:#fbbf24;--kcal:#f5a623;--kcal-soft:#f5a6232e;--protein:#818cf8;--protein-soft:#818cf82e;--btn-primary:#f2f2f4;--btn-primary-hover:#d4d4d8;--btn-on-primary:#0e0e10;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040;--shadow-lift:0 2px 8px #00000059, 0 12px 32px #0000004d;--nav-bg:#141416e6;--overlay:#0000008c;--gradient-bg:radial-gradient(ellipse 80% 50% at 50% -10%, #6366f11f, transparent 55%), radial-gradient(ellipse 50% 35% at 0% 100%, #f5a6230f, transparent 50%), linear-gradient(175deg, #141416 0%, #0e0e10 50%, #0a0a0c 100%)}*,:before,:after{box-sizing:border-box}html{color:var(--text);background:var(--bg);transition:background-color .35s var(--ease-in-out), color .35s var(--ease-in-out)}body{background:var(--gradient-bg);background-attachment:fixed;min-height:100vh;margin:0}#root{min-height:100vh}button,input,select,textarea{font:inherit}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes sheetIn{0%{opacity:0;transform:translateY(16px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tabFade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spinPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.92)}}@keyframes expandPanel{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fadeSlideUp var(--duration-normal) var(--ease-out) both}.animate-sheet{animation:sheetIn var(--duration-slow) var(--ease-spring) both}.tab-panel{animation:tabFade var(--duration-normal) var(--ease-out) both;flex-direction:column;gap:1.25rem;display:flex}@media (prefers-reduced-motion:reduce){.animate-in,.animate-sheet,.tab-panel{animation:none}.progress-fill{transition:none!important}}.loading-screen,.auth-screen{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);width:min(400px,100%);box-shadow:var(--shadow-lift);padding:2rem 1.75rem}.auth-card-top{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.35rem;display:flex}.auth-card h1{letter-spacing:-.02em;margin:0;font-size:1.65rem;font-weight:700}.auth-subtitle{color:var(--text-muted);margin:0 0 1.75rem;font-size:.95rem}.auth-form{flex-direction:column;gap:1rem;display:flex}label{color:var(--text-muted);flex-direction:column;gap:.35rem;font-size:.8125rem;font-weight:500;display:flex}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);transition:border-color var(--duration-fast), box-shadow var(--duration-fast), background-color .35s var(--ease-in-out);padding:.7rem .85rem}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast), transform var(--duration-fast), opacity var(--duration-fast);border:none;padding:.7rem 1.15rem;font-weight:600}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--btn-primary);color:var(--btn-on-primary)}.btn-primary:hover:not(:disabled){background:var(--btn-primary-hover)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover{color:var(--text);border-color:var(--border-strong)}.btn-link{color:var(--text-muted);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin-top:1.25rem;padding:0;font-size:.875rem;text-decoration:underline}.btn-link:hover{color:var(--text)}.btn-text{color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast);background:0 0;border:none;padding:.35rem .5rem;font-size:.875rem;font-weight:500}.btn-text:hover{color:var(--text)}.btn-icon{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;width:2.5rem;height:2.5rem;transition:background var(--duration-fast), border-color var(--duration-fast), transform var(--duration-fast);place-items:center;font-size:1.35rem;line-height:1;display:grid}.btn-icon:active:not(:disabled){transform:scale(.94)}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.btn-delete{color:var(--text-faint);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast), transform var(--duration-fast);background:0 0;border:none;border-radius:6px;padding:.25rem .5rem;font-size:1.35rem;line-height:1}.btn-delete:hover{color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent)}.btn-delete:active{transform:scale(.9)}.theme-toggle{border:1px solid var(--border);background:var(--bg-soft);cursor:pointer;width:2.25rem;height:2.25rem;transition:background var(--duration-fast), border-color var(--duration-fast), transform .35s var(--ease-spring);border-radius:999px;place-items:center;font-size:1rem;line-height:1;display:grid}.theme-toggle:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.theme-toggle:active{transform:scale(.92)}.theme-icon{transition:transform .4s var(--ease-spring);display:block}.theme-toggle:hover .theme-icon{transform:rotate(-12deg)scale(1.08)}.form-error{color:var(--danger);margin:0;font-size:.875rem}.form-success{color:var(--success);margin:0;font-size:.875rem}.app-shell{flex-direction:column;max-width:480px;min-height:100vh;margin:0 auto;display:flex}.app-header{justify-content:space-between;align-items:center;gap:1rem;padding:1.15rem 1.25rem .5rem;display:flex}.app-header-actions{align-items:center;gap:.35rem;display:flex}.app-title{letter-spacing:-.02em;margin:0;font-size:1.25rem;font-weight:700}.app-main{flex-direction:column;flex:1;gap:1.25rem;padding:.5rem 1.25rem 5.5rem;display:flex}.bottom-nav{width:min(480px,100%);padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border);z-index:50;transition:background .35s var(--ease-in-out);gap:.35rem;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav-btn{color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast), transform var(--duration-fast), box-shadow var(--duration-fast);background:0 0;border:none;flex:1;padding:.55rem .5rem;font-size:.8125rem;font-weight:500}.bottom-nav-btn.active{background:var(--bg-elevated);color:var(--text);box-shadow:var(--shadow)}.bottom-nav-btn:active{transform:scale(.96)}.date-nav{align-items:center;gap:.5rem;padding:.25rem 0;display:flex}.date-nav-center{flex-direction:column;flex:1;align-items:center;gap:.2rem;display:flex}.date-input{text-align:center;background:0 0;border-color:#0000;width:100%;max-width:160px;padding:.45rem .65rem;font-size:.875rem}.date-input:focus{border-color:var(--border);box-shadow:none}.date-label{color:var(--text-muted);text-align:center;font-size:.8125rem}.today-badge{background:var(--accent-soft);color:var(--accent);letter-spacing:.02em;border-radius:999px;padding:.12rem .5rem;font-size:.6875rem;font-weight:600}.goals-panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:background .35s var(--ease-in-out), border-color .35s var(--ease-in-out), box-shadow .35s var(--ease-in-out);flex-direction:column;gap:.85rem;padding:1.1rem 1.15rem;display:flex}.goals-stats{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.goal-stat{text-align:center}.goal-stat-secondary .goal-value-muted{color:var(--text-muted)}.goal-value{letter-spacing:-.04em;font-variant-numeric:tabular-nums;transition:color .35s var(--ease-in-out);font-size:2rem;font-weight:700;line-height:1.1;display:block}.goal-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;font-weight:600}.progress-block{padding:.5rem 0 0}.progress-header{color:var(--text-muted);justify-content:space-between;align-items:baseline;margin-bottom:.45rem;font-size:.8125rem;display:flex}.progress-values{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.progress-values strong{color:var(--text);font-weight:600}.over-badge{color:var(--warning);margin-left:.35rem;font-size:.75rem;font-weight:500}.progress-track{background:var(--bg-soft);border-radius:999px;height:7px;position:relative;overflow:hidden}.progress-fill{height:100%;transition:width var(--duration-slow) var(--ease-spring);will-change:width;border-radius:999px}.progress-kcal .progress-fill{background:linear-gradient(90deg, var(--kcal), color-mix(in srgb, var(--kcal) 80%, white))}.progress-protein .progress-fill{background:linear-gradient(90deg, var(--protein), color-mix(in srgb, var(--protein) 80%, white))}.progress-over .progress-fill{background:var(--warning)}.progress-overfill{background:color-mix(in srgb, var(--warning) 40%, transparent);height:100%;transition:width var(--duration-slow) var(--ease-spring);position:absolute;top:0;right:0}.progress-pct{color:var(--text-faint);text-align:right;font-variant-numeric:tabular-nums;transition:color .35s var(--ease-in-out);margin-top:.2rem;font-size:.6875rem;display:block}.journal-compose{flex-direction:column;gap:.75rem;display:flex}.journal-form{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:box-shadow var(--duration-normal) var(--ease-out), border-color var(--duration-fast), background .35s var(--ease-in-out);overflow:hidden}.journal-form:focus-within{border-color:var(--border-strong);box-shadow:var(--shadow-lift)}.journal-input{resize:none;width:100%;min-height:5.5rem;color:var(--text);background:0 0;border:none;padding:1.15rem 1.15rem .75rem;font-size:1.05rem;line-height:1.55}.journal-input:focus{box-shadow:none;outline:none}.journal-input::placeholder{color:var(--text-faint)}.journal-toolbar{border-top:1px solid var(--border);background:var(--bg-soft);transition:background .35s var(--ease-in-out);justify-content:space-between;align-items:center;padding:.55rem .75rem .75rem;display:flex}.meal-select{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.35rem .5rem;font-size:.8125rem;font-weight:500}.meal-select:focus{box-shadow:none;outline:none}.btn-send{background:var(--btn-primary);width:2.35rem;height:2.35rem;color:var(--btn-on-primary);cursor:pointer;transition:background var(--duration-fast), transform .35s var(--ease-spring), opacity var(--duration-fast);border:none;border-radius:999px;place-items:center;font-size:1.1rem;font-weight:600;line-height:1;display:grid}.btn-send:disabled{opacity:.35;cursor:not-allowed}.btn-send:not(:disabled):hover{background:var(--btn-primary-hover)}.btn-send:not(:disabled):active{transform:scale(.88)}.btn-send.is-loading{animation:.9s ease-in-out infinite spinPulse}.analysis-sheet{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.analysis-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .75rem;font-size:.8125rem;font-weight:600}.analysis-list{flex-direction:column;gap:.85rem;margin:0;padding:0;list-style:none;display:flex}.analysis-item{border-bottom:1px solid var(--border);animation:fadeSlideUp var(--duration-normal) var(--ease-out) both;padding-bottom:.85rem}.analysis-item:first-child{animation-delay:50ms}.analysis-item:nth-child(2){animation-delay:.1s}.analysis-item:nth-child(3){animation-delay:.15s}.analysis-item:nth-child(4){animation-delay:.2s}.analysis-item:nth-child(5){animation-delay:.25s}.analysis-item:last-child{border-bottom:none;padding-bottom:0}.analysis-item.is-miss{opacity:.7}.analysis-check{color:var(--text);align-items:center;gap:.5rem;margin-bottom:.45rem;font-size:.9375rem;font-weight:600;display:flex}.analysis-check input{width:auto;accent-color:var(--btn-primary)}.analysis-controls{grid-template-columns:1fr auto auto;align-items:center;gap:.5rem;display:grid}.analysis-controls select{padding:.5rem .65rem;font-size:.8125rem}.grams-input{text-align:center;width:4.5rem;padding:.5rem .45rem}.analysis-macros{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.analysis-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:1rem;padding-top:.85rem;display:flex}.analysis-total{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600}.tool-chips{gap:.5rem;display:flex}.tool-chip{flex:1}.tool-chip>summary{cursor:pointer;text-align:center;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast), transform var(--duration-fast);border-radius:999px;padding:.55rem .75rem;font-size:.8125rem;font-weight:500;list-style:none}.tool-chip>summary::-webkit-details-marker{display:none}.tool-chip>summary:active{transform:scale(.97)}.tool-chip[open]>summary{color:var(--text);border-color:var(--border-strong);background:var(--bg-soft)}.tool-chip>:not(summary){animation:expandPanel var(--duration-normal) var(--ease-out) both;margin-top:.75rem}.tool-panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.tool-panel h2{margin:0 0 .35rem;font-size:.9375rem;font-weight:600}.section-desc{color:var(--text-muted);margin:0 0 .85rem;font-size:.8125rem;line-height:1.45}.journal-feed{flex-direction:column;gap:1.5rem;display:flex}.journal-group-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-bottom:.65rem;padding-bottom:.35rem;display:flex}.journal-group-head h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0;font-size:.8125rem;font-weight:600}.journal-group-head span{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:.75rem}.journal-entries{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.journal-entry{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.65rem 0;display:flex}.journal-entry:last-child{border-bottom:none}.journal-entry-body{flex-direction:column;gap:.15rem;min-width:0;display:flex}.journal-entry-name{font-size:.9375rem;font-weight:500}.journal-entry-meta{color:var(--text-muted);font-size:.8125rem}.empty-hint,.loading{text-align:center;color:var(--text-faint);padding:1.5rem 0;font-size:.875rem}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:background .35s var(--ease-in-out);padding:1.15rem}.card h2{margin:0 0 .75rem;font-size:1rem;font-weight:600}.form-row{gap:.75rem;display:grid}@media (width>=540px){.form-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.macro-preview{background:var(--bg-soft);border-radius:var(--radius-sm);color:var(--text-muted);padding:.65rem .85rem;font-size:.8125rem}.macro-preview strong{color:var(--text)}.entry-form .btn-primary{margin-top:.65rem}.photo-preview{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);width:100%;max-height:200px}.photo-name-input{flex:1;min-width:0}.photo-analyze input[type=file]{padding:.35rem 0;font-size:.8125rem}.describe-form{flex-direction:column;gap:.75rem;display:flex}.describe-results{flex-direction:column;gap:.75rem;margin-top:.85rem;display:flex}.describe-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.describe-item{border-top:1px solid var(--border);animation:fadeSlideUp var(--duration-normal) var(--ease-out) both;flex-direction:column;gap:.45rem;padding-top:.75rem;display:flex}.describe-item:first-child{border-top:none;padding-top:0}.describe-check{color:var(--text);flex-direction:row;align-items:center;gap:.5rem}.describe-check input[type=checkbox]{width:auto;accent-color:var(--btn-primary)}.describe-match-row{grid-template-columns:1fr auto;align-items:end;gap:.5rem;display:grid}.describe-grams{width:5rem}.food-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.food-item{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem 0;display:flex}.food-item:first-child{border-top:none}.food-name{flex:1;min-width:120px;font-weight:500}.food-macros{color:var(--text-muted);font-size:.8125rem}.default-badge{background:var(--bg-soft);color:var(--text-muted);border-radius:999px;padding:.15rem .45rem;font-size:.6875rem;font-weight:600}.food-manager{flex-direction:column;gap:1rem;display:flex}.card-title-row{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.card-title-row h2{margin:0}.btn-danger{color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent);border-color:#0000}.scanner-overlay{z-index:100;background:var(--overlay);animation:fadeSlideUp .2s var(--ease-out) both;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.scanner-modal{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);width:min(440px,100%);max-height:min(90vh,720px);box-shadow:var(--shadow-lift);animation:sheetIn var(--duration-normal) var(--ease-spring) both;flex-direction:column;gap:.75rem;padding:1.15rem;display:flex;overflow:auto}.scanner-header{justify-content:space-between;align-items:center;display:flex}.scanner-header h2{margin:0;font-size:1rem;font-weight:600}.scanner-viewport{border-radius:var(--radius-sm);background:#000;width:100%;min-height:220px;overflow:hidden}.scanner-viewport video{border-radius:var(--radius-sm);width:100%!important}.scanner-manual{flex-direction:column;gap:.75rem;display:flex}.scanner-hint{color:var(--text-muted);text-align:center;margin:0;font-size:.75rem}
