@import"https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap";:root{--bg: #FAFAF7;--surface: #FFFFFF;--surface-2: #F3F2ED;--surface-3: #ECEAE3;--text: #1B1A18;--text-2: #4B4945;--text-muted: #898680;--text-faint: #B6B3AB;--border: #E8E6DF;--border-strong: #D6D3CB;--accent: #E25C2C;--accent-soft: #FBE7DD;--protein: #2E6CD3;--protein-soft: #DCE6F8;--carbs: #C7861E;--carbs-soft: #F6E7CC;--fat: #4F9B6E;--fat-soft: #DDEDE2;--shadow-sm: 0 1px 2px rgba(20,18,12,.04), 0 0 0 1px rgba(20,18,12,.04);--shadow-md: 0 2px 6px rgba(20,18,12,.05), 0 0 0 1px rgba(20,18,12,.05);--shadow-lg: 0 12px 40px rgba(20,18,12,.1), 0 0 0 1px rgba(20,18,12,.06);--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--radius-xl: 24px;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace}[data-theme=dark]{--bg: #0E0F0E;--surface: #18191A;--surface-2: #1E1F20;--surface-3: #262728;--text: #F2F1ED;--text-2: #C7C6C1;--text-muted: #8A8884;--text-faint: #5E5C58;--border: #2A2B2C;--border-strong: #3A3B3C;--accent: #FF7345;--accent-soft: #3A1F14;--protein: #5A8BE6;--protein-soft: #16243F;--carbs: #E2A647;--carbs-soft: #3A2D14;--fat: #6FB58A;--fat-soft: #173025;--shadow-sm: 0 1px 2px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.04);--shadow-md: 0 2px 6px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.05);--shadow-lg: 0 16px 40px rgba(0,0,0,.5), 0 0 0 1px rgba(255,255,255,.06)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:-.005em}body,#root{min-height:100vh}button{font-family:inherit}input,textarea{font-family:inherit;font-size:inherit;color:inherit}::selection{background:var(--accent-soft);color:var(--text)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.app{display:grid;grid-template-rows:auto 1fr;min-height:100vh;background:var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.01em}.brand-mark{width:26px;height:26px;border-radius:8px;background:var(--text);color:var(--bg);display:grid;place-items:center;font-weight:700;font-size:14px}.brand-name{font-size:15px}.brand-sub{color:var(--text-muted);font-size:13px;margin-left:6px;font-weight:400}.topbar-actions{display:flex;align-items:center;gap:8px}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text-2);width:34px;height:34px;border-radius:10px;display:grid;place-items:center;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.icon-btn:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.icon-btn svg{width:16px;height:16px}.date-pill{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);letter-spacing:0}.main{display:grid;gap:0;min-height:0;height:calc(100vh - 60px)}.main[data-layout=split]{grid-template-columns:minmax(0,1fr) minmax(360px,440px)}.main[data-layout=reports-first]{grid-template-columns:minmax(360px,440px) minmax(0,1fr)}.main[data-layout=stacked]{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}@media (max-width: 880px){.main,.main[data-layout=split],.main[data-layout=reports-first],.main[data-layout=stacked]{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}}.chat{display:flex;flex-direction:column;min-height:0;background:var(--bg);position:relative}.chat-stream{flex:1;overflow-y:auto;padding:32px 24px 24px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.chat-stream::-webkit-scrollbar{width:10px}.chat-stream::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid var(--bg);border-radius:999px}.chat-inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.msg{display:flex;gap:12px;max-width:100%}.msg-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:12px;font-weight:600}.msg.user .msg-avatar{background:var(--surface-3);color:var(--text-2)}.msg.ai .msg-avatar{background:var(--text);color:var(--bg)}.msg-body{padding-top:3px;min-width:0;flex:1}.msg-body p{margin:0 0 8px}.msg-body p:last-child{margin-bottom:0}.msg-name{font-size:12px;color:var(--text-muted);margin-bottom:4px;font-weight:500}.msg.user .msg-body{color:var(--text-2)}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 24px;height:100%;gap:16px}.chat-empty h1{font-size:28px;font-weight:500;letter-spacing:-.02em;margin:0}.chat-empty p{color:var(--text-muted);max-width:420px;margin:0}.chat-empty .prompts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;max-width:540px}.prompt-chip{padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text-2);font-size:13px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.prompt-chip:hover{background:var(--surface-2);border-color:var(--border-strong);color:var(--text)}.composer-wrap{border-top:1px solid var(--border);padding:16px 24px 20px;background:var(--bg)}.composer-inner{max-width:720px;margin:0 auto}.composer{display:flex;align-items:flex-end;gap:8px;padding:10px 10px 10px 16px;border:1px solid var(--border-strong);border-radius:18px;background:var(--surface);transition:border-color .15s,box-shadow .15s}.composer:focus-within{border-color:var(--text-faint);box-shadow:0 0 0 4px #14120c0a}.composer textarea{flex:1;resize:none;border:0;outline:0;background:transparent;padding:6px 0;font-size:15px;line-height:1.45;max-height:160px;min-height:24px}.composer textarea::placeholder{color:var(--text-faint)}.send-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:var(--text);color:var(--bg);width:32px;height:32px;border-radius:50%;display:grid;place-items:center;cursor:pointer;flex-shrink:0;transition:background .12s,opacity .12s}.send-btn:hover{background:var(--text-2)}.send-btn:disabled{opacity:.35;cursor:default;background:var(--text-faint)}.send-btn svg{width:14px;height:14px}.composer-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 0 8px}.composer-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:6px 10px;font-size:12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:background .12s,color .12s,border-color .12s}.composer-chip:hover{background:var(--surface-2);color:var(--text)}.composer-chip svg{width:11px;height:11px}.meal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);margin-top:4px}.meal-card-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;gap:12px}.meal-card-title{font-size:14px;font-weight:600;letter-spacing:-.01em}.meal-card-meta{font-size:12px;color:var(--text-muted);display:flex;gap:6px;align-items:center}.meal-card-meta .dot{width:3px;height:3px;background:var(--text-faint);border-radius:50%}.meal-items{padding:0 16px;display:flex;flex-direction:column}.meal-item{display:grid;grid-template-columns:1fr auto;align-items:baseline;padding:8px 0;border-top:1px solid var(--border);gap:12px}.meal-item:first-child{border-top:0}.meal-item-name{font-size:14px;min-width:0}.meal-item-portion{color:var(--text-muted);font-size:13px;font-weight:400;margin-left:6px}.meal-item-kcal{font-family:var(--font-mono);font-size:13px;color:var(--text-2);white-space:nowrap}.meal-item-edit{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);font-size:11px;padding:2px 4px;margin-left:6px;cursor:pointer;border-radius:4px}.meal-item-edit:hover{color:var(--accent);background:var(--accent-soft)}.meal-edit-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--border)}.meal-edit-row input{flex:1;min-width:0;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface)}.meal-edit-row input.kcal{flex:0 0 70px;text-align:right;font-family:var(--font-mono)}.meal-totals{display:grid;grid-template-columns:1fr repeat(3,auto);gap:14px;padding:12px 16px;background:var(--surface-2);border-top:1px solid var(--border);align-items:center}.meal-total-kcal{font-family:var(--font-mono);font-size:22px;font-weight:500;letter-spacing:-.02em}.meal-total-kcal small{font-size:11px;color:var(--text-muted);margin-left:4px;font-family:var(--font-sans);font-weight:400}.macro-pill{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.macro-pill-val{font-family:var(--font-mono);font-size:13px;font-weight:500;line-height:1}.macro-pill-lbl{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.macro-pill.protein .macro-pill-val{color:var(--protein)}.macro-pill.carbs .macro-pill-val{color:var(--carbs)}.macro-pill.fat .macro-pill-val{color:var(--fat)}.meal-actions{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:8px 14px;border-radius:999px;font-size:13px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn.primary:hover{background:var(--text-2);border-color:var(--text-2)}.btn.subtle{border:0;background:transparent;color:var(--text-muted);padding:8px 10px}.btn.subtle:hover{color:var(--text);background:var(--surface-2)}.btn.danger{color:#c13d2a}.meal-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--fat);font-weight:500;padding:8px 16px 12px}.meal-status svg{width:13px;height:13px}.reports{background:var(--surface);border-left:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.reports::-webkit-scrollbar{width:10px}.reports::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid var(--surface);border-radius:999px}.main[data-layout=reports-first] .reports{border-left:0;border-right:1px solid var(--border)}.main[data-layout=stacked] .reports{border-left:0;border-bottom:1px solid var(--border);display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border)}.main[data-layout=stacked] .reports>section{background:var(--surface);border-bottom:0}@media (max-width: 880px){.reports{border-left:0;border-bottom:1px solid var(--border);max-height:none}}.report-section{padding:20px 22px;border-bottom:1px solid var(--border)}.report-section:last-child{border-bottom:0}.report-hd{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.report-hd h3{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.report-hd .sub{font-size:12px;color:var(--text-faint);font-family:var(--font-mono)}.goal-bar{display:flex;flex-direction:column;gap:12px}.goal-bar-numbers{display:flex;align-items:baseline;gap:8px}.goal-bar-current{font-family:var(--font-mono);font-size:40px;font-weight:500;letter-spacing:-.03em;line-height:1}.goal-bar-sep{color:var(--text-faint);font-size:24px;font-family:var(--font-mono)}.goal-bar-goal{color:var(--text-muted);font-family:var(--font-mono);font-size:18px}.goal-bar-unit{color:var(--text-muted);font-size:13px;margin-left:2px}.goal-bar-track{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden;position:relative}.goal-bar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .5s cubic-bezier(.3,.7,.4,1);position:relative}.goal-bar-fill.over{background:linear-gradient(90deg,var(--accent) 0%,#C13D2A 100%)}.goal-bar-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted)}.goal-bar-meta strong{color:var(--text);font-weight:500}.goal-ring-wrap{display:flex;align-items:center;gap:18px}.goal-ring{width:120px;height:120px;position:relative;flex-shrink:0}.goal-ring svg{transform:rotate(-90deg)}.goal-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1}.goal-ring-center .v{font-family:var(--font-mono);font-size:26px;font-weight:500;letter-spacing:-.02em}.goal-ring-center .l{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}.goal-ring-side{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}.goal-ring-side .row{display:flex;justify-content:space-between;font-size:13px}.goal-ring-side .row span{color:var(--text-muted)}.goal-ring-side .row strong{font-family:var(--font-mono);font-weight:500;color:var(--text)}.goal-stack{display:flex;flex-direction:column;gap:10px}.goal-stack-row{display:grid;grid-template-columns:80px 1fr 56px;align-items:center;gap:10px;font-size:13px}.goal-stack-row .lbl{color:var(--text-muted)}.goal-stack-row .v{font-family:var(--font-mono);text-align:right;color:var(--text-2);font-size:12px}.goal-stack-bar{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.goal-stack-bar i{display:block;height:100%;background:var(--accent);border-radius:999px}.goal-rings{display:flex;align-items:center;gap:20px}.tri-rings{width:130px;height:130px;position:relative;flex-shrink:0}.tri-rings svg{transform:rotate(-90deg)}.tri-rings-legend{display:flex;flex-direction:column;gap:6px;font-size:12px;flex:1;min-width:0}.tri-rings-legend .row{display:flex;align-items:center;gap:8px}.tri-rings-legend .swatch{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tri-rings-legend .name{flex:1;color:var(--text-muted)}.tri-rings-legend .val{font-family:var(--font-mono);color:var(--text)}.macros{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.macro{background:var(--surface-2);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:6px}.macro-hd{display:flex;align-items:center;justify-content:space-between}.macro-name{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500}.macro-dot{width:6px;height:6px;border-radius:50%}.macro.protein .macro-dot{background:var(--protein)}.macro.carbs .macro-dot{background:var(--carbs)}.macro.fat .macro-dot{background:var(--fat)}.macro-val{font-family:var(--font-mono);font-size:18px;font-weight:500;letter-spacing:-.02em}.macro-val small{font-size:11px;color:var(--text-muted);font-weight:400;margin-left:1px}.macro-track{height:3px;border-radius:999px;background:var(--surface-3);overflow:hidden}.macro-track i{display:block;height:100%;border-radius:999px}.macro.protein .macro-track i{background:var(--protein)}.macro.carbs .macro-track i{background:var(--carbs)}.macro.fat .macro-track i{background:var(--fat)}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:end;height:80px}.week-bar{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}.week-bar-track{width:100%;flex:1;background:var(--surface-2);border-radius:6px;position:relative;overflow:hidden;min-height:4px}.week-bar-fill{position:absolute;left:0;right:0;bottom:0;background:var(--accent);border-radius:6px;opacity:.9}.week-bar-fill.over{background:#c13d2a}.week-bar.today .week-bar-fill{box-shadow:0 0 0 2px var(--bg);outline:1.5px solid var(--text);outline-offset:-1.5px}.week-bar-day{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:500}.week-bar.today .week-bar-day{color:var(--text);font-weight:600}.week-meta{display:flex;justify-content:space-between;margin-top:14px;font-size:12px;color:var(--text-muted)}.week-meta strong{color:var(--text);font-family:var(--font-mono);font-weight:500}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:12px}.month-cell{aspect-ratio:1;border-radius:4px;background:var(--surface-2);position:relative;display:grid;place-items:center;font-size:9px;color:var(--text-faint);font-family:var(--font-mono)}.month-cell.has-data{background:color-mix(in srgb,var(--accent) calc(var(--p) * 100%),var(--surface-2));color:color-mix(in srgb,var(--text) calc(var(--p) * 60%),var(--text-muted))}.month-cell.today{outline:1.5px solid var(--text);outline-offset:-1px}.month-cell.over{background:repeating-linear-gradient(45deg,var(--accent),var(--accent) 2px,#C13D2A 2px,#C13D2A 4px);color:#fff}.month-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;padding-top:12px;border-top:1px solid var(--border)}.month-stat .v{font-family:var(--font-mono);font-size:17px;font-weight:500;letter-spacing:-.02em}.month-stat .l{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.history-list{display:flex;flex-direction:column}.history-row{display:grid;grid-template-columns:40px 1fr auto auto;gap:10px;padding:10px 0;border-top:1px solid var(--border);align-items:center;position:relative}.history-row:first-child{border-top:0}.history-time{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}.history-name{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-items{font-size:11px;color:var(--text-muted);margin-top:1px}.history-kcal{font-family:var(--font-mono);font-size:13px;color:var(--text);font-weight:500}.history-del{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-faint);width:24px;height:24px;border-radius:6px;cursor:pointer;display:grid;place-items:center;opacity:0;transition:opacity .12s,color .12s}.history-row:hover .history-del{opacity:1}.history-del:hover{color:var(--accent);background:var(--accent-soft)}.history-del svg{width:12px;height:12px}.history-empty{text-align:center;padding:28px 0;color:var(--text-faint);font-size:13px}.typing{display:inline-flex;gap:3px;align-items:center;padding:6px 0}.typing i{width:5px;height:5px;background:var(--text-faint);border-radius:50%;animation:bounce 1.2s infinite ease-in-out}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-3px);opacity:1}}.quick-replies{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.quick-reply{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:6px 12px;border-radius:999px;font-size:12.5px;cursor:pointer;transition:background .12s,border-color .12s}.quick-reply:hover{background:var(--surface-2);border-color:var(--text-faint)}.mini-summary{display:none;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);gap:14px;align-items:center}@media (max-width: 880px){.mini-summary{display:flex}.reports{display:none}.reports.mobile-open{display:flex;position:fixed;top:110px;right:0;bottom:0;left:0;z-index:10;border-left:0;max-height:none}}.mini-summary .mini-num{font-family:var(--font-mono);font-size:18px;font-weight:500}.mini-summary .mini-num small{font-size:11px;color:var(--text-muted);margin-left:2px}.mini-summary .mini-bar{flex:1;height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden}.mini-summary .mini-bar i{display:block;height:100%;background:var(--accent)}.mini-summary .mini-toggle{font-size:12px;color:var(--text-muted);background:none;border:0;cursor:pointer}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:13px;z-index:50;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:8px;animation:toast-in .25s ease}.toast svg{width:14px;height:14px}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.date-pill{white-space:nowrap}@media (max-width: 880px){.brand-sub{display:none}.main,.main[data-layout=split],.main[data-layout=reports-first],.main[data-layout=stacked]{grid-template-rows:1fr}}
