.app-layout{background:var(--page-bg);background-color:var(--page-bottom);flex-direction:column;min-height:100dvh;display:flex}.app-main{padding:calc(env(safe-area-inset-top,0px) + 18px) 16px 96px;-webkit-overflow-scrolling:touch;background:var(--page-bg);background-color:var(--page-bottom);flex-direction:column;flex:1;gap:14px;min-height:100%;display:flex;overflow-y:auto}@keyframes cardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.card,.meal-group,.widget{animation:.35s cubic-bezier(.22,1,.36,1) both cardIn}.tab-bar{-webkit-backdrop-filter:blur(28px)saturate(180%);border-top:.5px solid var(--separator);width:100%;max-width:430px;min-height:80px;padding-top:8px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 4px);z-index:100;background:#fafafce0;align-items:flex-start;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -14px 36px #0000000f}.tab-item{color:var(--text-tertiary);-webkit-tap-highlight-color:transparent;letter-spacing:0;flex-direction:column;flex:1;align-items:center;gap:3px;padding:4px 0;font-size:11px;font-weight:600;transition:color .2s;display:flex}.tab-item.active{color:var(--blue);font-weight:600}.tab-icon-wrap{border-radius:12px;justify-content:center;align-items:center;width:32px;height:28px;transition:transform .2s cubic-bezier(.22,1,.36,1),background .2s;display:flex}.tab-item.active .tab-icon-wrap{background:linear-gradient(#0a84ff29,#0a84ff14);transform:translateY(-1px);box-shadow:inset 0 0 0 .5px #0a84ff1f}.card{background:var(--card);border:.5px solid var(--card-border);box-shadow:var(--shadow-soft);border-radius:22px;padding:20px}.hero-card{background:linear-gradient(#fffffffc,#fafafcf0);border-color:#3c3c4314;position:relative;overflow:hidden;box-shadow:0 1px 1px #00000005,0 18px 44px #00000013}.ring-container{justify-content:center;align-items:center;width:200px;height:200px;margin:0 auto;display:flex;position:relative}.ring-svg{width:200px;height:200px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:#76768024;stroke-width:6px}.ring-fill{fill:none;stroke-width:6px;stroke-linecap:round;filter:drop-shadow(0 7px 12px #0a84ff29);transition:stroke-dashoffset .8s cubic-bezier(.22,1,.36,1)}@keyframes ringPulse{0%,to{filter:drop-shadow(0 7px 12px #0a84ff29)}50%{filter:drop-shadow(0 7px 22px #0a84ff4d)}}.ring-goal-reached{animation:.6s 2 ringPulse}.ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.status-badge{border:.5px solid #ffffff8c;border-radius:100px;align-items:center;gap:4px;padding:6px 15px;font-size:12px;font-weight:700;display:inline-flex;box-shadow:inset 0 0 0 .5px #ffffff73}.daily-stat-row{border-top:.5px solid var(--separator);grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;padding-top:16px;display:grid}.daily-stat-pill{text-align:center;background:#76768011;border:.5px solid #3c3c430f;border-radius:16px;min-width:0;padding:10px 12px}.macro-row{gap:16px;margin-top:20px;display:flex}.macro-item{text-align:center;flex:1}.macro-val{font-size:17px;font-weight:650}.macro-unit{color:var(--text-tertiary);font-size:11px;font-weight:400}.macro-label{color:var(--text-secondary);margin-top:2px;font-size:11px;font-weight:500}.macro-bar{background:var(--control-bg);border-radius:3px;height:3px;margin-top:7px;overflow:hidden}.macro-bar-fill{border-radius:2px;height:100%;transition:width .5s cubic-bezier(.22,1,.36,1)}.meal-group{background:var(--card);border:.5px solid var(--card-border);box-shadow:var(--shadow-soft);border-radius:22px;overflow:hidden}.meal-group-header{border-bottom:.5px solid var(--separator);background:linear-gradient(#ffffffe0,#f8f8fab8);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.meal-group-title{color:var(--text);align-items:center;gap:8px;font-size:17px;font-weight:650;display:flex}.meal-group-sub{color:var(--text-secondary);font-size:14px;font-weight:500}.record-row{border-bottom:.5px solid var(--separator);justify-content:space-between;align-items:center;padding:14px 20px;transition:background .15s;display:flex}.record-row:last-child{border-bottom:none}.record-row:active{background:var(--blue-light)}.record-info{flex-direction:column;gap:2px;display:flex}.record-name{color:var(--text);font-size:16px;font-weight:550}.record-meta{color:var(--text-secondary);font-size:13px;font-weight:400}.record-right{align-items:center;gap:12px;display:flex}.record-kcal{font-variant-numeric:tabular-nums;color:var(--text);font-size:17px;font-weight:650}.record-delete{color:var(--text-tertiary);padding:4px;font-size:13px;transition:color .15s}.record-delete:active{color:var(--red)}.empty-row{text-align:center;color:var(--text-secondary);padding:32px;font-size:14px;font-weight:400;line-height:1.6}.widget-row{gap:12px;display:flex}.widget{background:var(--card);text-align:center;border:.5px solid var(--card-border);box-shadow:var(--shadow-soft);border-radius:22px;flex:1;padding:20px;transition:all .15s}.widget:active{background:var(--blue-light);box-shadow:var(--shadow-press);transform:scale(.99)}.quick-add-row{gap:6px;display:flex}.quick-add-btn{text-align:center;background:#7676800f;border:.5px solid #3c3c430f;border-radius:16px;flex:1;padding:14px 4px;font-size:11px;font-weight:600;transition:all .2s}.quick-add-btn:active{background:var(--blue-light);transform:scale(.97)}.meal-tab-card{background:linear-gradient(#fffffffa,#fafafcf0)}.btn-primary{background:var(--blue);color:#fff;letter-spacing:0;box-sizing:border-box;border-radius:16px;width:100%;padding:15px;font-size:17px;font-weight:650;transition:all .15s;box-shadow:0 8px 18px #0a84ff38}.btn-primary:active{opacity:.94;transform:scale(.98);box-shadow:0 4px 10px #0a84ff2e}.btn-primary:disabled{background:var(--control-bg-strong);color:var(--text-tertiary);box-shadow:none}.sheet-overlay{z-index:200;overscroll-behavior:none;touch-action:none;background:#00000040;justify-content:center;align-items:flex-end;animation:.22s fadeIn;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.sheet-content{-webkit-backdrop-filter:blur(24px)saturate(180%);padding:24px 24px calc(env(safe-area-inset-bottom,0px) + 24px);border:.5px solid var(--card-border);background:#fffffff5;border-radius:24px 24px 0 0;width:100%;max-width:430px;max-height:80vh;animation:.32s cubic-bezier(.22,1,.36,1) slideUp;overflow-y:auto;box-shadow:0 -18px 44px #00000024}.sheet-content:before{content:"";background:#7676803d;border-radius:2px;width:36px;height:4px;margin:0 auto 16px;display:block}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pulseIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.week-strip{background:#76768014;border:.5px solid #3c3c430f;border-radius:18px;gap:4px;padding:4px;display:flex}.week-day{text-align:center;border:.5px solid #0000;border-radius:14px;flex:1;min-width:0;padding:9px 0 8px;font-size:11px;font-weight:600;transition:transform .2s,background .2s,box-shadow .2s,color .2s}.week-day:active{transform:scale(.97)}.week-day-num{margin-top:1px;font-size:17px;font-weight:650}.food-item{border-bottom:.5px solid var(--separator);justify-content:space-between;align-items:center;padding:15px 18px;transition:background .15s;display:flex}.food-item:last-child{border-bottom:none}.food-item:active{background:var(--blue-light)}.food-item-name{font-size:16px;font-weight:550}.food-item-cat{color:var(--text-secondary);margin-top:2px;font-size:12px}.search-bar{background:var(--control-bg);border:.5px solid #3c3c430f;border-radius:14px;align-items:center;gap:8px;padding:10px 16px;transition:all .2s;display:flex}.search-bar:focus-within{background:var(--card-solid);box-shadow:0 0 0 3px #0a84ff1f}.search-bar input{color:var(--text);background:0 0;flex:1;font-size:16px}.search-bar input::placeholder{color:var(--text-tertiary)}.meal-type-row{gap:6px;display:flex}.meal-type-btn{text-align:center;color:var(--text-secondary);background:#76768012;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:4px;padding:10px 4px;font-size:13px;font-weight:600;transition:all .2s;display:flex}.meal-type-btn.selected{background:var(--blue);color:#fff}.gram-input{letter-spacing:0;text-align:center;width:120px;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;padding:6px 8px;font-size:44px;font-weight:650}.gram-input-row{justify-content:center;align-items:center;gap:4px;display:flex}.gram-unit{color:var(--text-secondary);font-size:20px;font-weight:500}.gram-presets{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:12px;display:flex}.gram-preset{color:var(--text-secondary);background:#76768012;border-radius:100px;padding:7px 16px;font-size:13px;font-weight:600;transition:all .2s}.gram-preset.active{background:var(--blue);color:#fff}.calorie-preview{text-align:center;background:var(--blue-light);color:var(--blue);border-radius:12px;margin-top:12px;padding:12px;font-size:14px;font-weight:650}.segmented-control{background:var(--control-bg);border-radius:12px;padding:3px;display:flex}.segmented-option{text-align:center;color:var(--text-secondary);border-radius:9px;flex:1;padding:7px 12px;font-size:13px;font-weight:600;transition:all .2s}.segmented-option.active{background:var(--card-solid);color:var(--text);box-shadow:0 1px 3px #0000000a,0 0 0 .5px #0000000a}.toast-container{z-index:999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:60px;left:50%;transform:translate(-50%)}.toast{-webkit-backdrop-filter:blur(18px)saturate(160%);color:#fff;white-space:nowrap;background:#1c1c1ee6;border-radius:100px;padding:10px 20px;font-size:14px;font-weight:550;animation:.3s cubic-bezier(.22,1,.36,1) toastIn;box-shadow:0 10px 28px #0000002e}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.section-title{letter-spacing:0;color:var(--text);font-size:29px;font-weight:750}.hero-stat{text-align:center;padding:8px 0}.hero-value{letter-spacing:0;color:var(--text);font-size:56px;font-weight:750;line-height:1}.hero-unit{color:var(--text-secondary);font-size:22px;font-weight:500}.hero-label{color:var(--text-secondary);margin-top:4px;font-size:14px;font-weight:500}.nav-header{align-items:center;gap:10px;margin-bottom:2px;display:flex}.nav-title{letter-spacing:0;color:var(--text);font-size:27px;font-weight:750}.link-btn{color:var(--blue);font-size:15px;font-weight:600}.form-label{color:var(--text-secondary);letter-spacing:0;margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-input{width:100%;color:var(--text);background:#76768012;border:.5px solid #3c3c430f;border-radius:14px;padding:12px 14px;font-size:16px;font-weight:400;transition:all .2s}.form-input:focus{background:var(--card-solid);box-shadow:0 0 0 3px #0a84ff1f}.info-note{color:var(--text-secondary);text-align:center;padding:6px;font-size:13px}.copy-banner{background:var(--card);color:var(--blue);text-align:center;border:.5px solid var(--card-border);box-shadow:var(--shadow-soft);border-radius:18px;padding:14px 20px;font-size:14px;font-weight:600;transition:background .15s}.copy-banner:active{background:var(--blue-light)}.date-nav{justify-content:center;align-items:center;gap:8px;padding:4px 0;display:flex}.date-nav-title{color:var(--text);font-size:18px;font-weight:650}.yesterday-card{background:linear-gradient(#fffffffa,#fafafcf0)}.soft-pill{color:var(--text-secondary);background:#76768014;border:.5px solid #3c3c4314;border-radius:999px;transition:transform .15s,background .15s,box-shadow .15s}.soft-pill:active{background:#7676801f;transform:scale(.97)}.soft-pill.primary{color:#fff;background:linear-gradient(#0a84ff,#0071e3);border-color:#0071e340;box-shadow:0 6px 14px #0a84ff38}.soft-pill.primary:disabled{color:var(--text-tertiary);box-shadow:none;background:#76768014;border-color:#3c3c4314}.water-card{background:linear-gradient(#fffffffa,#f5fafff0)}.water-add-btn{color:var(--blue);background:linear-gradient(#0a84ff21,#0a84ff14);border:.5px solid #0a84ff2e;border-radius:999px;flex:1;padding:11px;font-size:14px;font-weight:700;transition:transform .15s,background .15s;box-shadow:inset 0 0 0 .5px #ffffff73}.water-add-btn:active{background:#0a84ff29;transform:scale(.97)}.weight-chart{align-items:flex-end;gap:4px;height:120px;padding:12px 0;display:flex}.weight-bar-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;display:flex}.weight-bar{background:var(--blue);border-radius:6px 6px 0 0;width:100%;max-width:24px;transition:height .4s}.weight-bar-date{color:var(--text-tertiary);margin-top:4px;font-size:10px;font-weight:500}.weight-bar-val{color:var(--text-secondary);font-size:10px;font-weight:500}.settings-section{background:var(--card);border:.5px solid var(--card-border);box-shadow:var(--shadow-soft);border-radius:22px;overflow:hidden}.settings-row{border-bottom:.5px solid var(--separator);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.settings-row:last-child{border-bottom:none}.settings-label{font-size:16px;font-weight:550}.settings-value{color:var(--text-secondary);font-size:16px}.slider-row{margin-bottom:14px}.slider-label{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}@keyframes numPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.num-pulse{animation:.35s cubic-bezier(.22,1,.36,1) numPulse}@keyframes listEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.list-enter{animation:.3s cubic-bezier(.22,1,.36,1) both listEnter}@keyframes listExit{to{opacity:0;transform:translateY(-4px)scale(.98)}}.list-exit{pointer-events:none;animation:.2s forwards listExit}.form-modal{-webkit-backdrop-filter:blur(24px)saturate(180%);border:.5px solid var(--card-border);background:#fffffff5;border-radius:24px;width:calc(100% - 40px);max-width:400px;max-height:80vh;padding:24px 20px;animation:.3s cubic-bezier(.22,1,.36,1) formModalIn;overflow-y:auto;box-shadow:0 -18px 44px #00000024}@keyframes formModalIn{0%{opacity:0;transform:translateY(24px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.sheet-handle{background:#7676803d;border-radius:2px;width:36px;height:4px;margin:0 auto 16px}.tab-page{animation:.2s cubic-bezier(.22,1,.36,1) tabIn}@keyframes tabIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}*,:before,:after{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;margin:0;padding:0}input,textarea{-webkit-user-select:text;user-select:text}:root{--blue:#0a84ff;--blue-light:#0a84ff1a;--red:#ff453a;--orange:#ff9f0a;--green:#30d158;--yellow:#ffd60a;--pink:#ff375f;--purple:#bf5af2;--bg:#f4f4f7;--page-top:#fbfbfd;--page-bottom:#efeff4;--page-bg:linear-gradient(180deg, var(--page-top) 0%, var(--bg) 42%, var(--page-bottom) 100%);--card:#fffffff5;--card-solid:#fff;--card-border:#3c3c431a;--control-bg:#7676801a;--control-bg-strong:#76768024;--separator:#3c3c431a;--text:#1d1d1f;--text-secondary:#636366;--text-tertiary:#98989d;--shadow-soft:0 1px 1px #00000006, 0 12px 34px #0001;--shadow-press:0 1px 1px #00000005, 0 6px 18px #0000000d;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text);background:var(--page-bg);font-synthesis-weight:none;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,PingFang SC,Helvetica Neue,sans-serif;font-size:16px;font-weight:400;line-height:1.35}html{background:var(--page-bg);background-color:var(--page-bottom);min-height:100%}html,body{overscroll-behavior-x:none;height:100%}body{background:var(--page-bg);background-color:var(--page-bottom);-webkit-overflow-scrolling:touch;max-width:430px;min-height:100dvh;margin:0 auto}#root{-webkit-overflow-scrolling:touch;background:var(--page-bg);background-color:var(--page-bottom);flex-direction:column;min-height:100dvh;display:flex;overflow-y:auto}input,button,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;outline:none}input{background:0 0;border:none;outline:none;min-width:0}input[type=date]{box-sizing:border-box;-webkit-appearance:none;appearance:none;width:100%;min-width:0;max-width:100%;display:block}a{color:var(--blue);text-decoration:none}
