:root{--bg: #f7f5f2;--card: #fffdfb;--ink: #262220;--ink-2: #6d645c;--muted: #a39a92;--line: #eae4dd;--line-strong: #ddd4ca;--accent: #b05e40;--accent-deep: #96492f;--accent-soft: #f6eae4;--good: #4c8a62;--good-soft: #e9f2ec;--warn: #c2932f;--water: #4c86a8;--water-soft: #e8f1f6;--danger: #a33f2c;--danger-soft: #f5e5e1;--fs-xs: 11px;--fs-sm: 12.5px;--fs-base: 15px;--fs-md: 16.5px;--fs-lg: 21px;--fs-xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--radius: 16px;--radius-sm: 10px;--radius-pill: 999px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;height:100%;overscroll-behavior-y:none}#root{height:100%}button{font:inherit;border:none;background:none;color:inherit;cursor:pointer;padding:0}input,textarea,select{font:inherit;color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:flex;flex-direction:column;height:100dvh;max-width:640px;margin:0 auto}.header{padding:var(--sp-3) var(--sp-4) var(--sp-2);display:flex;align-items:baseline;justify-content:space-between}.header h1{font-size:17px;margin:0;font-weight:700;letter-spacing:-.2px}.header .week{font-size:var(--fs-sm);color:var(--ink-2);font-weight:600}.reward-badge{color:var(--warn);font-weight:700}.summary{margin:0 var(--sp-3);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-4)}.summary-top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3)}.kcal-left{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.5px;line-height:1.1;font-variant-numeric:tabular-nums}.kcal-left small{display:block;font-size:var(--fs-sm);color:var(--ink-2);font-weight:500;letter-spacing:0;margin-top:var(--sp-1)}.kcal-over{color:var(--accent-deep)}.estim-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--warn);vertical-align:1px}.estim-note{color:var(--warn);font-weight:600;margin-left:var(--sp-1);white-space:nowrap}.estim-note .estim-dot{margin-right:3px}.chip-val{display:inline-flex;align-items:center;gap:3px;line-height:1}.workout-chip{text-align:center;min-width:60px;padding:var(--sp-2);border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg);font-size:var(--fs-base);font-weight:700;color:var(--muted)}.workout-chip.done{background:var(--good-soft);border-color:transparent;color:var(--good)}.workout-chip small{display:block;font-weight:600;font-size:var(--fs-xs)}.budget-bar{margin-top:var(--sp-3);height:6px;border-radius:3px;background:var(--line);overflow:hidden}.budget-bar>div{height:100%;border-radius:3px;background:var(--good);transition:width .4s ease}.budget-bar>div.warn{background:var(--warn)}.budget-bar>div.over{background:var(--accent-deep)}.summary-meals{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-2)}.water-tray{display:flex;align-items:center;gap:2px;margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line)}.glass{width:34px;height:38px;display:flex;align-items:center;justify-content:center;color:var(--water);border-radius:var(--radius-sm);transition:transform .15s ease}.glass:active{transform:scale(.88)}.glass:not(.filled){color:var(--line-strong)}.glass-svg .glass-fill{opacity:0;transform:scaleY(0);transform-origin:12px 20.8px;transition:transform .45s cubic-bezier(.22,1.4,.36,1),opacity .2s ease}.glass-svg.filled .glass-fill{opacity:.35;transform:scaleY(1)}.water-count{margin-left:auto;font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums;color:var(--water);background:var(--water-soft);border-radius:var(--radius-pill);padding:3px 10px}.tabs{display:flex;justify-content:space-around;padding:var(--sp-2) var(--sp-2) calc(var(--sp-2) + var(--safe-bottom));background:var(--card);border-top:1px solid var(--line)}.tabs button{flex:1;text-align:center;font-size:var(--fs-xs);font-weight:600;color:var(--muted);padding:var(--sp-1) 0 2px}.tabs button .ico{display:flex;align-items:center;justify-content:center;height:24px;margin-bottom:3px}.tabs button.active .ico{transform:translateY(-1px);transition:transform .15s ease}.tabs button.active{color:var(--accent-deep)}.chat-scroll{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-4) var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-2)}.bubble{max-width:86%;padding:10px 14px;border-radius:18px;font-size:var(--fs-base);line-height:1.45;white-space:pre-wrap;word-break:break-word}.bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:6px}.bubble.coach{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-bottom-left-radius:6px}.bubble img{max-width:100%;border-radius:var(--radius-sm);margin-top:var(--sp-2);display:block}.bubble .time{display:block;font-size:10.5px;opacity:.55;margin-top:3px}.day-divider{text-align:center;font-size:var(--fs-sm);color:var(--muted);font-weight:600;margin:var(--sp-2) 0 0}.typing{align-self:flex-start;color:var(--muted);font-size:14px;padding:var(--sp-2) 14px}.typing span{animation:blink 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.25}30%{opacity:1}}.quick-actions{background:var(--card);border-top:1px solid var(--line);position:relative}.qa-bar{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) 0}.qa-chip{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;color:var(--ink-2);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-pill);padding:7px 13px;transition:background .15s ease,color .15s ease}.qa-chip.open,.qa-chip:active{background:var(--accent-soft);border-color:transparent;color:var(--accent-deep)}.qa-chip:disabled{opacity:.5}.qa-panel{display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-2) var(--sp-3) 0}.qa-panel input,.qa-panel select{border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px var(--sp-3);background:var(--bg);outline:none;min-width:0}.qa-panel input{width:90px}.qa-panel select{flex:1}.qa-flash{position:absolute;top:-38px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:13px;font-weight:600;border-radius:var(--radius-pill);padding:6px 14px;white-space:nowrap;pointer-events:none}.composer{display:flex;align-items:flex-end;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) calc(var(--sp-2) + var(--safe-bottom) / 2);background:var(--card)}.composer textarea{flex:1;resize:none;border:1px solid var(--line-strong);border-radius:22px;padding:11px 14px;max-height:120px;background:var(--bg);outline:none}.composer textarea:focus{border-color:var(--accent)}.icon-btn{width:44px;height:44px;min-width:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--line);color:var(--ink-2)}.icon-btn.send{background:var(--accent);border-color:transparent;color:#fff}.icon-btn.send:disabled{opacity:.4}.icon-btn.recording{background:var(--accent-deep);border-color:transparent;color:#fff;animation:pulse 1.2s infinite}@keyframes pulse{50%{transform:scale(1.08)}}.photo-strip{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) 0;background:var(--card)}.photo-strip .thumb{position:relative}.photo-strip img{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm)}.photo-strip .remove{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:13px;line-height:22px;text-align:center}.page{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-4) var(--sp-5)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-4);margin-bottom:var(--sp-3)}.card h2{margin:0 0 var(--sp-3);font-size:var(--fs-md);font-weight:700;letter-spacing:-.2px}.stat-row{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3)}.stat{flex:1;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-3) var(--sp-2);text-align:center}.stat .num{font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.3px}.stat .num.accent{color:var(--accent-deep)}.stat .num.good{color:var(--good)}.stat small{color:var(--ink-2);font-size:var(--fs-xs);font-weight:600}.milestone{background:var(--good-soft);color:var(--good);font-weight:700;border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);font-size:14.5px}.search-row{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3)}.search-row input[type=search]{flex:1;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px 14px;background:var(--card);outline:none}.search-row input[type=date]{border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:var(--sp-2) 10px;background:var(--card);color:var(--ink)}.entry-row{display:flex;gap:10px;align-items:center;padding:var(--sp-3) var(--sp-1);border-bottom:1px solid var(--line)}.entry-row:last-child{border-bottom:none}.entry-row .ico{font-size:19px;width:28px;text-align:center}.entry-row .body{flex:1;font-size:14.5px;line-height:1.4}.entry-row .meta{font-size:var(--fs-xs);color:var(--muted);margin-top:2px}.entry-row .edit{color:var(--muted);font-weight:600;font-size:13px;padding:var(--sp-1) var(--sp-2)}.entry-photo{width:52px;height:52px;object-fit:cover;border-radius:var(--radius-sm)}.kcal-tap{display:inline-flex;align-items:baseline;gap:3px;font-size:var(--fs-base);font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:5px 9px;white-space:nowrap}.kcal-tap small{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}.kcal-tap.estimated{background:var(--card);border-style:dashed;border-color:var(--line-strong);color:var(--ink-2)}.kcal-tap .estim-dot{align-self:center}.kcal-input{width:74px;font-size:var(--fs-base);font-weight:700;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:5px 9px;background:var(--card);outline:none}.confirm-delete{display:inline-flex;gap:var(--sp-1)}.pill-btn{display:inline-flex;align-items:center;gap:5px;background:var(--accent);color:#fff;border-radius:var(--radius-sm);padding:var(--sp-2) 14px;font-weight:600;font-size:14px}.pill-btn.ghost{background:var(--bg);border:1px solid var(--line);color:var(--ink-2)}.pill-btn.danger{background:var(--danger-soft);color:var(--danger)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid .full{grid-column:1 / -1}.field label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);margin-bottom:var(--sp-1)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:10px var(--sp-3);background:var(--bg);outline:none}.field textarea{min-height:72px;resize:vertical}.rule-row{display:flex;gap:var(--sp-2);align-items:flex-start;margin-bottom:var(--sp-2)}.rule-row textarea{flex:1;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:9px var(--sp-3);background:var(--bg);min-height:44px;resize:vertical;outline:none}.rule-row textarea.inactive{opacity:.45;text-decoration:line-through}.save-note{font-size:13px;color:var(--good);font-weight:600;margin-left:10px}.pin-gate{height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-6);text-align:center}.pin-gate .logo{width:84px;height:84px;border-radius:22px}.pin-gate h1{font-size:22px;margin:0}.pin-gate input{font-size:28px;letter-spacing:12px;text-align:center;width:200px;border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--sp-3);background:var(--card);outline:none}.pin-gate .error{color:var(--accent-deep);font-weight:600;font-size:14px;min-height:20px}.chart-wrap{position:relative}.chart-tip{position:absolute;background:var(--ink);color:#fff;font-size:var(--fs-sm);padding:var(--sp-1) 10px;border-radius:var(--radius-sm);pointer-events:none;transform:translate(-50%,-120%);white-space:nowrap}.empty-note{color:var(--muted);text-align:center;font-size:14px;padding:var(--sp-6) 0}
