:root{--ad-h:0px;--safe-top:max(env(safe-area-inset-top,0px), var(--safe-area-inset-top,0px));--safe-bottom:max(env(safe-area-inset-bottom,0px), var(--safe-area-inset-bottom,0px));--bg:#f4f6f3;--card:#fff;--fg:#1d2420;--dim:#6c756f;--line:#e3e8e4;--accent:#1f9d55;--accent-soft:#e4f5ea;--user:#1f9d55;--user-fg:#fff;--warn:#e0662a;--t-아침:#f2b84b;--t-점심:#1f9d55;--t-저녁:#3c7dd9;--t-간식:#c56cd6}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);overscroll-behavior:none;font:15px/1.5 system-ui,-apple-system,Apple SD Gothic Neo,Noto Sans KR,sans-serif}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}[hidden]{display:none!important}.app{flex-direction:column;height:100%;display:flex}.adspace{height:calc(var(--safe-top) + var(--ad-h));background:var(--card);flex:none}main{flex:1;min-height:0;position:relative}.pane{flex-direction:column;display:flex;position:absolute;inset:0}.tabs{background:var(--card);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);flex:none;display:flex}.tabs button{color:#9aa39d;background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:1px;padding:6px 0 7px;font-size:11px;display:flex}.tabs button.on{color:var(--accent);font-weight:600}.chat{flex-direction:column;flex:1;min-height:0;display:flex}.msgs{-webkit-overflow-scrolling:touch;flex:1;padding:12px 12px 6px;overflow-y:auto}.older{color:var(--dim);background:0 0;border:0;margin:0 auto 10px;font-size:13px;display:block}.row{align-items:flex-end;gap:6px;margin:8px 0;display:flex}.row.user{flex-direction:row-reverse}.avatar{background:var(--accent-soft);border-radius:50%;flex:none;align-self:flex-start;place-items:center;width:32px;height:32px;font-size:17px;display:grid}.bubble{background:var(--card);word-break:break-word;border-radius:16px;max-width:80%;padding:9px 12px;box-shadow:0 1px 1px #0000000a}.row.assistant .bubble{border-top-left-radius:4px}.row.user .bubble{background:var(--user);color:var(--user-fg);border-bottom-right-radius:4px}.bubble p{margin:0 0 6px}.bubble p:last-child{margin-bottom:0}.bphoto{border-radius:10px;width:220px;max-width:100%;margin:-2px -4px 6px;display:block}.row.user .bubble:has(.bphoto:only-child){padding:4px}.row.user .bubble:has(.bphoto:only-child) .bphoto{margin:0}.saved{opacity:.9;margin-top:4px;font-size:12px}.time{color:var(--dim);flex:none;margin-bottom:2px;font-size:10px}.mdtable{border-collapse:collapse;width:100%;margin:6px 0;font-size:13.5px}.mdtable th,.mdtable td{border-bottom:1px solid var(--line);text-align:left;padding:4px 6px}.mdtable th{color:var(--dim);font-size:12px;font-weight:500}.mdtable td:last-child,.mdtable th:last-child{text-align:right;white-space:nowrap}.mdtable tr:last-child td{border-bottom:0}.typing{color:var(--dim)}.typing span{animation:1.2s infinite blink}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.2}30%{opacity:1}}.err{color:#b42318;background:#fdecec;border-radius:12px;max-width:80%;margin:6px 0 6px auto;padding:8px 12px;font-size:13px}.err div{gap:6px;margin-top:6px;display:flex}.err button{background:#fff;border:1px solid #f2b8b5;border-radius:8px;padding:3px 10px;font-size:13px}.chips{flex-wrap:wrap;gap:6px;margin:4px 0 0 38px;display:flex}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;font-size:13.5px}.chip.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.composer{background:var(--card);border-top:1px solid var(--line);flex:none;align-items:flex-end;gap:6px;padding:8px 10px;display:flex}.composer textarea{resize:none;border:1px solid var(--line);background:var(--bg);field-sizing:content;border-radius:20px;outline:none;flex:1;max-height:120px;padding:9px 14px}.composer textarea:focus{border-color:var(--accent)}.cam,.send{border:0;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.cam{background:var(--accent-soft);color:var(--accent)}.send{background:var(--accent);color:#fff;font-size:20px;font-weight:700}.cam:disabled,.send:disabled{opacity:.4}.page{flex:1;padding:12px 12px 20px;overflow-y:auto}.empty{text-align:center;color:var(--dim);padding:60px 20px;line-height:1.8}.dim{color:var(--dim)}.small{margin-top:4px;font-size:12px}.day h2{justify-content:space-between;margin:14px 4px 8px;font-size:15px;display:flex}.day h2 span{color:var(--accent)}.meal{background:var(--card);border-radius:12px;gap:10px;margin-bottom:8px;padding:8px;display:flex}.meal>img,.nophoto{object-fit:cover;background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;width:64px;height:64px;font-size:26px;display:grid}.meal.open>img{display:none}.minfo{flex:1;min-width:0}.mtop{align-items:baseline;gap:6px;display:flex}.mtop .kcal{white-space:nowrap;margin-left:auto;font-weight:600}.mfoods{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.meal.open .mfoods{white-space:normal}.mdetail img.big{border-radius:10px;width:100%;margin:8px 0 4px}.mdetail table{border-collapse:collapse;width:100%;margin-top:4px;font-size:13.5px}.mdetail td{border-bottom:1px solid var(--line);padding:3px 0}.mdetail td:last-child{text-align:right}.del{border:1px solid var(--line);color:#b42318;background:0 0;border-radius:8px;margin-top:8px;padding:4px 10px;font-size:13px}.card{background:var(--card);border-radius:14px;margin-bottom:12px;padding:14px 16px}.label{color:var(--dim);align-items:center;gap:6px;margin-bottom:6px;font-size:13px;display:flex}.big{font-size:32px;font-weight:700;line-height:1.2}.big small{color:var(--dim);font-size:15px;font-weight:500}.meter{background:var(--accent-soft);border-radius:6px;height:10px;margin:10px 0 6px;overflow:hidden}.meter div{background:var(--accent);border-radius:6px;height:100%}.meter div.over{background:var(--warn)}.today .dim{font-size:13px}.advice p{margin:0;line-height:1.65}.plot{border-bottom:1px solid var(--line);align-items:flex-end;gap:8px;height:130px;margin-top:18px;display:flex;position:relative}.plot .col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.plot .val{color:var(--dim);margin-bottom:2px;font-size:10.5px}.plot .fill{background:var(--accent);border-radius:5px 5px 0 0;width:70%;max-width:30px;min-height:0}.plot .fill.over{background:var(--warn)}.plot .target{pointer-events:none;border-top:1.5px dashed #9aa39d;position:absolute;left:0;right:0}.plot .target span{color:var(--dim);background:var(--card);padding:0 2px;font-size:10px;position:absolute;top:-16px;right:0}.days{gap:8px;margin-top:4px;display:flex}.days div{text-align:center;color:var(--dim);flex:1;font-size:12px}.days .now{color:var(--accent);font-weight:700}.stack{border-radius:7px;gap:2px;height:14px;display:flex;overflow:hidden}.legend{flex-wrap:wrap;gap:12px;margin-top:8px;font-size:13px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.t-아침{background:var(--t-아침)}.t-점심{background:var(--t-점심)}.t-저녁{background:var(--t-저녁)}.t-간식{background:var(--t-간식)}.top{margin:0;padding-left:20px}.top li{padding:4px 0}.top li span:first-child{margin-right:8px}.top li .dim{font-size:12.5px}.profile{border-collapse:collapse;width:100%}.profile th{text-align:left;color:var(--dim);border-bottom:1px solid var(--line);width:34%;padding:8px 0;font-size:14px;font-weight:500}.profile td{border-bottom:1px solid var(--line);padding:6px 0}.profile tr:last-child th,.profile tr:last-child td{border-bottom:0}.profile input,.profile select{border:1px solid var(--line);background:var(--bg);border-radius:8px;width:100%;padding:6px 8px}.link{color:var(--accent);background:0 0;border:0;margin-left:auto;font-size:13px}.btns{gap:8px;margin-top:12px;display:flex}.btns button{border:1px solid var(--line);background:var(--card);border-radius:10px;flex:1;padding:9px}.btns .primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.about .dim{font-size:13px}
