:root{--bg:#070b14;--bg-2:#0b1120;--surface:#ffffff09;--surface-2:#ffffff0f;--surface-solid:#111a2c;--border:#ffffff13;--border-strong:#ffffff24;--text:#eef2f9;--text-dim:#9aa8bf;--text-faint:#667790;--kcal:#4ade80;--protein:#60a5fa;--carbs:#fbbf24;--fat:#c084fc;--fiber:#2dd4bf;--danger:#f87171;--warn:#fbbf24;--ok:#4ade80;--radius:18px;--radius-sm:11px;--radius-lg:26px;--shadow:0 18px 45px -22px #000000d9;--ring:0 0 0 3px #4ade8040;--nav-w:246px;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(760px 520px at 8% -8%,#4ade801c,#0000 62%),radial-gradient(700px 480px at 96% 4%,#60a5fa1a,#0000 60%),radial-gradient(900px 620px at 60% 110%,#c084fc14,#0000 62%);position:fixed;inset:0}h1,h2,h3,h4,p{margin:0}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}::selection{background:#4ade804d}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1c padding-box content-box;border:3px solid #0000;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#fff3 padding-box content-box}.app{z-index:1;grid-template-columns:var(--nav-w) 1fr;min-height:100vh;display:grid;position:relative}.nav{border-right:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#070b14a8;flex-direction:column;gap:26px;height:100vh;padding:26px 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;padding:0 8px;display:flex}.brand-mark{background:linear-gradient(140deg, var(--kcal), #16a34a);color:#04160c;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 8px 22px -8px #4ade80a6}.brand-name{letter-spacing:-.02em;font-size:18px;font-weight:700}.brand-sub{color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase;font-size:11px}.nav-links{flex-direction:column;gap:4px;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-dim);text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:11px;padding:11px 12px;font-size:14px;font-weight:550;transition:background .16s,color .16s,border-color .16s;display:flex}.nav-link:hover{background:var(--surface);color:var(--text)}.nav-link.is-active{color:var(--text);background:linear-gradient(100deg,#4ade8029,#4ade800a);border-color:#4ade8047}.nav-link.is-active svg{color:var(--kcal)}.nav-foot{flex-direction:column;gap:12px;margin-top:auto;display:flex}.nav-card{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);padding:14px;font-size:12px;line-height:1.5}.nav-card strong{color:var(--text);margin-bottom:3px;font-size:13px;display:block}.main{min-width:0;padding:30px 34px 90px}.page{flex-direction:column;gap:22px;max-width:1180px;margin:0 auto;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:18px;display:flex}.page-title{letter-spacing:-.025em;font-size:27px;font-weight:700}.page-sub{color:var(--text-dim);margin-top:5px;font-size:13.5px}.mobile-nav{display:none}.card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#ffffff0b,#ffffff04);padding:20px}.card-tight{padding:15px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.card-title{letter-spacing:-.01em;align-items:center;gap:8px;font-size:14.5px;font-weight:650;display:flex}.card-title svg{color:var(--text-faint)}.card-hint{color:var(--text-faint);font-size:12px}.grid{gap:18px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.btn{border:1px solid var(--border-strong);background:var(--surface-2);white-space:nowrap;border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:10px 15px;font-size:13.5px;font-weight:600;transition:transform .12s,background .16s,border-color .16s,opacity .16s;display:inline-flex}.btn:hover{background:#ffffff1a}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--ring);outline:none}.btn-primary{background:linear-gradient(140deg, var(--kcal), #22a854);color:#04160c;border-color:#0000;box-shadow:0 12px 26px -14px #4ade80cc}.btn-primary:hover{background:linear-gradient(140deg,#5ee793,#29b95d)}.btn-ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface);color:var(--text)}.btn-danger{color:var(--danger);background:#f8717114;border-color:#f871714d}.btn-danger:hover{background:#f8717126}.btn-sm{border-radius:9px;padding:7px 11px;font-size:12.5px}.btn-icon{border-radius:10px;padding:8px}.btn-block{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.field{flex-direction:column;gap:7px;display:flex}.label{color:var(--text-dim);font-size:12.5px;font-weight:600}.hint{color:var(--text-faint);font-size:11.5px}.input,.select{border:1px solid var(--border-strong);appearance:none;background:#0408108c;border-radius:11px;width:100%;padding:11px 13px;font-size:14px;transition:border-color .16s,box-shadow .16s}.select{background-image:linear-gradient(45deg, transparent 50%, var(--text-dim) 50%), linear-gradient(135deg, var(--text-dim) 50%, transparent 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:34px}.input:focus,.select:focus{box-shadow:var(--ring);border-color:#4ade8080;outline:none}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap svg{color:var(--text-faint);pointer-events:none;position:absolute;left:13px}.input-wrap .input{padding-left:38px}.input-suffix{color:var(--text-faint);pointer-events:none;font-size:12.5px;position:absolute;right:13px}.segmented{border:1px solid var(--border);background:#04081080;border-radius:13px;gap:3px;padding:4px;display:inline-flex}.segmented button{color:var(--text-dim);background:0 0;border:none;border-radius:9px;align-items:center;gap:7px;padding:8px 13px;font-size:13px;font-weight:600;transition:background .16s,color .16s;display:inline-flex}.segmented button:hover{color:var(--text)}.segmented button.is-active{background:var(--surface-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong)}.segmented .dot{border-radius:50%;flex:none;width:8px;height:8px}.option{border:1px solid var(--border);text-align:left;background:#ffffff05;border-radius:13px;align-items:flex-start;gap:11px;width:100%;padding:13px 14px;transition:border-color .16s,background .16s;display:flex}.option:hover{border-color:var(--border-strong);background:var(--surface)}.option.is-active{background:#4ade8017;border-color:#4ade8073}.option-title{font-size:13.5px;font-weight:620}.option-desc{color:var(--text-faint);margin-top:3px;font-size:12px;line-height:1.45}.option-icon{background:var(--surface-2);border-radius:10px;flex:none;place-items:center;width:34px;height:34px;display:grid}.option.is-active .option-icon{color:var(--kcal);background:#4ade802e}.ring-wrap{place-items:center;display:grid;position:relative}.ring-wrap svg{display:block;transform:rotate(-90deg)}.ring-track{stroke:#ffffff12}.ring-value{transition:stroke-dashoffset .7s cubic-bezier(.22,1,.36,1)}.ring-center{text-align:center;line-height:1.1;position:absolute}.ring-big{letter-spacing:-.03em;font-size:34px;font-weight:720}.ring-label{text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint);margin-top:6px;font-size:11px}.macro-row{flex-direction:column;gap:7px;display:flex}.macro-top{justify-content:space-between;align-items:baseline;font-size:12.5px;display:flex}.macro-name{color:var(--text-dim);align-items:center;gap:7px;font-weight:600;display:flex}.macro-dot{border-radius:3px;flex:none;width:8px;height:8px}.macro-nums{font-variant-numeric:tabular-nums;color:var(--text-dim)}.macro-nums strong{color:var(--text);font-weight:650}.bar{background:#ffffff14;border-radius:99px;height:7px;overflow:hidden}.bar>span{border-radius:99px;height:100%;transition:width .6s cubic-bezier(.22,1,.36,1);display:block}.bar-over>span{filter:brightness(.75)saturate(1.4)}.stat{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);flex-direction:column;gap:5px;padding:14px;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);align-items:center;gap:6px;font-size:11.5px;display:flex}.stat-value{letter-spacing:-.025em;font-variant-numeric:tabular-nums;font-size:21px;font-weight:700}.stat-value small{color:var(--text-dim);letter-spacing:0;font-size:12.5px;font-weight:550}.stat-note{color:var(--text-faint);font-size:11.5px}.badge{letter-spacing:.02em;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);border-radius:99px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:640;display:inline-flex}.badge-ok{color:#86e5ab;background:#4ade801f;border-color:#4ade8059}.badge-warn{color:#fcd34d;background:#fbbf241f;border-color:#fbbf2459}.badge-danger{color:#fca5a5;background:#f871711f;border-color:#f8717159}.badge-info{color:#93c5fd;background:#60a5fa1f;border-color:#60a5fa59}.cols{align-items:flex-end;gap:8px;height:130px;display:flex}.col{background:0 0;border:none;border-radius:10px;flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:7px;height:100%;padding:0;display:flex}.col-track{background:#ffffff0d;border-radius:8px 8px 5px 5px;flex:1;align-items:flex-end;width:100%;display:flex;position:relative;overflow:hidden}.col-fill{background:linear-gradient(180deg, var(--kcal), #4ade8059);border-radius:8px 8px 5px 5px;width:100%;min-height:2px;transition:height .6s cubic-bezier(.22,1,.36,1)}.col-fill.is-over{background:linear-gradient(180deg, var(--warn), #fbbf244d)}.col-fill.is-empty{background:#ffffff17}.col-target{background:#fff6;border-top:1px dashed #ffffff59;height:1px;position:absolute;left:0;right:0}.col-label{color:var(--text-faint);font-size:10.5px;font-weight:600}.col.is-today .col-label{color:var(--kcal)}.col:hover .col-track{background:#ffffff14}.chart-svg{width:100%;display:block;overflow:visible}.rows{flex-direction:column;display:flex}.row{border-bottom:1px solid var(--border);align-items:center;gap:13px;padding:12px 4px;display:flex}.row:last-child{border-bottom:none}.row-grow{flex:1;min-width:0}.row-title{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;overflow:hidden}.row-sub{color:var(--text-faint);margin-top:2px;font-size:11.5px}.row-right{flex:none;align-items:center;gap:12px;display:flex}.macro-inline{color:var(--text-dim);font-variant-numeric:tabular-nums;gap:10px;font-size:11.5px;display:flex}.macro-inline b{font-weight:650}.kcal-tag{font-variant-numeric:tabular-nums;text-align:right;min-width:62px;font-size:13px;font-weight:670}.thumb{background:var(--surface-2);border-radius:10px;flex:none;place-items:center;width:34px;height:34px;font-size:15px;display:grid}.empty{text-align:center;color:var(--text-faint);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:26px 16px;font-size:13px}.meal-block{border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(#ffffff0b,#ffffff03);overflow:hidden}.meal-head{border-bottom:1px solid var(--border);background:#ffffff06;justify-content:space-between;align-items:center;gap:14px;padding:15px 18px;display:flex}.meal-head-left{align-items:center;gap:11px;display:flex}.meal-icon{width:32px;height:32px;color:var(--text-dim);background:#ffffff0f;border-radius:9px;flex:none;place-items:center;display:grid}.meal-name{font-size:14px;font-weight:650}.meal-meta{color:var(--text-faint);margin-top:2px;font-size:11.5px}.meal-body{padding:6px 18px 12px}.meal-foot{border-top:1px solid var(--border);background:#0000002e;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:11px 18px;display:flex}.overlay{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#03060cb8;justify-content:center;align-items:center;padding:20px;animation:.16s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:linear-gradient(#131d31,#0c1322);flex-direction:column;width:min(620px,100%);max-height:min(84vh,760px);animation:.2s cubic-bezier(.22,1,.36,1) pop;display:flex;overflow:hidden;box-shadow:0 40px 90px -30px #000000e6}@keyframes pop{0%{opacity:0;transform:translateY(14px)scale(.985)}}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:14px;padding:18px 20px;display:flex}.modal-title{letter-spacing:-.015em;font-size:16px;font-weight:680}.modal-body{flex-direction:column;gap:16px;padding:18px 20px;display:flex;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);background:#0003;justify-content:flex-end;gap:10px;padding:15px 20px;display:flex}.food-list{flex-direction:column;gap:5px;max-height:340px;margin:0 -4px;padding:0 4px;display:flex;overflow-y:auto}.food-item{text-align:left;background:#ffffff08;border:1px solid #0000;border-radius:12px;align-items:center;gap:12px;padding:11px 12px;transition:background .14s,border-color .14s;display:flex}.food-item:hover{border-color:var(--border);background:#ffffff12}.food-item.is-active{background:#4ade801a;border-color:#4ade8073}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{border:1px solid var(--border-strong);color:var(--text-dim);background:0 0;border-radius:99px;padding:6px 11px;font-size:12px;font-weight:580;transition:all .14s}.chip:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface)}.chip.is-active{color:#a7f3c4;background:#4ade8021;border-color:#4ade8073}.quick-add{flex-wrap:wrap;gap:7px;display:flex}.stepper{border:1px solid var(--border-strong);background:#04081080;border-radius:11px;align-items:center;gap:0;display:inline-flex;overflow:hidden}.stepper button{color:var(--text-dim);background:0 0;border:none;padding:10px 13px;font-weight:700;transition:background .14s,color .14s}.stepper button:hover{background:var(--surface-2);color:var(--text)}.stepper input{text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:none;width:68px;padding:10px 0;font-size:14px;font-weight:620}.stepper input:focus{outline:none}.onboard{z-index:1;place-items:center;min-height:100vh;padding:32px 20px;display:grid;position:relative}.onboard-card{border:1px solid var(--border);border-radius:var(--radius-lg);width:min(780px,100%);box-shadow:var(--shadow);background:linear-gradient(#ffffff0d,#ffffff04);padding:34px 36px 30px}.onboard-head{text-align:center;margin-bottom:26px}.onboard-title{letter-spacing:-.03em;margin-top:14px;font-size:30px;font-weight:730}.onboard-sub{color:var(--text-dim);max-width:520px;margin-top:9px;margin-left:auto;margin-right:auto;font-size:14.5px;line-height:1.55}.steps{gap:6px;margin-bottom:26px;display:flex}.step-pip{background:#ffffff1a;border-radius:99px;flex:1;height:3px;transition:background .3s}.step-pip.is-done{background:var(--kcal)}.step-body{flex-direction:column;gap:18px;min-height:260px;display:flex}.onboard-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin-top:26px;padding-top:20px;display:flex}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.split-bar{background:#ffffff12;border-radius:99px;height:9px;display:flex;overflow:hidden}.split-bar>span{height:100%;transition:width .6s cubic-bezier(.22,1,.36,1)}.legend{color:var(--text-dim);flex-wrap:wrap;gap:14px;font-size:11.5px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:3px;width:8px;height:8px;display:block}.water-row{flex-wrap:wrap;gap:6px;display:flex}.glass{border:1.5px solid var(--border-strong);background:0 0;border-radius:6px 6px 9px 9px;width:26px;height:34px;padding:0;transition:border-color .16s;position:relative;overflow:hidden}.glass:hover{border-color:#60a5fa99}.glass.is-filled{border-color:#60a5fab3}.glass.is-filled:after{content:"";background:linear-gradient(#60a5fa8c,#3b82f6d9);height:100%;animation:.25s fill;position:absolute;inset:auto 0 0}@keyframes fill{0%{transform:translateY(100%)}}.day-strip{gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.day-pill{border:1px solid var(--border);background:#ffffff06;border-radius:12px;flex-direction:column;flex:none;align-items:center;gap:3px;min-width:62px;padding:9px 12px;transition:all .15s;display:flex}.day-pill:hover{border-color:var(--border-strong);background:var(--surface)}.day-pill.is-active{background:#4ade801c;border-color:#4ade8073}.day-pill .dp-dow{text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);font-size:10.5px;font-weight:650}.day-pill.is-active .dp-dow{color:#a7f3c4}.day-pill .dp-num{font-size:15px;font-weight:680}.shopping{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;display:grid}.shop-group{flex-direction:column;gap:8px;display:flex}.shop-group h4{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-size:11.5px;font-weight:650}.check{cursor:pointer;color:var(--text-dim);align-items:center;gap:10px;padding:5px 0;font-size:13px;display:flex}.check input{appearance:none;border:1.5px solid var(--border-strong);background:#0000004d;border-radius:5px;flex:none;place-items:center;width:17px;height:17px;transition:all .14s;display:grid}.check input:checked{background:var(--kcal);border-color:var(--kcal)}.check input:checked:after{content:"";border:2px solid #04160c;border-width:0 2px 2px 0;width:4px;height:8px;transform:rotate(45deg)translate(-1px,-1px)}.check input:checked+span{opacity:.5;text-decoration:line-through}.check span{flex:1}.check em{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:11.5px;font-style:normal}.fit-pill{border-radius:99px;align-items:center;gap:6px;padding:5px 10px;font-size:11.5px;font-weight:640;display:inline-flex}.toast{z-index:90;border:1px solid var(--border-strong);box-shadow:var(--shadow);background:#16223a;border-radius:13px;align-items:center;gap:9px;padding:12px 18px;font-size:13.5px;font-weight:580;animation:.2s pop;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.tabs{border-bottom:1px solid var(--border);gap:4px;padding-bottom:2px;display:flex}.tab{color:var(--text-dim);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-3px;padding:9px 13px;font-size:13.5px;font-weight:600;transition:color .15s,border-color .15s}.tab:hover{color:var(--text)}.tab.is-active{color:var(--text);border-bottom-color:var(--kcal)}.divider{background:var(--border);height:1px;margin:4px 0}.scroll-x{overflow-x:auto}.nowrap{white-space:nowrap}.stack{flex-direction:column;gap:14px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.inline{align-items:center;gap:10px;display:flex}.between{justify-content:space-between;align-items:center;gap:12px;display:flex}.wrap{flex-wrap:wrap}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.tiny{font-size:11.5px}.center{text-align:center}.tabular{font-variant-numeric:tabular-nums}@media (width<=1080px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-grid{grid-template-columns:minmax(0,1fr)}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=880px){.app{grid-template-columns:minmax(0,1fr)}.nav{display:none}.main{padding:20px 16px 108px}.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}.page-title{font-size:23px}.onboard-card{padding:24px 20px}.onboard-title{font-size:24px}.mobile-nav{z-index:50;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:8px 6px calc(8px + env(safe-area-inset-bottom));background:#080c16f0;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.mobile-nav button{color:var(--text-faint);background:0 0;border:none;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:7px 2px;font-size:10px;font-weight:600;display:flex}.mobile-nav button.is-active{color:var(--kcal);background:#4ade8017}.modal{border-radius:20px;max-height:90vh}}@media (width<=560px){.grid-4,.summary-grid{grid-template-columns:minmax(0,1fr)}.macro-inline{display:none}.card{padding:16px}}@media print{body:before,.nav,.mobile-nav,.no-print{display:none!important}.app{grid-template-columns:1fr}.card{break-inside:avoid}}
