:root{--ink:#17392f;--muted:#71817b;--green:#2f795e;--green-dark:#1e5945;--mint:#dff1e7;--cream:#f5f3ed;--card:#fff;--line:#e5e9e5;--orange:#e99a61;--blue:#6b9fa7;--yellow:#e5bd62;--shadow:0 16px 44px rgba(32,65,54,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:"DM Sans",sans-serif}.app-shell{min-height:100vh;display:grid;grid-template-columns:238px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:#fbfcf9;border-right:1px solid var(--line);padding:32px 22px;display:flex;flex-direction:column;z-index:20}.brand{font-family:Manrope,sans-serif;text-decoration:none;color:var(--ink);font-size:24px;font-weight:800;display:flex;align-items:center;gap:10px;margin:0 10px 42px}.brand>span:last-child span{color:var(--green)}.brand-mark{width:29px;height:29px;display:flex;align-items:end;gap:3px}.brand-mark i{display:block;width:7px;background:var(--green);border-radius:8px 8px 2px 2px;transform:rotate(24deg)}.brand-mark i:nth-child(1){height:14px}.brand-mark i:nth-child(2){height:23px}.brand-mark i:nth-child(3){height:18px}.sidebar nav{display:grid;gap:7px}.nav-item{display:flex;align-items:center;gap:13px;padding:13px 14px;border-radius:11px;color:#65756f;text-decoration:none;font-weight:600;font-size:14px}.nav-item:hover{background:#eff5f1}.nav-item.active{color:var(--green-dark);background:var(--mint)}.nav-item .icon{font-size:20px;width:20px;text-align:center}.sidebar-bottom{margin-top:auto}.mini-card{background:#edf6f0;border-radius:14px;padding:16px;margin-bottom:20px}.mini-card span{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--green)}.mini-card p{font-size:12px;line-height:1.5;margin:7px 0 0;color:#60736b}.profile{border:0;background:transparent;width:100%;display:flex;align-items:center;gap:10px;text-align:left;color:var(--ink);cursor:pointer}.profile>span:nth-child(2){display:grid;flex:1}.profile b{font-size:13px}.profile small{color:var(--muted)}.avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#d9a76e;color:white;font-size:11px;font-weight:700}
main{grid-column:2;min-width:0}.topbar{height:76px;background:rgba(251,252,249,.92);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;padding:0 5vw;gap:25px;position:sticky;top:0;z-index:10;backdrop-filter:blur(10px)}.today{font-size:13px;color:#64756f;display:flex;align-items:center;gap:9px}.pulse{width:7px;height:7px;background:#6aad70;border-radius:50%;box-shadow:0 0 0 4px #e2f0e4}.notification,.menu-btn{border:1px solid var(--line);background:white;width:38px;height:38px;border-radius:50%;position:relative;color:var(--ink);cursor:pointer}.notification span{position:absolute;width:6px;height:6px;background:#dc735f;border-radius:50%;top:6px;right:5px}.menu-btn{display:none}.view{display:none}.active-view{display:block}.view:not(.simple-view){max-width:1180px;margin:auto;padding:55px 5vw 80px}.eyebrow,.tag{font-size:10px;letter-spacing:.15em;font-weight:800;color:var(--green);margin:0 0 8px}.welcome-row{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:34px}.welcome-row h1,.scan-heading h1,.result-header h1,.simple-view h1{font-family:Manrope,sans-serif;font-size:32px;line-height:1.15;margin:0 0 8px;letter-spacing:-.035em}.welcome-row p,.scan-heading p,.result-header p,.simple-view>p{margin:0;color:var(--muted);font-size:14px}.primary,.outline,.text-btn,.back-btn{border:0;font-family:inherit;font-weight:700;cursor:pointer}.primary{background:var(--green);color:white;border-radius:10px;padding:13px 19px;box-shadow:0 6px 18px rgba(47,121,94,.2)}.primary:hover{background:var(--green-dark)}.outline{background:white;border:1px solid #d8dfda;color:var(--ink);border-radius:9px;padding:10px 16px}.outline:hover{border-color:var(--green);color:var(--green)}.text-btn,.back-btn{background:transparent;color:var(--green);padding:5px}.dashboard-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.calorie-card,.macro-card,.meal-row,.empty-meal,.upload-card,.ingredients-card,.goal-card,.history-item{background:var(--card);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.calorie-card,.macro-card{padding:25px}.card-heading{display:flex;justify-content:space-between;align-items:flex-start}.card-heading h2,.section-title h2{font-family:Manrope,sans-serif;font-size:18px;margin:0}.more{background:transparent;border:0;color:#96a19d;cursor:pointer}.subtle{font-size:11px;color:var(--muted)}.calorie-content{display:flex;align-items:center;justify-content:space-around;margin-top:12px}.ring-wrap{position:relative;width:180px;height:180px}.ring{width:180px;transform:rotate(-90deg)}.ring circle{fill:none;stroke:#e9eeea;stroke-width:13}.ring .progress{stroke:var(--green);stroke-linecap:round;stroke-dasharray:452;stroke-dashoffset:183}.ring-text{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.ring-text strong{font:800 28px Manrope}.ring-text span{font-size:11px;color:var(--muted)}.calorie-stats{display:grid;gap:16px}.calorie-stats>div{display:flex;align-items:center;gap:10px}.stat-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-weight:700}.target{background:#ebf1ec;color:var(--green)}.food{background:#fff0e6;color:#d27d43}.remain{background:#ebf3f4;color:#568993}.calorie-stats p{display:grid;font-size:11px;color:var(--muted);margin:0}.calorie-stats strong{font:700 15px Manrope;color:var(--ink)}.calorie-stats small{font:500 10px "DM Sans";color:var(--muted)}.macro-list{display:grid;gap:23px;margin-top:26px}.macro-label{display:flex;align-items:center;gap:10px;margin-bottom:9px}.macro-dot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:white;font-size:11px;font-weight:800}.protein{background:var(--orange)}.carbs{background:var(--blue)}.fat{background:var(--yellow)}.macro-label p{display:grid;margin:0;flex:1;font-size:13px;font-weight:700}.macro-label p span{color:var(--muted);font-size:10px;font-weight:400}.macro-label strong{font:700 13px Manrope}.macro-label small{font:500 10px "DM Sans";color:var(--muted)}.bar{height:6px;background:#eef0ed;border-radius:10px;overflow:hidden}.bar i{height:100%;display:block;border-radius:10px}.protein-bar{background:var(--orange)}.carbs-bar{background:var(--blue)}.fat-bar{background:var(--yellow)}.section-title{display:flex;justify-content:space-between;align-items:end;margin:36px 2px 16px}.section-title p{margin:4px 0 0;color:var(--muted);font-size:12px}.meals{display:grid;gap:12px}.meal-row{min-height:104px;padding:13px;display:grid;grid-template-columns:78px 1fr auto auto 25px;align-items:center;gap:18px}.meal-row img{width:78px;height:78px;object-fit:cover;border-radius:12px}.meal-time{font-size:9px;letter-spacing:.1em;color:var(--green);font-weight:800}.meal-main h3{font:700 15px Manrope;margin:5px 0}.meal-main p{font-size:11px;color:var(--muted);margin:0}.meal-macros{display:flex;gap:24px}.meal-macros span{display:grid;font-size:9px;color:var(--muted)}.meal-macros b{font:700 12px Manrope;color:var(--ink)}.meal-cal{border-left:1px solid var(--line);padding-left:24px;text-align:right;display:grid}.meal-cal strong{font:800 20px Manrope}.meal-cal span{font-size:10px;color:var(--muted)}.empty-meal{padding:17px 22px;display:flex;align-items:center;gap:15px;border-style:dashed;box-shadow:none;background:rgba(255,255,255,.45)}.empty-meal>span{width:43px;height:43px;display:grid;place-items:center;border-radius:11px;background:white}.empty-meal p{display:grid;flex:1;font-size:11px;color:var(--muted);margin:0}.empty-meal strong{font-size:13px;color:var(--ink);margin-bottom:3px}
.scan-view{max-width:900px!important}.back-btn{margin-bottom:28px;color:var(--muted)}.scan-heading{text-align:center;max-width:650px;margin:0 auto 30px}.scan-heading p:last-child{line-height:1.7}.stepper{max-width:410px;margin:0 auto 32px;display:flex;align-items:center;justify-content:center}.stepper b{height:1px;background:#d8dfda;flex:1}.step{display:flex;align-items:center;gap:7px;font-size:11px;color:#95a19c;font-weight:700}.step i{font-style:normal;width:25px;height:25px;display:grid;place-items:center;border:1px solid #d4dbd6;border-radius:50%}.step.active{color:var(--green)}.step.active i{background:var(--green);color:white;border-color:var(--green)}.upload-card{padding:58px 30px;text-align:center;border:1.5px dashed #b9cfc3;background:#fbfdfb;transition:.2s}.upload-card.drag{background:#e9f4ed;border-color:var(--green);transform:scale(1.01)}.upload-icon{margin:auto;width:70px;height:70px;display:grid;place-items:center;border-radius:50%;background:var(--mint);color:var(--green);font-size:31px;position:relative}.upload-icon span{position:absolute;right:5px;bottom:2px;background:var(--green);color:white;width:21px;height:21px;border-radius:50%;font-size:15px}.upload-card h2{font:700 20px Manrope;margin:20px 0 7px}.upload-card p{font-size:13px;color:var(--muted)}.upload-actions{display:flex;justify-content:center;gap:10px;margin:24px 0 16px}.upload-card small{color:#9aa5a1;font-size:10px}.tips{display:flex;justify-content:center;align-items:center;gap:23px;margin-top:24px;color:var(--muted);font-size:11px}.tips strong{color:var(--ink)}.analysis-stage{max-width:520px;margin:auto}.photo-frame{aspect-ratio:4/3;border-radius:20px;overflow:hidden;position:relative;box-shadow:var(--shadow)}.photo-frame img{width:100%;height:100%;object-fit:cover}.scan-line{position:absolute;left:0;right:0;height:2px;background:#88d4ae;box-shadow:0 0 20px 8px rgba(81,188,134,.35);animation:scan 2s infinite ease-in-out}@keyframes scan{0%,100%{top:10%}50%{top:88%}}.analysis-status{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:25px}.analysis-status strong{font-size:13px}.analysis-status small{color:var(--green);font-weight:700}.spinner{width:19px;height:19px;border:2px solid #d7e7dd;border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.result-view{max-width:1200px!important}.result-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.confidence{padding:9px 13px;background:#e6f4e9;color:#397351;border-radius:30px;font-size:11px;font-weight:700}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.result-photo{height:390px;border-radius:17px;overflow:hidden;position:relative;background:#ddd}.result-photo img{width:100%;height:100%;object-fit:cover}.food-marker{position:absolute;width:27px;height:27px;border-radius:50%;background:white;color:var(--green);display:grid;place-items:center;font-weight:800;font-size:11px;box-shadow:0 3px 12px #17392f55;border:2px solid var(--green)}.m1{top:41%;left:61%}.m2{top:62%;left:69%}.m3{top:69%;left:30%}.m4{top:29%;left:26%}.nutrition-summary{display:grid;grid-template-columns:1.4fr repeat(3,1fr);background:var(--ink);color:white;border-radius:15px;padding:18px;margin-top:14px}.nutrition-summary>div{display:grid;align-content:center;padding:0 15px;border-left:1px solid #ffffff20}.nutrition-summary>div:first-child{border-left:0}.nutrition-summary span{font-size:9px;color:#b7c9c2}.nutrition-summary b{font:700 15px Manrope}.nutrition-summary .total strong{font:800 25px Manrope}.nutrition-summary small{font-size:11px}.ingredients-card{padding:24px}.small{padding:8px 11px;font-size:11px}.ingredient{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}.ingredient:last-child{border:0}.ingredient-num{width:26px;height:26px;border-radius:50%;background:var(--mint);display:grid;place-items:center;color:var(--green);font-size:10px;font-weight:800}.ingredient-info{display:grid}.ingredient-info strong{font-size:13px}.ingredient-info span{font-size:10px;color:var(--muted);margin-top:3px}.portion{display:flex;align-items:center;gap:5px}.portion input{width:60px;border:1px solid var(--line);border-radius:8px;padding:8px;text-align:right;font:600 12px inherit;color:var(--ink)}.portion span{font-size:11px;color:var(--muted)}.ingredient-cal{text-align:right;width:55px;font-size:11px;color:var(--muted)}.ingredient-cal b{display:block;color:var(--ink);font-size:12px}.result-actions{display:flex;justify-content:space-between;align-items:center;margin-top:25px}.result-actions>div{display:flex;gap:10px}.simple-view{max-width:980px;margin:auto;padding:55px 5vw}.history-list{display:grid;gap:12px;margin-top:30px}.history-item{padding:18px;display:flex;align-items:center;gap:15px}.history-item img{width:62px;height:62px;object-fit:cover;border-radius:10px}.history-item div{flex:1}.history-item h3{margin:0 0 5px;font-size:14px}.history-item p{margin:0;color:var(--muted);font-size:11px}.history-item>strong{font:800 17px Manrope}.goal-card{margin-top:30px;padding:28px;max-width:500px}.goal-card label{display:block;font-weight:700;margin-bottom:12px}.goal-card>div{display:flex;align-items:center;gap:10px;margin-bottom:20px}.goal-card input{padding:14px;border:1px solid var(--line);border-radius:9px;font:700 18px Manrope;width:150px;color:var(--ink)}.toast{position:fixed;right:25px;bottom:25px;background:var(--ink);color:white;padding:13px 18px;border-radius:10px;font-size:12px;opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s;z-index:50}.toast.show{opacity:1;transform:none}
@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{transform:translateX(-100%);transition:.25s;box-shadow:15px 0 40px #17392f22}.sidebar.open{transform:none}main{grid-column:1}.menu-btn{display:block}.topbar{justify-content:space-between}.dashboard-grid,.result-grid{grid-template-columns:1fr}.meal-macros{display:none}.view:not(.simple-view),.simple-view{padding:35px 4vw 70px}}
@media(max-width:620px){.welcome-row,.result-header{display:block}.welcome-row .primary{margin-top:20px}.calorie-content{flex-direction:column}.calorie-stats{grid-template-columns:repeat(3,1fr);width:100%;margin-top:15px}.calorie-stats>div{display:grid;text-align:center}.stat-icon{margin:auto}.meal-row{grid-template-columns:64px 1fr auto}.meal-row img{width:64px;height:64px}.meal-cal{padding-left:10px}.meal-row>.more{display:none}.empty-meal{align-items:flex-start}.empty-meal .outline{display:none}.upload-card{padding:40px 15px}.upload-actions,.tips{flex-direction:column}.result-header .confidence{display:inline-block;margin-top:15px}.result-photo{height:310px}.nutrition-summary{grid-template-columns:1.3fr 1fr 1fr 1fr;padding:13px 5px}.nutrition-summary>div{padding:0 8px}.nutrition-summary .total strong{font-size:18px}.result-actions{align-items:flex-end}.result-actions>div{flex-direction:column}.today{font-size:11px}}
.auth-screen{position:fixed;inset:0;background:#f8f7f2;z-index:100;display:grid;grid-template-columns:minmax(380px,520px) 1fr}.auth-screen.hidden{display:none}.auth-panel{padding:7vh clamp(35px,7vw,95px);display:flex;flex-direction:column;justify-content:center}.auth-panel .brand{margin:0 0 auto}.auth-panel h1{font:800 34px Manrope;margin:0 0 9px;letter-spacing:-.04em}.auth-panel>p{color:var(--muted);font-size:13px}.auth-panel form{display:grid;margin-top:30px}.auth-panel label,.account-grid label{font-size:11px;font-weight:700;margin:13px 0 6px}.auth-panel input,.account-grid input{width:100%;border:1px solid var(--line);background:white;border-radius:9px;padding:13px;font:500 14px inherit;color:var(--ink);outline:none}.auth-panel input:focus,.account-grid input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--mint)}.auth-panel form .primary{margin-top:20px}.auth-switch{margin:18px auto 0}.auth-error{min-height:20px;color:#b44f42!important;text-align:center}.auth-visual{position:relative;margin:18px;border-radius:22px;overflow:hidden}.auth-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(12,48,36,.82))}.auth-visual img{width:100%;height:100%;object-fit:cover}.auth-visual div{position:absolute;z-index:2;left:7%;bottom:8%;color:white;display:grid;max-width:480px}.auth-visual span{font-size:11px;letter-spacing:.12em}.auth-visual strong{font:800 clamp(26px,4vw,48px) Manrope;line-height:1.12;margin-top:10px}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.account-grid .goal-card{max-width:none}.account-grid h2{font:700 18px Manrope;margin-top:0}.account-grid .goal-card>div{display:block;margin-bottom:5px}.logout-btn{margin-top:25px;color:#a94e42}.profile{border-radius:10px;padding:5px}.profile:hover{background:#edf3ef}
@media(max-width:760px){.auth-screen{grid-template-columns:1fr}.auth-visual{display:none}.auth-panel{padding:35px 8vw}.auth-panel .brand{margin-bottom:60px}.account-grid{grid-template-columns:1fr}}
.health-card,.weight-history{background:white;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);padding:26px;margin-top:28px}.health-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin:24px 0}.health-fields label{display:grid;gap:7px;font-size:11px;font-weight:700;color:var(--muted)}.health-fields label>span{display:flex;align-items:center;gap:7px}.health-fields input,.health-fields select{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);font:600 13px inherit}.health-fields select{height:41px}.calorie-plan{display:flex;align-items:center;gap:18px;background:var(--ink);color:white;border-radius:12px;padding:16px 20px;margin-bottom:18px}.calorie-plan>span{font-size:10px;letter-spacing:.08em;color:#b9cdc5}.calorie-plan strong{font:700 16px Manrope}.calorie-plan strong b{font-size:25px}.calorie-plan small{margin-left:auto;color:#b9cdc5}.health-note{font-size:10px;color:var(--muted);margin:13px 0 0}.weight-reminder{background:#fff4df;border:1px solid #edd5a7;border-radius:14px;padding:15px 18px;margin-top:22px;display:flex;align-items:center;gap:13px}.weight-reminder>span{font-size:24px}.weight-reminder p{display:grid;flex:1;margin:0;font-size:11px;color:var(--muted)}.weight-reminder strong{color:var(--ink);font-size:13px}.weight-history{margin-bottom:0}.weight-history #weightHistory{margin-top:18px}.weight-log{display:flex;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px}.weight-log:last-child{border:0}.weight-log span{flex:1;color:var(--muted)}.weight-log b{font:700 14px Manrope}.weight-log i{font-style:normal;margin-left:15px;font-size:11px}.trend-down{color:var(--green)}.trend-up{color:#bd6a43}
@media(max-width:760px){.health-fields{grid-template-columns:1fr 1fr}.calorie-plan{align-items:flex-start;flex-direction:column}.calorie-plan small{margin:0}.weight-reminder{align-items:flex-start}.weight-reminder .primary{padding:9px;font-size:10px}}
.ingredient{grid-template-columns:28px 1fr auto 24px}.ingredient-delete{width:24px;height:24px;border:0;border-radius:50%;background:#f4e9e6;color:#a65748;cursor:pointer;font-size:16px}.food-dialog{border:0;border-radius:18px;padding:0;width:min(560px,calc(100vw - 30px));color:var(--ink);box-shadow:0 30px 90px rgba(20,50,40,.28)}.food-dialog::backdrop{background:rgba(16,39,32,.55);backdrop-filter:blur(4px)}.food-dialog form{padding:27px}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.dialog-head h2{font:700 21px Manrope;margin:0}.dialog-close{border:0;background:#f0f2ef;color:var(--muted);width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer}.food-dialog label{display:grid;gap:6px;margin:13px 0;font-size:11px;font-weight:700;color:var(--muted)}.food-dialog input{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;font:600 13px inherit;color:var(--ink)}.food-dialog label>span{display:flex;align-items:center;gap:8px}.manual-nutrients{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.dialog-hint{font-size:10px;color:var(--muted);background:#f3f6f3;padding:10px;border-radius:8px}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}
@media(max-width:560px){.ingredient{grid-template-columns:25px 1fr 22px}.ingredient .portion{grid-column:2/4}.manual-nutrients{grid-template-columns:1fr}}
.lookup-status{display:flex;align-items:center;gap:9px;color:var(--green);font-size:11px;font-weight:700;padding:10px 0}.lookup-status[hidden]{display:none!important}.lookup-status .spinner{display:inline-block;flex:0 0 auto}.dialog-actions .primary:disabled{opacity:.55;cursor:wait}
.meal-methods{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.method-card{border:1px solid var(--line);background:white;border-radius:14px;padding:16px;display:flex;align-items:center;gap:13px;text-align:left;color:var(--ink);cursor:pointer;transition:.2s}.method-card:hover{border-color:var(--green);transform:translateY(-2px);box-shadow:var(--shadow)}.method-card>span{width:42px;height:42px;border-radius:11px;background:var(--mint);color:var(--green);display:grid;place-items:center;font-size:21px}.method-card>div{display:grid;flex:1}.method-card strong{font-size:13px}.method-card small{font-size:10px;color:var(--muted);margin-top:4px}.method-card>i{font-style:normal;color:var(--green)}.manual-meal-placeholder{display:none;position:absolute;inset:0;background:linear-gradient(145deg,#edf6f0,#dfece4);place-content:center;text-align:center;color:var(--green)}.manual-meal-placeholder span{font-size:45px}.manual-meal-placeholder strong,.manual-meal-placeholder small{display:block}.manual-meal-placeholder strong{font:700 17px Manrope;margin-top:8px}.manual-meal-placeholder small{color:var(--muted);margin-top:5px}.result-photo.manual>img,.result-photo.manual>.food-marker{display:none}.result-photo.manual .manual-meal-placeholder{display:grid}
@media(max-width:560px){.meal-methods{grid-template-columns:1fr}}
