:root{--bg: #0b1120;--surface: #151d2e;--surface-raised: #1e2839;--border: #29354a;--text: #e8edf5;--text-muted: #94a3b8;--text-faint: #64748b;--accent: #22c55e;--accent-strong: #16a34a;--accent-contrast: #04120a;--protein: #38bdf8;--carbs: #fbbf24;--fat: #f472b6;--danger: #f87171;--warning: #fbbf24;--radius: 14px;--radius-lg: 20px;--shadow: 0 6px 24px rgb(0 0 0 / 35%);--nav-height: 64px;--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:dark}@media (prefers-color-scheme: light){:root{--bg: #f5f7fa;--surface: #ffffff;--surface-raised: #ffffff;--border: #e2e8f0;--text: #0f172a;--text-muted: #64748b;--text-faint: #94a3b8;--accent-contrast: #ffffff;--shadow: 0 4px 16px rgb(15 23 42 / 8%);color-scheme:light}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-size-adjust:100%}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;line-height:1.25}h1{font-size:1.5rem;font-weight:700}h2{font-size:1.125rem;font-weight:650}h3{font-size:.95rem;font-weight:600}.app{min-height:100dvh;display:flex;flex-direction:column}.app-main{flex:1;padding:16px 16px calc(var(--nav-height) + var(--safe-bottom) + 24px);max-width:720px;width:100%;margin:0 auto}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px}.page-header .subtitle{color:var(--text-muted);font-size:.875rem}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:10px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.grow{flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px}.card-tight{padding:12px}.card-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:12px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);z-index:40}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--text-faint);font-size:.7rem;font-weight:550;transition:color .15s}.bottom-nav a.active{color:var(--accent)}.bottom-nav svg{width:22px;height:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:var(--radius);border:1px solid transparent;background:var(--surface-raised);color:var(--text);font-weight:600;cursor:pointer;transition:transform .1s,filter .15s}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-strong);color:#fff}.btn-ghost{background:transparent;border-color:var(--border)}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-block{width:100%}.btn-sm{min-height:36px;padding:6px 12px;font-size:.85rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;background:transparent;color:var(--text-muted);cursor:pointer}.icon-btn:active{background:var(--surface-raised)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.8rem;font-weight:600;color:var(--text-muted)}.input,.select,.textarea{width:100%;min-height:46px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);outline:none;transition:border-color .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent)}.textarea{min-height:88px;resize:vertical}.field-error{color:var(--danger);font-size:.8rem}.hint{color:var(--text-faint);font-size:.8rem}.macro-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.macro-cell{text-align:center}.macro-cell .macro-value{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums}.macro-cell .macro-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.macro-bar{height:5px;border-radius:3px;background:var(--border);overflow:hidden;margin-top:6px}.macro-bar>span{display:block;height:100%;border-radius:3px;transition:width .3s ease}.calorie-headline{display:flex;align-items:baseline;gap:8px}.calorie-headline .value{font-size:2.25rem;font-weight:750;font-variant-numeric:tabular-nums;line-height:1}.calorie-headline .unit{color:var(--text-muted);font-size:.9rem}.entry-list{display:flex;flex-direction:column}.entry{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.entry:last-child{border-bottom:none}.entry-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-meta{font-size:.8rem;color:var(--text-muted)}.entry-kcal{font-variant-numeric:tabular-nums;font-weight:650;white-space:nowrap}.meal-group+.meal-group{margin-top:8px}.meal-heading{display:flex;align-items:center;justify-content:space-between;padding:6px 0;color:var(--text-muted);font-size:.8rem;font-weight:650;text-transform:uppercase;letter-spacing:.05em}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:650;background:var(--surface-raised);color:var(--text-muted)}.badge-accent{background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent)}.badge-warning{background:color-mix(in srgb,var(--warning) 20%,transparent);color:var(--warning)}.banner{padding:10px 12px;border-radius:var(--radius);font-size:.85rem;border:1px solid}.banner-error{border-color:color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.banner-warning{border-color:color-mix(in srgb,var(--warning) 45%,transparent);background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning)}.banner-info{border-color:var(--border);background:var(--surface);color:var(--text-muted)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:720px;max-height:88dvh;overflow-y:auto;background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:16px 16px calc(16px + var(--safe-bottom));box-shadow:var(--shadow);animation:sheet-in .2s ease-out}@keyframes sheet-in{0%{transform:translateY(16px);opacity:0}}@media (prefers-reduced-motion: reduce){.sheet{animation:none}.btn:active:not(:disabled){transform:none}}.sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--border);margin:0 auto 12px}.camera-frame{position:relative;width:100%;aspect-ratio:3 / 4;background:#000;border-radius:var(--radius-lg);overflow:hidden}.camera-frame video,.camera-frame canvas{width:100%;height:100%;object-fit:cover;display:block}.camera-reticle{position:absolute;top:18%;right:10%;bottom:18%;left:10%;border:2px solid color-mix(in srgb,var(--accent) 80%,transparent);border-radius:var(--radius);pointer-events:none}.chart{width:100%;height:auto;display:block;overflow:visible}.chart-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-axis-label{font-size:10px;fill:var(--text-faint)}.empty-state{text-align:center;padding:32px 16px;color:var(--text-muted)}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{min-height:100dvh;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:380px}.brand{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:20px}.brand-mark{width:40px;height:40px}.brand-name{font-size:1.5rem;font-weight:750;letter-spacing:-.02em}.segmented{display:grid;grid-auto-flow:column;gap:4px;padding:4px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.segmented button{min-height:36px;border:none;border-radius:calc(var(--radius) - 5px);background:transparent;color:var(--text-muted);font-size:.85rem;font-weight:600;cursor:pointer}.segmented button.active{background:var(--surface-raised);color:var(--text)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (min-width: 640px){.app-main{padding-left:24px;padding-right:24px}}
