:root{--bg: #f7f3ee;--surface: #ffffff;--surface-2: #f0eae2;--line: #ece6de;--text: #2b2a28;--text-2: #4a4744;--muted: #8b857d;--muted-2: #a9a39a;--accent: #2f6b4f;--accent-dark: #245540;--accent-soft: #e6edea;--terra: #c96a4a;--terra-dark: #8e3f26;--terra-soft: #f6e2d8;--danger: #b5473a;--shadow: 0 1px 2px rgba(60, 40, 20, .05);--radius-xl: 24px;--radius-lg: 20px;--radius-md: 16px;--radius-sm: 12px;--safe-bottom: env(safe-area-inset-bottom, 0px);--tabbar-h: 58px;--font: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-weight:500;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}button,input,textarea,select{font-family:inherit}.app-shell{display:flex;flex-direction:column;height:100%;max-width:560px;margin:0 auto}.screen{flex:1;overflow-y:auto;padding:20px 16px calc(var(--tabbar-h) + var(--safe-bottom) + 16px)}.screen--no-tabbar{padding-bottom:24px}.screen--chat{padding-top:0}.top-header{display:flex;flex-direction:column;gap:3px;margin-bottom:16px}.top-header__title{margin:0;font-size:26px;font-weight:800;line-height:32px;letter-spacing:-.2px}.top-header__eyebrow{font-size:14px;font-weight:600;color:var(--muted)}.chat-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;margin:0 -16px 8px;padding:12px 16px 10px;background:var(--bg)}.chat-header__avatar{width:42px;height:42px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-header__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.chat-header__name{font-size:18px;font-weight:800;line-height:22px}.chat-header__status{font-size:13px;font-weight:600;line-height:17px;color:var(--muted)}.chat-header__action{height:38px;padding:0 14px 0 12px;border-radius:19px;border:0;background:var(--terra-soft);color:var(--terra-dark);font-size:13px;font-weight:800;display:flex;align-items:center;gap:6px;cursor:pointer;flex-shrink:0}.chat-header__action:active{opacity:.8}.chat-header__action--chat{background:var(--accent-soft);color:var(--accent)}.session-banner{position:sticky;top:64px;z-index:4;display:flex;align-items:center;gap:10px;width:100%;margin:0 0 10px;padding:10px 12px;border:0;border-radius:16px;background:var(--terra-soft);color:var(--text);text-align:left;cursor:pointer;box-shadow:0 2px 8px #3c281414}.session-banner__icon{width:30px;height:30px;border-radius:50%;background:var(--terra);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.session-banner__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.session-banner__title,.session-banner__meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-banner__title{font-size:13px;font-weight:800;color:var(--terra-dark)}.session-banner__meta{font-size:12px;font-weight:600;color:var(--text-2)}.session-banner__cta{font-size:12px;font-weight:800;color:var(--terra-dark);flex-shrink:0}.card{background:var(--surface);border-radius:var(--radius-xl);padding:16px;box-shadow:var(--shadow);margin-bottom:12px}.card--soft{background:var(--accent-soft);box-shadow:none}.card--warm{background:var(--terra-soft);box-shadow:none}.card__title{font-size:15px;font-weight:800;margin:0 0 4px}.card__subtitle{font-size:13px;font-weight:600;color:var(--muted);margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;height:46px;padding:0 20px;font-size:15px;font-weight:800;cursor:pointer;width:100%;transition:transform .08s ease,opacity .15s ease}.btn:active{transform:scale(.97)}.btn--primary{background:var(--accent);color:#fff}.btn--terra{background:var(--terra);color:#fff}.btn--secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.btn--white{background:var(--surface);color:var(--accent);box-shadow:var(--shadow)}.btn--ghost{background:transparent;color:var(--muted);width:auto;height:auto;padding:8px 4px;font-weight:700}.btn:disabled{opacity:.5;cursor:not-allowed}.field{margin-bottom:16px}.field__label{display:block;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:6px}.field__input,.field__textarea,.field__select{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;font-size:15px;font-weight:600}.field__input::placeholder,.field__textarea::placeholder{color:var(--muted-2);font-weight:500}.field__input:focus,.field__textarea:focus{outline:none;border-color:var(--accent)}.field__textarea{resize:vertical;min-height:70px}.form-error{color:var(--danger);font-size:13px;font-weight:600;margin:0 0 12px}.chip-group{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:10px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:13px;font-weight:700;cursor:pointer}.chip--active{background:var(--accent);border-color:var(--accent);color:#fff}.tab-bar{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));height:calc(var(--tabbar-h) + var(--safe-bottom));padding:4px 8px var(--safe-bottom);background:var(--surface);border-top:1px solid var(--line);max-width:560px;margin:0 auto}.tab-bar__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:none;padding:0;min-width:0;color:var(--muted-2);font-size:11px;font-weight:700;cursor:pointer}.tab-bar__item--active{color:var(--accent);font-weight:800}.stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat-box{background:var(--surface);border-radius:18px;padding:12px 10px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2px}.stat-box__value{font-size:22px;font-weight:800;line-height:26px}.stat-box__label{font-size:11px;font-weight:700;color:var(--muted)}.hero__top{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-bottom:6px}.hero__label{font-size:13px;font-weight:700;color:#6f6961}.hero__value{display:flex;align-items:baseline;gap:6px}.hero__number{font-size:38px;font-weight:800;line-height:44px;color:var(--accent)}.hero__unit{font-size:16px;font-weight:700;color:#6f6961}.hero__chip{height:30px;padding:0 12px;border-radius:15px;background:var(--surface);color:var(--accent);font-size:13px;font-weight:800;display:flex;align-items:center;margin-bottom:8px;white-space:nowrap}.today__label{font-size:13px;font-weight:700;color:var(--terra-dark)}.today__title{font-size:18px;font-weight:800;line-height:24px;margin:2px 0}.today__meta{font-size:13px;font-weight:600;color:#6f6961}.tip__head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:800;color:var(--accent);margin-bottom:6px}.tip__text{font-size:14.5px;font-weight:500;line-height:1.45}.chart-empty{font-size:13px;font-weight:600;color:var(--muted);padding:10px 0 4px;margin:0}.chart-legend{display:flex;gap:16px;justify-content:center;margin-top:6px;font-size:11px;font-weight:600;color:var(--muted)}.chart-legend__dot{display:inline-block;width:14px;height:2px;margin-right:5px;vertical-align:middle;background:var(--accent)}.chart-legend__dot--dashed{background:repeating-linear-gradient(90deg,var(--accent) 0 4px,transparent 4px 7px)}.chat-list{display:flex;flex-direction:column;gap:8px;padding-bottom:80px}.chat-bubble{max-width:82%;padding:11px 15px;border-radius:22px;font-size:15px;line-height:1.4;white-space:pre-wrap;font-weight:500}.chat-bubble--user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:8px;font-weight:600}.chat-bubble--assistant{align-self:flex-start;background:var(--surface);color:var(--text);border-bottom-left-radius:8px;box-shadow:var(--shadow)}.chat-bubble--image{padding:4px}.chat-bubble--error{color:var(--danger)}.chat-bubble--typing{display:flex;gap:4px;align-items:center;padding:15px}.chat-bubble--typing span{width:6px;height:6px;border-radius:50%;background:var(--muted-2);animation:blink 1.2s infinite ease-in-out}.chat-bubble--typing span:nth-child(2){animation-delay:.2s}.chat-bubble--typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.chat-input-bar{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + var(--safe-bottom));display:flex;align-items:center;gap:8px;padding:8px 12px 10px;background:var(--bg);max-width:560px;margin:0 auto}.chat-input-bar__input{flex:1;min-width:0;height:46px;border-radius:23px;border:0;background:var(--surface);color:var(--text);padding:0 18px;font-size:15px;font-weight:600;box-shadow:var(--shadow)}.chat-input-bar__input::placeholder{color:var(--muted-2);font-weight:500}.chat-input-bar__input:focus{outline:none}.chat-input-bar__send,.chat-input-bar__attach{width:46px;height:46px;border-radius:50%;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.chat-input-bar__send{background:var(--accent);color:#fff}.chat-input-bar__attach{background:var(--surface);color:#6f6961;box-shadow:var(--shadow)}.chat-input-bar__send:disabled,.chat-input-bar__attach:disabled{opacity:.5}.chat-bubble__image{display:block;width:100%;max-width:220px;max-height:220px;object-fit:cover;border-radius:18px}.chat-bubble--food{max-width:100%;width:100%;white-space:normal;padding:14px 15px}.chat-food__dish{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;margin-bottom:10px}.chat-food__dish svg{color:var(--accent);flex-shrink:0}.chat-food__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:10px}.chat-food__stat{display:flex;flex-direction:column;align-items:center;padding:8px 2px;border-radius:14px;background:var(--bg)}.chat-food__stat:first-child{background:var(--accent-soft)}.chat-food__stat:first-child b{color:var(--accent)}.chat-food__stat b{font-size:17px;font-weight:800}.chat-food__stat span{font-size:10px;font-weight:700;color:var(--muted);margin-top:2px;text-align:center}.chat-food__note{font-size:13.5px;line-height:1.45;color:var(--text-2)}.chat-food__total{margin-top:8px;font-size:12px;font-weight:800;color:var(--accent)}.food-preview{display:block;width:100%;border-radius:var(--radius-md);margin-bottom:12px}.food-result{background:var(--accent-soft);border-radius:var(--radius-lg);padding:14px;margin-bottom:12px}.food-result__dish{font-size:16px;font-weight:800;margin:0 0 10px}.food-result__note{font-size:13.5px;font-weight:500;line-height:1.45;color:var(--text-2);margin:0}.food-result .chat-food__stat,.food-result .chat-food__stat:first-child{background:var(--surface)}.list-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:none;padding-bottom:2px}.list-item__title{font-weight:700;font-size:14.5px}.list-item__meta{font-size:12.5px;font-weight:600;color:var(--muted)}.exercise-card{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.exercise-card:last-child{border-bottom:none}.exercise-card--clickable{width:100%;background:none;border:none;border-radius:0;cursor:pointer;text-align:left;color:inherit}.exercise-card--clickable:active{opacity:.7}.exercise-card__name{font-weight:700;font-size:14.5px}.exercise-card__detail{font-size:12.5px;font-weight:600;color:var(--muted);margin-top:2px;white-space:nowrap}.badge{font-size:11px;font-weight:800;padding:5px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.empty-state{text-align:center;padding:36px 16px;color:var(--muted);font-size:14px;font-weight:600;line-height:1.45}.empty-state__icon{width:56px;height:56px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}.empty-state__title{font-size:17px;font-weight:800;color:var(--text);margin:0 0 6px}.onboarding{display:flex;flex-direction:column;min-height:100%;padding:24px 20px 32px}.onboarding__progress{display:flex;gap:6px;margin-bottom:24px}.onboarding__dot{flex:1;height:5px;border-radius:3px;background:var(--line)}.onboarding__dot--active{background:var(--accent)}.onboarding__title{font-size:24px;font-weight:800;margin:0 0 6px}.onboarding__subtitle{font-size:14px;font-weight:600;color:var(--muted);margin:0 0 24px}.onboarding__footer{margin-top:auto;display:flex;gap:10px;padding-top:20px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b2a2873;display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:overlay-in .2s ease-out}.modal-overlay--closing{opacity:0;transition:opacity .22s ease-in;pointer-events:none}.modal-sheet{width:100%;max-width:560px;background:var(--surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:10px 20px calc(28px + var(--safe-bottom));max-height:80vh;overflow-y:auto;overscroll-behavior:contain;animation:sheet-in .26s cubic-bezier(.2,.8,.2,1);transition:transform .22s ease-out}.modal-sheet--closing{transform:translateY(100%);transition:transform .22s ease-in}.modal-sheet__handle{width:40px;height:4px;border-radius:2px;background:var(--line);margin:4px auto 14px}.has-sheet .screen{overflow:hidden}@keyframes overlay-in{0%{opacity:0}}@keyframes sheet-in{0%{transform:translateY(100%)}}@media (prefers-reduced-motion: reduce){.modal-overlay,.modal-sheet{animation:none}}.exercise-anim{width:100%;max-width:260px;display:block;margin:0 auto}.exercise-illustration{width:100%;max-width:400px;aspect-ratio:4 / 3;margin:0 auto;background:var(--accent);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;animation:illustration-breathe 2.2s ease-in-out infinite}@keyframes illustration-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.015)}}.exercise-photo{position:relative;width:100%;max-width:300px;aspect-ratio:1;margin:0 auto;overflow:hidden}.exercise-photo__frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}.exercise-photo--animated .exercise-photo__frame--main{animation:photo-main 3s ease-in-out infinite}.exercise-photo--animated .exercise-photo__frame--start{animation:photo-start 3s ease-in-out infinite}@keyframes photo-main{0%,45%{opacity:1}50%,90%{opacity:0}95%,to{opacity:1}}@keyframes photo-start{0%,45%{opacity:0}50%,90%{opacity:1}95%,to{opacity:0}}.exercise-illustration--skeleton{background:var(--surface-2);border-radius:var(--radius-md);animation:skeleton-pulse 1.1s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.6}50%{opacity:1}}.camera-preview{width:100%;border-radius:var(--radius-md);background:#000;display:block;max-height:60vh;object-fit:cover}.camera-controls{display:flex;justify-content:center;margin-top:16px}.camera-shutter{width:62px;height:62px;border-radius:50%;border:4px solid var(--surface);outline:3px solid var(--accent);outline-offset:2px;background:var(--accent);cursor:pointer}.camera-shutter:active{transform:scale(.94)}.session{padding-bottom:24px}.session__progress{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin-bottom:8px}.session__progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.session__counter{text-align:center;font-size:12.5px;font-weight:700;color:var(--muted);margin:0 0 14px}.session__card{background:var(--surface);border-radius:var(--radius-xl);padding:20px 18px;text-align:center;box-shadow:var(--shadow);margin-bottom:16px}.session__name{font-size:20px;font-weight:800;margin:12px 0 8px}.session__note{margin-top:12px;display:flex;align-items:flex-start;gap:8px;background:var(--accent-soft);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;font-weight:600;text-align:left;line-height:1.4}.session__note svg{color:var(--accent);flex-shrink:0;margin-top:1px}.session__tip{margin-top:12px;font-size:13.5px;font-weight:500;color:var(--text-2);line-height:1.5;text-align:left}.session__actions{display:flex;flex-direction:column;gap:10px}.session__wrapup{padding:30px 10px}.session__flash{text-align:center;font-size:13.5px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:8px 14px;margin:0 auto 14px;width:fit-content;animation:flash-pop .25s ease}@keyframes flash-pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.chat-retry{align-self:flex-start;max-width:82%;background:var(--surface);border-radius:22px 22px 22px 8px;box-shadow:var(--shadow);padding:11px 15px;font-size:14px;font-weight:600;line-height:1.4;color:var(--muted);display:flex;flex-direction:column;gap:8px}.chat-retry__btn{align-self:flex-start;height:34px;padding:0 14px;border-radius:17px;border:0;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:800;cursor:pointer}.meter{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.meter__fill{height:100%;border-radius:3px;background:var(--accent);transition:width .3s ease}.chat-food__total{display:flex;flex-direction:column;gap:6px}.session__set{margin-top:8px;font-size:13px;font-weight:700;color:var(--muted)}.rest{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 18px}.rest__label{font-size:13px;font-weight:800;color:var(--muted);letter-spacing:.3px;text-transform:uppercase}.rest__time{font-size:56px;font-weight:800;line-height:60px;color:var(--accent);font-variant-numeric:tabular-nums}.rest__next{font-size:14px;font-weight:600;color:var(--text-2);text-align:center}.top-header--row{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.icon-btn{width:40px;height:40px;border-radius:50%;border:0;background:var(--surface);color:var(--accent);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.mannequin__torso{transform-origin:50px 73px}.mannequin__upperarm{transform-origin:60px 30px}.mannequin__forearm{transform-origin:67px 49px}.mannequin__thigh{transform-origin:57px 73px}.mannequin__shin{transform-origin:57px 104px}.mannequin--squat .mannequin__body{animation:sq-body 1.6s ease-in-out infinite}.mannequin--squat .mannequin__torso{animation:sq-torso 1.6s ease-in-out infinite}.mannequin--squat .mannequin__thigh{animation:sq-thigh 1.6s ease-in-out infinite}.mannequin--squat .mannequin__shin{animation:sq-shin 1.6s ease-in-out infinite}@keyframes sq-body{0%,to{transform:translateY(0)}50%{transform:translateY(12px)}}@keyframes sq-torso{0%,to{transform:rotate(0)}50%{transform:rotate(8deg)}}@keyframes sq-thigh{0%,to{transform:rotate(0)}50%{transform:rotate(-16deg)}}@keyframes sq-shin{0%,to{transform:rotate(0)}50%{transform:rotate(30deg)}}.mannequin--push .mannequin__upperarm{animation:push-upperarm 1.4s ease-in-out infinite}.mannequin--push .mannequin__forearm{animation:push-forearm 1.4s ease-in-out infinite}@keyframes push-upperarm{0%,to{transform:rotate(0)}50%{transform:rotate(-130deg)}}@keyframes push-forearm{0%,to{transform:rotate(0)}50%{transform:rotate(20deg)}}.mannequin--pull .mannequin__body{animation:pull-body 1.5s ease-in-out infinite}.mannequin--pull .mannequin__upperarm{animation:pull-upperarm 1.5s ease-in-out infinite}.mannequin--pull .mannequin__forearm{animation:pull-forearm 1.5s ease-in-out infinite}@keyframes pull-body{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes pull-upperarm{0%,to{transform:rotate(-165deg)}50%{transform:rotate(-115deg)}}@keyframes pull-forearm{0%,to{transform:rotate(0)}50%{transform:rotate(55deg)}}.mannequin--hinge .mannequin__torso{animation:hinge-torso 1.8s ease-in-out infinite}@keyframes hinge-torso{0%,to{transform:rotate(0)}50%{transform:rotate(38deg)}}.mannequin--core .mannequin__torso{transform:rotate(6deg)}.mannequin--core .mannequin__body{animation:core-pulse 2s ease-in-out infinite}@keyframes core-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.015)}}.mannequin--cardio .mannequin__body{animation:cardio-body .6s ease-in-out infinite}.mannequin--cardio .mannequin__upperarm{animation:cardio-upperarm .6s ease-in-out infinite}.mannequin--cardio .mannequin__thigh{animation:cardio-thigh .6s ease-in-out infinite}.splash{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg)}.splash__logo{width:72px;height:72px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;animation:splash-pulse 1.4s ease-in-out infinite}@keyframes splash-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.72;transform:scale(.95)}}
